dlna+upna的协议体系实际是将A端的媒体URL发送至B端,B端经此URL进行视屏或者音频播放。因此我们可以通过投屏的方法来接收此URL,方法如下:
1、在树莓派(本人使用Pi4)上,git clone gmediareder代码:https://github.com/hzeller/gmrender-resurrect.git
2、修改一下patch:
diff --git a/src/upnp_transport.c b/src/upnp_transport.c index 1f7a039..96607f0 100644 --- a/src/upnp_transport.c +++ b/src/upnp_transport.c @@ -495,6 +495,7 @@ static void replace_current_uri_and_meta(const char *uri, const char *meta){ const char *tracks = (uri != NULL && strlen(uri) > 0) ? "1" : "0"; replace_var(TRANSPORT_VAR_CUR_TRACK, tracks); replace_var(TRANSPORT_VAR_CUR_TRACK_URI, uri); + printf("====uri: %s ", uri); replace_var(TRANSPORT_VAR_CUR_TRACK_META, meta); }
3、编译、运行gmediareder。
4、从移动端发起投屏,投屏时选择gmediareder。在第3步如果通过gmediareder的参数指定了特定的--friendly-name,此处就选择对应的名称。
5、树莓派端的gmediareder将打印接收到的url:
此url一般是m3u8格式描述文件,依次记录了多个剪辑片段的url。如果需要下载此视频,需要先将m3u8文件下载后,再下载其中的所有片段,最后使用ffmpeg将诸文件合并为一个文件。
某些视频软件也会直接使用资源本身的url发射投屏,这种情况可直接wget获取此资源。