基本思路:
DLNA客户端可以接收并播放以DLNA协议推送的流媒体
而B站可以将视频通过DLNA协议推送
所以我们给哪吒D1配置DLNA客户端 就可以实现在同一网络下B站投屏了
gmrender-resurrect是一个接收DLNA内容并用gstreamer播放的组件
我们用gmrender-resurrect就可以配置出一个DLNA客户端
我们已经实现了使用gstreamer1.0调用openmax硬解H264
B站通过DLNA投屏时会发送flv封装的H264流 类似于直播
也就是说 我们可以用gstreamer硬解B站投屏视频
但是在实践中发现gstreamer硬解B站投屏会出现闪屏现象 并且不能自动硬件缩放
为了避免这些问题 我查找了gmrender-resurrect和tplayer相关资料 将gmrender-resurrect进行了魔改 将原来gstreamer播放视频改成了tina自带的王牌播放器tplayer来播放视频 于是gmrender-resurrect便成了tprender
因为package里没有相关库 所以要手动交叉编译出tprender和DLNA的底层upnp库 附件里提供了编译完成的
演示环境搭建
用PhoenixSuit.exe烧录flash镜像
附件提供了配置好的flash镜像
进入d1系统 先配个wifi 我的是wifi是qwer 密码是1231232008 把wifi名和密码换成你的
wifi_connect_ap_test qwer 1231232008
注意要看一下ifconfig wlan0有没ip4地址 如果没有用下面命令获取一下
udhcpc -i wlan0
第一次运行wifi_connect_ap_test 会自动获取ip4地址 但是下次开机会自动连接wifi 但不会自动获取ip4地址 所以要检查一下
附件中提供了tprender_app 里面是编译好的tprender和upnp库
用adb把tprender_app发送到D1
adb push d:tprender_app /root/
进入目录
cd /root/tprender_app
把里面的库复制到系统路径
cp libs/* /usr/lib/
添加tprender执行权限
chmod +x tprender
开启DLNA客户端
./tprender -f "D1"
接下来可以用B站投屏了
操作提示
B站放视频时右上角有个TV图标 点它 再点投屏设备 就行了
B站更新到新版本才有投屏分辨率选择
演示视频
动画
1080P
验证平台
硬件 哪吒D1开发板
系统 tina1.01 带0730补丁
配置过程
因为tplayer是tina自带的 而tprender 和upnp在package要交叉编译
所以不需要配置sdk
tprender编译
附件中提供了魔改好的tprender源码 使用cmake构建工程 只需在源码目录的CMakeLists.txt里修改编译器、链接库、头文件的路径 然后再执行构建(注意 有个点)
cmake .
再执行编译
make
即可以编译出tprender
upnp编译
附件中提供了upnp源码 按照里面README.md编译出libupnp.so和libixml.so库即可
最近编辑记录 逸俊晨晖 (2021-08-27 16:04:28)
离线
离线