- 软件介绍
- 软件截图
PC接收手机投影软件,是一款在电脑端接收手机投影并且可以选择下载投影资源的软件,此软件将会调用N_m3u8DL-CLI和FFmpeg运行,两个exe必须放在和此软件相同目录!
开发介绍
先说需求部分,最近我遇到一个个人需求,手机上买jd会员的时候,送了个xxx的视频软件会员,但是手机看片屏幕太小了,于是想投影到机顶盒上去,可是郁闷的是,
机顶盒距离我家wifi太远,信号不好。于是想如何把这个可以在手机上看的视频搞到电脑上看,或者可以下载下来。
于是乎开始分析,首先手机和机顶盒之间是采用DLNA进行通信,我只要找到在PC上支持DLNA并且可以作为Media Renderer的视频软件就好了,可是找了几个比如mediaplayer(这个最傻,不会缓冲,每次都只能看几秒停几秒),
KODI(这个其实挺不错的,但是都是只能在电脑上看,不能下载下来看)。其实仔细想想,可以在PC上播放了,为啥不能顺便加个下载功能呢?
手闲的痒,就顺便写个软件同时支持一下这两个功能,结果没想到一写就写的头大,想吐出来。。。。。不过总算是有个样子了。
其实也就是只要手机能播放的,并且支持投屏的,都应该用这个软件给拉下来,偷偷说一句,我用这个软件下载速度极快,基本上带宽可以跑满。。。
已知问题
1:开始DLNA按钮太丑,不说明基本上没人知道在哪儿,点击后没有任何提示。
2:下载路径无法配置
3:有时候会遇到无法连接的情况,这种情况我抓包看过,服务器返回的地址访问就是502错误,就算是加上refer , user agent也不行。 这个时候其他的投屏软件也无法接受手机端的投屏。所以优先级不是很高。
4:基本上遇到无法连接情况,大家把手机播放器和这个软件都关掉,过几分钟再试试看。
5:播放后的URL会被播放器记住,但是一段时候后,URL会失效,这时候再点是没用的。
软件介绍
此软件将会调用N_m3u8DL-CLI 和FFmpeg运行,其中这两个exe必须放在和此软件相同目录。(反正就是压缩包直接解压就好了,找个英文路径解压安全点。)
软件绿色,无需安装,无广告插件,本来可以加52pojie首发的,实在是太累了,下个版本(如果有人要的话)再加吧。
软件压缩后20MB,主要是avcodec-58.dll 这个货是ffmpeg的库,里面是各种解码器,我自己的程序并不大。大家如果不放心,可以到ffmpeg网站上下载对应的dll替换。
主要代码逻辑如下:
1:在PC端开启该软件,伪装成Media Renderer,往239.255.255.250发ddsp包,注册成为AVTransport。
2:在手机端启动xxx客户端,反正不局限于某客户端,只要支持TV投影即可。 点击投影按钮,进行DLNA查询。
3:发现AVTransport设备,手机端作为controller发协议查询设备能力,并且在SetAVTransportURI 命令中,发送m3u8信息。 也就是说其实不管在网页端如何加密,最后这里都会发送一个可用的m3u8的地址过来。
4:该软件得到m3u8信息后,请用户选择是播放还是下载。
5:播放采用的是ffmpeg解码器进行解码播放。
6:下载m3u8部分采用的是论坛里面【开源M3U8下载器】N_m3u8DL-CLI @我是你老大, (感谢共享这么好用的软件)因为这个解码器可以传递参数,还有界面,省的再写了。呵呵。
其实总体思路并不难,这里记录一下遇到的坑:
1:为了保证Upnp的兼容性,基本上市面上的开源库都找了一遍,python的,java的,C++的,最后选用的是Platinum的开源库,接口比较丰富,而且兼容性较好,实际测试基本上开启后马上就可以被手机端识别到设备。
2:FFMpeg的集成,遇到很多很多兼容性的问题,.net framework 和.net core的冲突,sdl效率问题等等,真是郁闷至极,最后没办法,现学的C#,用的是Unosquare.FFME,这个库的好处是定制灵活,对外暴露的接口较多,集成方便,后续可以扩展。
3:m3u8下载部分,N_m3u8DL-CLI还是挺好用的,主要是可以有命令行参数,再次感谢一下。
使用说明
基本上运行界面如下图:
正常可以用于本地播放,如果想启用DLNA,也就是接受投屏功能,请点击下图红色部分按钮,点击后应该啥反应都没有。就是啥反应都没有,你不放心可以再点一遍,其实后台起了个线程去注册AVTransport了。
然后开启您的手机,进入投屏界面,应该可以搜索到Platinum Media Renderer这个投屏设备,如果没有,检查PC防火墙等设置。(一般来说,能看到其他投影设备就应该能看到这个,除非防火墙挡住了)
点击投屏,正常情况下应该会出现这个界面。说明软件捕获到m3u8地址,这时需要尽快选择到底是播放还是下载,两者选一个。我用的是阻塞线程,如果超过3分钟以上,URL有可能失效。
补充一下,C#.net 在win10下测试过,其他软件环境比如XP,WIn8没有测试过,编译选项是X86,应该可用,但不能保证。
PC接收手机投影软件开发介绍
先说需求部分,最近我遇到一个个人需求,手机上买jd会员的时候,送了个xxx的视频软件会员,但是手机看片屏幕太小了,于是想投影到机顶盒上去,可是郁闷的是,
机顶盒距离我家wifi太远,信号不好。于是想如何把这个可以在手机上看的视频搞到电脑上看,或者可以下载下来。
于是乎开始分析,首先手机和机顶盒之间是采用DLNA进行通信,我只要找到在PC上支持DLNA并且可以作为Media Renderer的视频软件就好了,可是找了几个比如mediaplayer(这个最傻,不会缓冲,每次都只能看几秒停几秒),
KODI(这个其实挺不错的,但是都是只能在电脑上看,不能下载下来看)。其实仔细想想,可以在PC上播放了,为啥不能顺便加个下载功能呢?
手闲的痒,就顺便写个软件同时支持一下这两个功能,结果没想到一写就写的头大,想吐出来。。。。。不过总算是有个样子了。
其实也就是只要手机能播放的,并且支持投屏的,都应该用这个软件给拉下来,偷偷说一句,我用这个软件下载速度极快,基本上带宽可以跑满。。。
PC接收手机投影软件已知问题
1:开始DLNA按钮太丑,不说明基本上没人知道在哪儿,点击后没有任何提示。
2:下载路径无法配置
3:有时候会遇到无法连接的情况,这种情况我抓包看过,服务器返回的地址访问就是502错误,就算是加上refer , user agent也不行。 这个时候其他的投屏软件也无法接受手机端的投屏。所以优先级不是很高。
4:基本上遇到无法连接情况,大家把手机播放器和这个软件都关掉,过几分钟再试试看。
5:播放后的URL会被播放器记住,但是一段时候后,URL会失效,这时候再点是没用的。
PC接收手机投影软件软件介绍
此软件将会调用N_m3u8DL-CLI 和FFmpeg运行,其中这两个exe必须放在和此软件相同目录。(反正就是压缩包直接解压就好了,找个英文路径解压安全点。)
软件绿色,无需安装,无广告插件,本来可以加52pojie首发的,实在是太累了,下个版本(如果有人要的话)再加吧。
软件压缩后20MB,主要是avcodec-58.dll 这个货是ffmpeg的库,里面是各种解码器,我自己的程序并不大。大家如果不放心,可以到ffmpeg网站上下载对应的dll替换。
主要代码逻辑如下:
1:在PC端开启该软件,伪装成Media Renderer,往239.255.255.250发ddsp包,注册成为AVTransport。
2:在手机端启动xxx客户端,反正不局限于某客户端,只要支持TV投影即可。 点击投影按钮,进行DLNA查询。
3:发现AVTransport设备,手机端作为controller发协议查询设备能力,并且在SetAVTransportURI 命令中,发送m3u8信息。 也就是说其实不管在网页端如何加密,最后这里都会发送一个可用的m3u8的地址过来。
4:该软件得到m3u8信息后,请用户选择是播放还是下载。
5:播放采用的是ffmpeg解码器进行解码播放。
6:下载m3u8部分采用的是论坛里面【开源M3U8下载器】N_m3u8DL-CLI @我是你老大, (感谢共享这么好用的软件)因为这个解码器可以传递参数,还有界面,省的再写了。呵呵。
其实总体思路并不难,这里记录一下遇到的坑:
1:为了保证Upnp的兼容性,基本上市面上的开源库都找了一遍,python的,java的,C++的,最后选用的是Platinum的开源库,接口比较丰富,而且兼容性较好,实际测试基本上开启后马上就可以被手机端识别到设备。
2:FFMpeg的集成,遇到很多很多兼容性的问题,.net framework 和.net core的冲突,sdl效率问题等等,真是郁闷至极,最后没办法,现学的C#,用的是Unosquare.FFME,这个库的好处是定制灵活,对外暴露的接口较多,集成方便,后续可以扩展。
3:m3u8下载部分,N_m3u8DL-CLI还是挺好用的,主要是可以有命令行参数,再次感谢一下。
PC接收手机投影软件使用说明
基本上运行界面如下图:
正常可以用于本地播放,如果想启用DLNA,也就是接受投屏功能,请点击下图红色部分按钮,点击后应该啥反应都没有。就是啥反应都没有,你不放心可以再点一遍,其实后台起了个线程去注册AVTransport了。
然后开启您的手机,进入投屏界面,应该可以搜索到Platinum Media Renderer这个投屏设备,如果没有,检查PC防火墙等设置。(一般来说,能看到其他投影设备就应该能看到这个,除非防火墙挡住了)
点击投屏,正常情况下应该会出现这个界面。说明软件捕获到m3u8地址,这时需要尽快选择到底是播放还是下载,两者选一个。我用的是阻塞线程,如果超过3分钟以上,URL有可能失效。
补充一下,C#.net 在win10下测试过,其他软件环境比如XP,WIn8没有测试过,编译选项是X86,应该可用,但不能保证。