基本思路:
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)
离线
离线
离线
效果挺好的,流畅丝滑,大佬有没有时间尝试移植一下lazycast和RPiPlay
https://github.com/homeworkc/lazycast
https://github.com/FD-/RPiPlay
离线
感谢大佬分享。
但是实测遇到问题,手机能够找到,但是投屏总是出现问题。
命令行也没有啥错误提示。
离线