是否可以使用一个输入编码为两个不同的编解码器?我也尝试过 tee muxer,但没有成功。谢谢。
-y -timeout 10000000 -rtsp_transport tcp -i rtsp://rtsp.stream/pattern -map 0:v -vf "transpose=1" -c:v bmp -f image2pipe - -c:v libx264 -preset veryfast -tune zerolatency -an -f flv rtmp://127.0.0.1/live
答案1
我们可能会使用split
过滤器并使用-map
两次。
如果输入同时具有视频和音频流,我们可能会使用split
视频和asplit
音频,并且我们必须映射视频和音频。
我们不能使用tee
多路复用器对两个不同的编解码器进行编码 -tee
多路复用器会分割已经编码的流(可能分割为两个不同的容器/格式)。
合成视频示例:
ffmpeg -f lavfi -i testsrc=size=192x108:rate=1:duration=10 -filter_complex "split[v0][v1]" -vcodec bmp -f image2 -map "[v0]" frame%05d.bmp -vcodec libx264 -pix_fmt yuv420p -f mp4 -map "[v1]" test_output.mp4
-filter_complex "split[v0][v1]"
将输入视频流分成两个具有临时名称[v0]
和的流[v1]
。-map "[v0]" frame%05d.bmp
映射[v0]
到frame%05d.bmp
输出([v0]
编解码器和格式由定义-vcodec bmp -f image2
)。-map "[v1]" test_output.mp4
映射[v1]
到test_output.mp4
输出([v1]
编解码器和格式由定义-vcodec libx264 -pix_fmt yuv420p -f mp4
)。
使用您的命令的示例(未经测试):
ffmpeg -y -an -timeout 10000000 -rtsp_transport tcp -i rtsp://rtsp.stream/pattern -filter_complex "transpose=1,split[v0][v1]" -c:v bmp -f image2pipe -map "[v0]" - -c:v libx264 -preset veryfast -tune zerolatency -f flv -map "[v1]" rtmp://127.0.0.1/live