【发布时间】: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 声子:
- 是的。播放所有需要的格式并正确显示它们。
- 没有。
- 没有。未实现(返回空图像)。
- 没有。
QtFFmpegWrapper:
- 部分。不去隔行 DVD VOB。不在 DAR 中显示 DVD VOB。
- 没有。
- 是的。
- 部分。 MKV (h264) 损坏。
Qt VLC:
- 是的。播放所有需要的格式并正确显示它们。
- 是的。还没有尝试过是否有效。
- 部分。只能到磁盘。 edit: QPixmap::grabWindow(player->videoWidget()->winId()) 有效。
- 没有。仅以毫秒为单位。
现在我正在查看 QVision,它似乎具有除裁剪之外的所有这些功能。也许实施裁剪并不是那么困难。但我想知道是否还有其他我应该研究的库?或者也许我错过了一些东西,而这些库之一是可能的。谢谢。
【问题讨论】:
-
压缩视频中不存在帧。当您分配帧速率时,从毫秒偏移计算将非常容易。
-
@CapelliC "压缩视频中不存在帧" 如果该方法使用帧间压缩,而不仅仅是@987654321 @
-
'逐帧搜索',尤其是 prevFrame() 不适用于所有视频序列。对于所有帧内帧(I 帧)来说很好,但对于大多数库中的 P 或 B 帧(帧的依赖关系)来说很难或不可能。 (除非你自己做缓存。但是如果缓存太大会出现内存大小问题)