基于.Net 的 AvaloniUI 多媒体播放器方案汇总

这篇具有很好参考价值的文章主要介绍了基于.Net 的 AvaloniUI 多媒体播放器方案汇总。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

基于.Net 的 AvaloniUI 多媒体播放器方案汇总

摘要

随着国产化的推进,相信.Net的桌面端的小伙伴的可能已经有感受到了。 为了让.Net的桌面框架能够跨桌面平台,首选的就是Avalona-UI。

为了让AvaloniaUI能够跨多个平台播放视频,这里测试主要播放视频形式是使用RTSP。 所以,在这篇博文中,我打算对目前的Avalonia-UI框架上播放RTSP的方式,对现有的开源解决方案进行汇总。

如果文章有哪些问题,希望大佬们能不吝指出,或者共同交流下。

本篇文章将随时更新,欢迎有兴趣的小伙伴可以随手订阅或者转载,并注明出处。

正文

1. LibSharpLVC (播放RTSP,当然首选的是VLC播放器。)

LibSharpVLC.Avalona 官方支持在播放Window,Linux,MacOS(未测试), 但是我目前仅仅在Window和Linux进行测试过了。

使用LibSharpVLC有几个优缺点:

  • 优点

    • 通用,使用广泛(坑基本都被人踩完了)
    • 跨平台 (Window,Linux,MacOS)
    • 支持广泛视频编解码
  • 缺点

    • 仅能通过句柄播放, 在LibSharpVLC中,基于Avalonia封装的VideoView基于NativeControlHost的,这里会产生与WPF一样的空域问题。
    • 通过Overlap Window方式解决Air issue后,在Linux环境表现不一致。
      1. 当拖动超过屏幕范围后Overlayer窗口无法跟随拖动到屏幕范围外。
        基于.Net 的 AvaloniUI 多媒体播放器方案汇总

        通过调试Avalonia源代码,发现似乎是LinuxX11的通病,似乎是可以使用override_redirect来重写一些默认X11的操作,但是这也影响了窗体的其他渲染问题(如:需要自行实现某些渲染效果,未测试)。

      2. Overlayer窗口会掉到Owner之后。 (注: 原来使用11.0.2测试,更新AvaloniaUI >= 11.0.4 即可解决)

      3. 在移动端无法使用此方案。

2. 基于AvaloniUI创建MediaPlayer, 根据系统平台集成相应的媒体播放器

此方案是考虑不同系统使用不同的媒体播放器,包括第三方的播放器, 如 AndroidExoPlayer或者IjkPlayer等。。

个人认为可以考虑下面的方案,有兴趣的小伙伴可以一起交流下, 即:

  • Window -> NativeControlHost+Overlap Window
  • Linux -> MPV with OpenGL
  • Android -> MPV with OpenGL or ExoPlayer or IjkPlayer
  • 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.

以下分别为运行在Linux Window Android 下的显示效果

基于.Net 的 AvaloniUI 多媒体播放器方案汇总

参考文献

Video Player in Avalonia Discussions

MediaPlayerUI

LibMpv(基于.Net的MPV封装

Mpv.Net-Lib (基于.Net的MPV封装)

Awesome MPV

Mpv Manual

Mpv Official Website

Mpv

XLib Tutorial

X11 XMoveWindow

===

知识共享许可协议 本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。欢迎转载、使用、重新发布,但务必保留文章署名 0xJins包含此链接),不得用于商业目的,基于本文修改后的作品务必以相同的许可发布。如有任何疑问,请 与我联系 。文章来源地址https://www.toymoban.com/news/detail-711595.html

到了这里,关于基于.Net 的 AvaloniUI 多媒体播放器方案汇总的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • [任务书+论文+PPT+源码]基于Android与多媒体的英文学习APP的设计与实现

    第1页 毕业设计(论文)题目:基于ANDROID与多媒体技术的英文学习APP的设计与实现设计(论文)要求及原始数据(资料):1.综述国内外移动互联现状及前景;2.了解ANDROID系统,理解ANDROID应用程序的开发方法和步骤;3.分析该ANDROID应用程序的模块结构和主要算法;4.熟悉

    2024年01月22日
    浏览(91)
  • 软考:中级软件设计师:多媒体基础,音频,图像,颜色,多媒体技术的种类,图像音频视频的容量计算,常见的多媒体标准

    提示:系列被面试官问的问题,我自己当时不会,所以下来自己复盘一下,认真学习和总结,以应对未来更多的可能性 关于互联网大厂的笔试面试,都是需要细心准备的 (1)自己的科研经历, 科研内容 ,学习的相关领域知识,要熟悉熟透了 (2)自己的实习经历,做了 什

    2024年02月09日
    浏览(57)
  • 参会记录|全国多媒体取证暨第二届多媒体智能安全学术研讨会(MAS‘2023)

    前言 :2023年4月8日上午,我与实验室的诸位伙伴们共聚浙江杭州西子湖畔的六通宾馆,参加了为期一天半的全国多媒体取证暨第二届多媒体智能安全学术研讨会(MAS’2023)。本届学术研讨会由浙江省自然科学基金委员会资助,杭州电子科技大学承办。来自国内多媒体取证与

    2024年02月08日
    浏览(58)
  • 多媒体音频焦点浅析

    多个音源可以同时向同一个输出流进行播放音频,如果没有音频焦点管控,就会出现多个音源同时播放的现象,给用户带来不便;而Android为了避免多个音源同时播放,就引入了音频焦点的概念,所有音频应用都统一按照音频焦点的规定执行,就可以避免该现象发生。 当应用

    2024年02月13日
    浏览(47)
  • 多媒体API

    许小墨のBlog —— 菜鸡博客直通车 系列文章完整版,配图更多,CSDN博文图片需要手动上传,因此文章配图较少,看不懂的可以去菜鸡博客参考一下配图! 前端系列文章——传送门 后端系列文章——传送门 video 只接受几种视屏格式:ogg、mp4、avi 基本使用: controls属性,出现

    2024年02月02日
    浏览(58)
  • AIGC生成多媒体流程

    给定 生成多个故事标题 多个故事标题进行反向推导出 再生成标题 直到达到一个相似度 多个标题固定总结合并为一个标题 根据生成故事多个章节标题 多个章节标题反向生成一个标题 对比前后两个标题相似度 不断重复直到达到一定相似度 第一个章

    2024年02月12日
    浏览(52)
  • 多媒体开发之cgo

         go语言作为近十年来优秀的现代开发语言的代表,由于继承了c语言的简洁和很多现代语言的表达方式,在广泛的应用场景中得到众多爱好者的喜爱,如何将go和c、c++进行联合开发,拓展整个开发生态,不用重复造轮子,掌握cgo可以让你得心应手的在c和go之间传递信息,

    2024年02月16日
    浏览(49)
  • 计算机网络——多媒体网络

    通俗易懂,风趣幽默,忍不住分享一下给大家, 跳转到网站 我的计算机网络专栏,是自己在计算机网络学习过程中的学习笔记与心得,在参考相关教材,网络搜素的前提下,结合自己过去一段时间笔记整理,而推出的该专栏,整体架构是根据计算机网络 自顶向下 方法而整理

    2024年02月20日
    浏览(38)
  • 鸿蒙实战多媒体运用:【音频组件】

    音频组件用于实现音频相关的功能,包括音频播放,录制,音量管理和设备管理。 图 1  音频组件架构图 基本概念 采样 采样是指将连续时域上的模拟信号按照一定的时间间隔采样,获取到离散时域上离散信号的过程。 采样率 采样率为每秒从连续信号中提取并组成离散信号

    2024年03月10日
    浏览(84)
  • Java UI组件和多媒体

    目录 1、使用单选按钮 2、选择几何图形  3、交通信号灯  4、演示TextField的属性 5、演示TextArea的属性 6、选择一种字体  7、演示 Label 的属性  8、使 用ComboBox 和 ListView  9、使 用 ScrollBar 和 Slider    10、模拟:一个转动的风扇 编写一个 GUI 程序如图所示 。 可以使用按钮将消

    2024年02月09日
    浏览(48)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包