Filter 设置MJPEG压缩机

Filter 设置MJPEG压缩机,filter,directshow,video-encoding,renderer,mjpeg,Filter,Directshow,Video Encoding,Renderer,Mjpeg,我制作了一个控制台程序,可以从网络摄像头预览视频,并通过MJPEG压缩过滤器将其捕获为.avi格式。我的模式: WebCam ->IBaseFilter(Video capture filter) ->IBaseFilter(MJPEG compression filter) ------------->ICaptureGraphBuilder2::RenderStream ->.avi 关于如何通过IAMDevideoCompre

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

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

  • 我无法用任何视频播放器呈现这个捕获的.avi文件(我尝试了Windows Media Player、WMP Classic、VLC)。在我看这个视频之前,我需要做一个解压器吗

  • 有没有其他我应该使用的压缩过滤器?哪一个是最好的


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

    您可能需要查看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上测试)

    jpegdec是一种用于解码jpeg格式的bin,该格式包含“idct方法”以提高质量

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

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

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


    问得好!我也会寻找答案
    gst-launch v4l2src ! jpegdec ! filesink location=test.avi