有没有一种方法可以将输入视频传递到ffmpeg?

时间:2019-01-29 16:16:54

标签: ffmpeg

ffmpeg -f avfoundation -i "1:0" -vf "crop=1920:1080:0:0" -pix_fmt yuv420p -y -r 30 -c:a aac -b:a 128k -f flv rtmp://RTMP_SERVER:RTMP_PORT/STREAM_KEY

大家好,以上命令效果很好。它记录计算机的音频/视频。但是我想做的是通过管道传输重复的视频或图像(png / jpeg / gif),这样就不会有来自计算机的实时视频提要,而只有带有音频的流中的图像。

您将如何去做?

此外,如果您知道可以执行相同操作的任何编程接口,请提出建议。因为我宁愿不使用CLI。

2 个答案:

答案 0 :(得分:2)

我想你应该能够使用-loop和{一些{1}}实现这一目标:ING。我自己无法通过avfoundation进行测试,但是类似这样的方法对我而言有效:

-map

ffmpeg -loop 1 -i image.png -i file_to_take_audio_from.mp4 -vf "scale=1920:1080:0:0" -pix_fmt yuv420p -r 30 -c:a aac -b:a 128k -map 0:v -map 1:a output.mp4 替换为-i file_to_take_audio_from.mp4,将-f avfoundation -i "1:0"替换为output.mp4

如果图像具有正确的分辨率,您也许可以跳过-f flv rtmp://RTMP_SERVER:RTMP_PORT/STREAM_KEY

希望有帮助!

答案 1 :(得分:2)

为视频设备索引使用mapped_value或完全不使用值(none),并提供辅助输入:

:0

对于动画GIF之类的图像,有一个ffmpeg -f avfoundation -i :0 -i image.png ... 选项,对于输入流,有一个loop

您可以直接使用FFmpeg API代替CLI。