【问题标题】:Qt C++ video librariesQt C++ 视频库
【发布时间】:2012-11-24 08:30:10
【问题描述】:

我正在寻找一个适用于 Qt 4 (C++/Windows) 的视频库,它具有:

1) 基本视频播放功能

它应该可以播放所有常见的视频格式,例如 DVD VOB 和 MP4/MKV/AVI(h264、xvid、divx)。它还应该能够自动对视频进行去隔行扫描并以显示纵横比显示。

2) 裁剪

它应该具有一些基本功能来删除黑条(用户提供的参数)。

3) 快照

它应该具有在内存中拍摄快照的功能。

4) 逐帧搜索

它应该具有一些基本功能来进行逐帧搜索,例如prevFrame()、nextFrame()、jumpTo(frame) 和 getNumFrames()。


我尝试了以下方法,并从中找到了它们支持的功能:

Qt 声子:

  1. 是的。播放所有需要的格式并正确显示它们。
  2. 没有。
  3. 没有。未实现(返回空图像)。
  4. 没有。

QtFFmpegWrapper:

  1. 部分。不去隔行 DVD VOB。不在 DAR 中显示 DVD VOB。
  2. 没有。
  3. 是的。
  4. 部分。 MKV (h264) 损坏。

Qt VLC:

  1. 是的。播放所有需要的格式并正确显示它们。
  2. 是的。还没有尝试过是否有效。
  3. 部分。只能到磁盘。 edit: QPixmap::grabWindow(player->videoWidget()->winId()) 有效。
  4. 没有。仅以毫秒为单位。

现在我正在查看 QVision,它似乎具有除裁剪之外的所有这些功能。也许实施裁剪并不是那么困难。但我想知道是否还有其他我应该研究的库?或者也许我错过了一些东西,而这些库之一是可能的。谢谢。

【问题讨论】:

  • 压缩视频中不存在帧。当分配帧速率时,从毫秒偏移计算将非常容易。
  • @CapelliC "压缩视频中不存在帧" 如果该方法使用帧间压缩,而不仅仅是@987654321 @
  • '逐帧搜索',尤其是 prevFrame() 不适用于所有视频序列。对于所有帧内帧(I 帧)来说很好,但对于大多数库中的 P 或 B 帧(帧的依赖关系)来说很难或不可能。 (除非你自己做缓存。但是如果缓存太大会出现内存大小问题)

标签: c++ qt


【解决方案1】:

您可以考虑来自 ViscomSoft 的Movie Player Gold SDK ActiveX 3.6。我没有看到他们的网站上提到了裁剪,但内存快照和逐帧步骤是受支持的功能。

我在 Windows Qt 软件中使用了他们的 VideoEdit 和 Screen2Video SDK,效果很好。

【讨论】:

    猜你喜欢
    • 2013-04-25
    • 1970-01-01
    • 2016-12-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-16
    • 2012-02-25
    相关资源
    最近更新 更多