GStreamer使用tee创建分支
将数据分割成多个数据流的分支, 而且一定要把tee的两个分支放在不同的queue中, GStreamer使用tee创建分支 可以使用tee命令对一个视频流创建分支。
另一个分支写入文件,播放音频并且挂载可视化模块 输入源为测试视频、输出为两个流 1 2 3 4 5 6 //tee 测试视频 去掉延时 ----通过 gst-launch-1.0 videotestsrc pattern=pinwheel ! decodebin ! tee name=t ! \ queue ! videoconvert ! x264enc bitrate=1000 tune=zerolatency ! video/x-h264 ! h264parse ! video/x-h264 ! \ queue ! flvmux streamable=true ! rtmpsink location=rtmp://192.168.18.188/live/999 \ t. ! queue ! videoconvert ! x264enc ! flvmux streamable=true ! \ queue ! rtmpsink location=rtmp://192.168.18.188/live/888 输入源为屏幕、输出为两个流 1 2 3 4 5 6 //tee 屏幕打流 去掉延时 ----通过 gst-launch-1.0 ximagesrc ! decodebin ! tee name=t ! \ queue ! videoconvert ! x264enc bitrate=1000 tune=zerolatency ! video/x-h264 ! h264parse ! video/x-h264 ! \ queue ! flvmux streamable=true ! rtmpsink location=rtmp://192.168.18.188/live/999 \ t. ! queue ! videoconvert ! x264enc ! flvmux streamable=true ! \ queue ! rtmpsink location=rtmp://192.168.18.188/live/888 输入源为屏幕、输出为两个流(其中一个流加延时) 关键参数:sync=false 设置为不同步否则, 1 2 3 4 5 6 gst-launch-1.0 ximagesrc startx=0 use-damage=0 ! decodebin ! tee name=t ! \ queue ! videoconvert ! x264enc bitrate=1000 tune=zerolatency ! video/x-h264 ! h264parse ! video/x-h264 ! \ queue max-size-buffers=0 max-size-bytes=0 max-size-time=90000000000 ! queue max-size-buffers=0 max-size-time=90000000000 min-threshold-time=15000000000 ! \ flvmux streamable=true ! rtmpsink location=rtmp://192.168.18.188/live/999 t. ! \ queue ! videoconvert ! x264enc ! \ queue ! flvmux streamable=true ! rtmpsink location=rtmp://192.168.18.188/live/888 sync=false , 需要在每个分支中使用单独的队列元素为每个分支提供单独的线程,否则一个分支阻塞数据流会阻塞其他分支 使用场景:捕获视频后。
其中一个分支显示在屏幕,出去的两个流都存在延时,。
评论列表