Gstreamer Tee在每个分支上具有不同的功能

时间:2017-08-25 02:09:47

标签: gstreamer tee gst-launch

我有一个类似于此的gstreamer管道。

                              Queue -> videoscale -> videosink
                             /
appsrc -> h264_decoder -> Tee 
                             \ 
                              Queue -> jpegenc -> multifilesink

Tee如何处理解码器板上的功能?是否可以在两个分支上设置不同的功能?

具体来说,是否可以设置两种不同的帧率? Filesink以1 fps存储,videosink以30 fps存储。

我使用以下命令行进行测试。

gst-launch-1.0 -e \
    filesrc location=${1} ! queue ! qtdemux name=d d.video_0 ! h264parse ! avdec_h264 ! tee name=t \
                       t. ! queue ! videoscale ! 'video/x-raw,width=(int)960,height=(int)540' ! autovideosink \
                       t. ! queue ! 'video/x-raw,framerate=1/1' ! jpegenc ! multifilesink location=out/img1_%03d.jpeg

但是我收到了内部数据流错误'并且'理由没有关联'。

1 个答案:

答案 0 :(得分:1)

问题是你在管道的每个分支上都要求不同的帧速率。

您忘记实例化一个元素,为您提供记录分支所预期的1/1帧率。 videorate做到了这一点。

这是我建议的工作流程:

gst-launch-1.0 -e \
    filesrc location=${1} ! queue ! qtdemux name=d d.video_0 ! h264parse ! avdec_h264 ! tee name=t \
                       t. ! queue ! videoscale ! 'video/x-raw,width=(int)960,height=(int)540' ! autovideosink \
                       t. ! queue ! videorate ! 'video/x-raw,framerate=1/1' ! jpegenc ! multifilesink location=out/img1_%03d.jpeg