我需要编写一个(便携式)程序,除其他外,它可以播放视频文件。 Qt5中的QMediaPlayer似乎是显而易见的选择,但显然它只使用安装在执行机器上的编解码器。 我需要的所有视频播放器都可以在所有(窗口)机器上播放至少一种视频格式而无需安装任何东西,并将当前状态传达给主程序(以毫秒为单位的播放时间,播放/暂停)。
具体问题:有人可以给我一些提示吗?如何在我的程序中实现视频编解码器,以便QMediaPlayer可以在所有计算机上可靠地播放视频?或者(但不太喜欢):如何(轻松)将另一个视频播放器实现到能够完成任务的程序中?
我已经尝试过使用libVLC和一两个其他选项,但它到目前为止从未奏效过,它似乎使我的程序比以前更加复杂。
答案 0 :(得分:2)
QMediaPlayer可以播放平台媒体服务支持的任何格式。您应该为要成功播放的视频类型安装正确的编解码器。所以你必须在Linux上安装GStreamer编解码器,或者如果你在Windows上,你应该安装一些KLite编解码器。
考虑使用像QtAV这样的库可能会很好。它适用于大多数平台,无需安装额外的编解码器和插件。
QtAV使用FFmpeg并具有一些有趣的功能,例如1个播放器的多个渲染器,感兴趣的区域(视频裁剪),自定义滤镜,......它也适用于Qt4和Qt5。
答案 1 :(得分:0)
QMediaPlayer使用您使用的任何机器的底层视频框架,这意味着无法使用此类可移植性地编写播放器。在我看来,您唯一的解决方案是切换到使用本机编解码器的FFMpeg回放库。