基于AvaloniUI创建MediaPlayer, 根据系统平台集成相应的媒体播放器
此方案是考虑不同系统使用不同的媒体播放器,包括第三方的播放器, 如 Android
的 ExoPlayer
或者IjkPlayer
等。。
个人认为可以考虑下面的方案,有兴趣的小伙伴可以一起交流下, 即:
- Window ->
NativeControlHost
+Overlap Window
- Linux ->
MPV with OpenGL
- Android ->
MPV with OpenGL
orExoPlayer
orIjkPlayer
- MacOS -> 目前未测试不了解, 理论上支持
MPV
- IOS -> 目前未测试不了解, 理论上支持
MPV
注: 此种方案可以实现不同的系统上采用最适合的播放器,并且定制性很高,但是也是最复杂的方式,需要考虑以下几点:
- 不同系统平台的编解码器不尽相同 (不同播放源统一, 需要考虑备用播放方式)
- 相同系统平台在某些设备上不支持某些播放器特性(如硬件加速等。。) 需要为播放器支持降级
- 嵌入第三方播放器或者
NativeControlHost
, 在上层的控件无法使用原生AvaloniaUI
控件的情况 - 不同系统平台之间可能并不一定需要采用
Overlap Window
方案
3. MPV 播放器
MPV是一个基于MIT
协议的免费,开源,跨平台的媒体播放器,并支持GPU视频编解码,高质量的视频输出,支持基于OpenGL
,Valkan
,D3D11
的视频输出等。。
使用基于.Net包装的Mpv播放器库,并支持运行Window
, Linux
, Android
, MacOS
(未测试,理论支持), Ios
(未测试,理论支持), 原生支持在播放器之上叠加控件(基于喂ImageSource
方式)
在这里测试了 LibMpv
播放库, 在Sample
中,已经加入了Avalonia
的例子。并支持OpenGL
,NativeControlHost
,Software
三种方式渲染,用于兼容不同系统平台. 基于应用上的考虑,我个人觉得在MPV之上再进行封装,当程序跑在Window
基于NativeControlHost
来实现更好的效果。
注: Ubuntu下测试需要安装 sudo apt install libmpv-dev libmpv2
.
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!