是否可以使用gstreamer记录.webm文件?

时间:2016-01-22 12:28:20

标签: gstreamer video-capture webm

我想在我的主.webm文件旁边记录一个.mkv文件,以便将.webm文件投放到html页面上的视频对象中进行阅读(亲切的简单的流媒体只是为了看它录制的内容

我使用下面的管道(用于此目的的tee)从我的网络摄像头录制:

gst-launch-1.0  v4l2src device=/dev/video1 ! tee name=t t. \
! image/jpeg,width=1920,height=1080 ! capssetter \
caps='image/jpeg,width=1920,height=1080,framerate=30/1' ! queue \
! matroskamux name=mux pulsesrc device="alsa_input.usb-046d_Logitech_Webcam_C930e_AAF8A63E-02-C930e.analog-stereo" \ 
! 'audio/x-raw,channels=1,rate=44100' ! audioconvert ! vorbisenc ! queue \
! mux. mux. ! filesink location=/home/sina/Desktop/Recordings/Webcam.mkv \ 
t. ! queue ! (...pipeline?...) ! filesink location=/home/sina/Desktop/Recordings/TestWebcam.webm

我应该如何为最后一行填充管道?(什么结构?编码器?muxer?...)

1 个答案:

答案 0 :(得分:0)

虽然仍然可以将JPEG图片流转换为.WebM内部的VP8流,但它会消耗操作并且结果不会很漂亮:编码→解码→编码序列会破坏输出不良(并使用更多CPU)。

如果您不需要JPEG并且不关心.mkv文件中的视频格式,最简单的解决方案是使用单个VP8编码器(因为.mkv.webm个文件可以包含VP8)和拆分编码流:

gst-launch-1.0 -e \
    v4l2src ! vp8enc ! tee name=t ! \
        queue ! matroskamux name=m ! filesink location=1.mkv \
        pulsesrc ! vorbisenc ! m. \
    t. ! \
        queue ! webmmux ! filesink location=1.webm

此外,当您通过 Ctrl + C 终止命令时,请确保使用-e选项强制执行EOS。

GStreamer WebM muxer是Matroska muxer上非常小的一层:.webm几乎等于.mkv