2012-11-24 31 views
5

我正在寻找一个视频库的Qt 4(C++/Windows)上有:Qt的C++视频库

1)基本视频的播放功能

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

2)裁剪

它应该有一些基本的功能,以除去黑条(用户提供的参数)。

3)快照

它应具有的功能拍摄快照在存储器中。

4)一帧一帧求

它应该有一些基本的功能做帧接一帧求,例如prevFrame(),nextFrame(),jumpTo(frame)和getNumFrames()。


我曾尝试以下,从我能找到他们所支持的功能:

Qt的声子:

  1. 是。播放所有需要的格式并正确显示。
  2. 编号
  3. 编号未执行(返回空图像)。

QtFFmpegWrapper:

  1. 部分。不会对DVD VOB进行隔行扫描。不在DAR中显示DVD VOB。
  2. 是的。
  3. 部分。损坏为MKV(h264)。

Qt的VLC:

  1. 是。播放所有需要的格式并正确显示。
  2. 是的。如果它能正常工作,还没有尝试过。
  3. 部分。仅限于磁盘。 编辑: QPixmap :: grabWindow(player-> videoWidget() - > winId())的作品。
  4. 不,只有毫秒。

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

+2

一个帧在压缩视频中并不存在。当您指定帧速率时,以毫秒为单位的偏移量将非常容易。 – CapelliC

+0

@CapelliC *“一帧实际上并不存在于压缩视频中”* **如果该方法使用帧间压缩,而不是[帧内](http://en.wikipedia.org/wiki /帧内) – HostileFork

+0

'逐帧搜索'特别是prevFrame()对所有的视频序列都是不可能的。对于所有内部帧(I帧)来说都很好,但对于大多数库中的P或B帧(帧的依赖性)来说很难或不可能。 (除非你自己让你自己缓存,但如果缓存太大,会有内存大小问题) – Eric

回答

0

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

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