1

我制作了一个控制台程序,可以预览来自网络摄像头的视频,并通过 MJPEG 压缩过滤器将其捕获为 .avi 格式。我的架构:

WebCam
->IBaseFilter(Video capture filter)
 ->IBaseFilter(MJPEG compression filter)
  ------------->ICaptureGraphBuilder2::RenderStream
                ->.avi
  1. 关于如何通过 IAMVideoCompression 接口设置 MJPEG 压缩参数以获得最小的视频大小和至少平均质量的任何建议?现在我将 putQuality 方法参数设置为 0.1,这对我有很大帮助;我的视频文件大小约为 15mb/分钟。

  2. 我无法使用任何视频播放器渲染这个捕获的 .avi 文件(我尝试过 Windows Media Player、WMP Classic、VLC)。我需要先制作解压器才能观看此视频吗?

  3. 我应该使用另一个压缩过滤器吗?哪一个是最好的?

我的目标是编写一个视频流服务器(如 Skype)。您认为 15mb/分钟的大小适合将视频数据包传输到网络吗?我将使用 UDP(RTP) 套接字来传输媒体流。

4

1 回答 1

0

你可能想看看 Gstreamer。

解码 MJPEG 流的示例管道是

gst-launch -v souphttpsrc location="http://[ip]:[port]/[dir]/xxx.cgi" do-timestamp=true is_live=true ! multipartdemux ! jpegdec ! ffmpegcolorspace ! autovideosink

改为将其保存到文件中

gst-launch -v souphttpsrc location="http://[ip]:[port]/[dir]/xxx.cgi" do-timestamp=true is_live=true ! multipartdemux ! jpegdec ! ffmpegcolorspace ! filesink location=test.avi

从网络摄像头获取视频并保存(在 Ubuntu Linux 上测试)

gst-launch v4l2src ! jpegdec ! filesink location=test.avi

jpegdec 是一个用于解码 jpeg 格式的 bin,其中包含用于质量的“idct-method”

您可以用等效的 C/C++、Java 或 Python 代码编写上述管道。它有很好的绑定。

编程看我的另一篇文章

使用 python-gstreamer 播放 RTSP

对于网络相关的东西,你可能想看看 RTSP(基于 UDP 的 RTP)看看我对帖子的回答这里

使用 GStreamer 进行流式传输

于 2012-03-29T16:02:07.363 回答