【问题标题】:Setting up MJPEG compressor设置 MJPEG 压缩器
【发布时间】:2011-11-05 17:14:45
【问题描述】:

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

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

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

  3. 我应该使用其他压缩过滤器吗?哪个最好?

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

【问题讨论】:

  • 好问题!我也会寻找答案

标签: filter directshow video-encoding renderer mjpeg


【解决方案1】:

您可能想看看 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 代码编写上述管道。它有很好的绑定。

关于编程看我的另一篇文章

Playing RTSP with python-gstreamer

对于网络相关的内容,您可能想查看 RTSP(基于 UDP 的 RTP),请查看我对帖子的回答

Streaming using GStreamer

【讨论】:

    猜你喜欢
    • 2012-02-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-02
    • 2021-12-17
    • 2012-09-19
    • 2010-11-22
    • 2012-05-28
    相关资源
    最近更新 更多