C# Windows Form中LibVLCSharp在Raspbian无法播放视频求助
问题:C# WinForm项目中LibVLCSharp在Raspbian下无法播放视频
我在C# Windows Form项目中使用VLC播放器,视频播放功能在Windows系统正常,但在Raspbian系统下无法工作。
相关代码
LibVLCSharp.Shared.LibVLC libVLC = new LibVLC(); Media media = new Media(libVLC, new Uri(this.localVideoPath + _url)); videoView1.MediaPlayer = new LibVLCSharp.Shared.MediaPlayer(media); videoView1.MediaPlayer.Mute = true; bool result = videoView1.MediaPlayer.Play(new Media(libVLC, this.localVideoPath + _url, FromType.FromPath));//.FromLocation)); LoggerManagerUtility.Instance.Log(NLog.LogLevel.Info, this, "Play result " + result.ToString());
错误信息
[02786420] main video output error: video output creation failed [7037e590] main decoder error: failed to create video output [h264 @ 0x703e7880] get_buffer() failed [h264 @ 0x703e7880] thread_get_buffer() failed [h264 @ 0x703e7880] decode_slice_header error [h264 @ 0x703e7880] no frame!
直接用Raspbian系统自带的VLC播放器可以正常播放该视频,请问该如何解决?
解决方案
以下是针对该问题的具体解决步骤:
指定树莓派专属视频输出模块
Raspbian环境下,LibVLCSharp默认的视频输出模块可能不兼容,初始化LibVLC时手动指定硬件加速的输出模块:// 使用mmal硬件加速模块,适配树莓派 var libVLC = new LibVLC("--vout=mmal", "--no-xlib");若为桌面版Raspbian,可尝试替换为
--vout=x11。补全VLC系统依赖库
确保Raspbian上安装了完整的VLC依赖组件,执行以下命令:sudo apt-get update sudo apt-get install vlc libvlc-dev libvlccore-dev修正代码中的资源重复创建问题
原代码中重复创建Media实例可能导致资源冲突,简化代码逻辑:var libVLC = new LibVLC("--vout=mmal"); var mediaPath = Path.Combine(this.localVideoPath, _url); var media = new Media(libVLC, mediaPath, FromType.FromPath); var mediaPlayer = new MediaPlayer(media); videoView1.MediaPlayer = mediaPlayer; mediaPlayer.Mute = true; bool result = mediaPlayer.Play(); LoggerManagerUtility.Instance.Log(NLog.LogLevel.Info, this, "Play result " + result.ToString());确保程序拥有硬件访问权限
树莓派的硬件视频输出需要对应权限,将运行程序的用户加入video组:sudo usermod -aG video your_username修改后需重新登录系统生效。
内容的提问来源于stack exchange,提问作者user15536099
相关产品推荐
相关产品推荐

