c++ - Qt5 QMediaPlayer 使用程序自带的编解码器

标签 c++ qt qt5 libvlc qmediaplayer

我需要编写一个(可移植)程序,除其他外,它能够播放视频文件。 Qt5 中的 QMediaPlayer 似乎是显而易见的选择,但显然它只使用安装在执行机器上的编解码器。 对于视频播放器,我所需要的只是能够在所有(Windows)机器上播放至少一种视频格式而无需安装任何东西,并将当前状态传达给主程序(当前时间以毫秒为单位,播放/暂停)。

具体问题:有人可以给我一些提示吗?如何在我的程序中实现视频编解码器,以便 QMediaPlayer 可以在所有机器上可靠地播放视频?或者(但不太受欢迎):如何(轻松地)将另一个视频播放器实现到能够执行任务的程序中?

我已经尝试使用 libVLC 和一两个其他选项,但到目前为止它从未奏效,而且它似乎使我的程序变得比它必须的更复杂。

最佳答案

QMediaPlayer 可以播放平台媒体服务支持的任何格式。您应该为要成功播放的视频类型安装正确的编解码器。所以你必须在 Linux 上安装 GStreamer 编解码器,或者如果你在 Windows 上,你应该安装一些 KLite 编解码器。

考虑使用像 QtAV 这样的库可能是件好事.它适用于大多数平台,不需要安装额外的编解码器和插件。

QtAV 使用 FFmpeg 并具有一些有趣的功能,例如 1 个播放器的多个渲染器、感兴趣区域(视频裁剪)、自定义过滤器,......它也适用于 Qt4 和 Qt5。

关于c++ - Qt5 QMediaPlayer 使用程序自带的编解码器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27988564/

相关文章:

android - 使用 native 代码进入会导致 Android Studio 中出现垃圾

c++ - 是否可以使用 std::byte 作为枚举类的基础类型?

c++ - 无法在 ubuntu 上的 netbeans 中进入 C++ 程序像素城市

c++ - Qt 每当按下时进入 QTextEdit

c++ - 重载 'qHash(const double&)' 的调用不明确

c++ - 将具有特定模式匹配的所有声明推送到 vector 中的优雅方法?

qt - "Design"按钮在 Qt Creator for QML Project 中变灰

单击按钮时 QTableView 不会更新已编辑的单元格

C++,Qt : Variable named "slots" in included external library

android - 为什么我的 QGestureRecognizer 收不到触摸事件?