Board logo

标题: 自制 有WIN10效果的播放器基本完工 [打印本页]

作者: xczxczxcz    时间: 2021-7-3 11:05     标题: 自制 有WIN10效果的播放器基本完工

一开始,用WPF mediaelement 写了个简单的测试,发现这无意能播放的少,资源占用不是一般的大,1080P:GPU60%以上,拖一下进度条就卡死。所以很快就把所有基于此的代码全删了。

二 又想vlc开源控件引用很多,所以接着用 VLC 写了控件,主窗口就写了个框框,其余都用 USERCONTROL 写的,写了半月,所有自用功能都写完了,结果:1080P:GPU 40%,拖动进度条 时占用 80%以上,心想我就不拖动,先暂停再拖动,可当我播放虎牙的 FLV推流时,发现我居然忘了 VLC 的万年老毛病(不能播放FLV推流)。结果是看不了虎牙,然后试了 POTPLAYER KMPLAYER FFMPEG(自带播放器) MPH等,手机端的NPLAYER KODI也没一个能放的(除了虎牙自己的APP),结果都是一堆垃圾东西,没一个能放的。这时我才想起,我PC端的常用播放器 SMPLAYER 是目前PC端秒杀一切的存在,它能放虎牙FLV流,黑鸟播放器也能放,但黑鸟用是迅雷那个垃圾内核,动不动崩溃,点用资源也是相当高,容易卡死。看了下 SMPLAYER用是的MPV内核,如是乎。

三 把MPV的核心DLL下载本地,查看源码,API接口用法,开始了第三次封装。直接把 VLC封装的代码 复制过来,并做些修改,开始测试,此时全是类似于XP的界面,丑。然后形如修改界面,重新写界面,采用WIN10的玻璃磨砂效果。现在所有的资源都能播放。爽。

四 一些心得,VLC控件丰富,可以随意布局,你不用想太多,直接引用,占用资源高,不支持FLV推流播放。界面流畅度较低。
                  MPV控件播放丰富,基乎通杀所有,性能强悍,进度条可以来回拖动不卡顿,占用资源相当低,缺点API相当少,事件少,很多要自己写,因为这个我用了相当多的时间来封闭某些功能,如播放列表的单集各种事件引用。所以代码量很大。而且布局不灵活,
                 MPV是基于Winform来的WindosFormsHost布局,这样垃圾而老旧的控件大大的限制了布局灵活性,也许MPV内核作者太喜欢这样的东西(可以让播放界面一直在顶层)。在Host项层加元素需要在原始界面上添加子窗口之类的方法才能在顶层再显示内容。但使用 玻璃界面时因要去掉界面原始丑陋的窗体样式,这样顶层再添加窗口就变得无效了。等有时间有耐心时再琢磨如何去掉这个host控件。

五 一些播放对比, 因都基于MPV,所以和SMPLAYER资源占用不相上下,效率也相当。但播放网络资源我的比SML要快2~3秒左右(无论是先播还是后播),估计是SML内置的缓冲时间太长。和POT对比也差不多,WIN10中我的电脑需要关掉POT的所有硬件解码,否则POT卡死。关掉后反而不占什么资源。WIN7时要开硬件解码才好用。现在除一些小功能未添加外,彻底把POT踢掉了。从此电脑上就一个自制播放器。下次若装机则要把WIN10自带的视频播放器也要踢掉。那个太垃圾了。

效果图
链接: https://pan.baidu.com/s/1WcztAG52CoOx4nXlLT1Atw 提取码: efwq
作者: llluffy酱    时间: 2021-7-10 15:08

好的,太厉害
作者: 523066680    时间: 2021-7-11 00:21

厉害
作者: xczxczxcz    时间: 2021-7-23 15:34

这几天添加了几个小功能:
1 添加了 A<->B区间循环播放功能。
2 添加了 直播时显示分辨率、码率、贞率功能,默认隐藏。
3 添加了 自动根据系统版本调用 86/64的mpv的解码包。
4 添加了 读取和保存应用窗口位置和大小的功能。
5 添加了配置文件,把喜欢修改的变量写在配置文件里。可以读取配置文件,也可直接调用内置参数。
6 把JavaScript控件 由 MSScriptControl 升级为 ClearScript


修复:
1 虎牙直播为重播时 不应该解密,而是要直接播放。
2 虎牙录制时要解密才能录制。不解密可看不可录。
3 不同xaml传递引用不同步的问题
4 一些事件的相互触发问题,如A事件触发后引起B事件,然后B事件又引发A事件。
5 修复可以播放解析地址一,也可播放解析地址二。

还有一些忘了的修复。
mpv 内核 可以轻松播放 4K ,可以快速拖动进度条,在偶的电脑中 potplayer vlc 自带视频应用是不敢想象的。
昨天发现一个视频 用pot播放时有声音,但画面静止。改用mpv后,此问题消失,音画同步。

现在的资源占用比 smplayer 还要低。(可能的原因:偶是高度集成,smplayer是调用mpv播放器,偶的只有一个进程;smplayer有两个进程,一个壳进程,一个是mpv进程。所以我的占用更低,效率更好)

CPU: I7-9700 , 显卡: R9-270X,内存: 海盗船 ddr4-3200 x16G
默认设置播放 1080P 10MB/s码率(直播里的10M蓝光) 60贞/s : cpu <=5%;  gpu <=8%;
作者: cmd1152    时间: 2021-8-7 20:56

厉害呀!不过你的CPU打成GPU了




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2