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。
答案 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。