ffmpeg为此提供了concat选项,但是在流媒体播放一天之后,所有流都开始工作非常糟糕并且声音突破。
我试过看循环,但我无法弄清楚如何用ffmpeg命令执行循环,所以它转码1目录中的所有文件
/ lely / ffmpeg -y -re -i /home/ftp/kid1.mp4 -vcodec copy -acodec copy -dts_delta_threshold 1000 -ar 44100 -ab 32k -f flv rtmp://10.0.0.17:1935 / live /小子
在文件夹/ home / ftp /中有文件kid1,kid2,kid3 - 所有* .mp4文件
所以基本上我想要一个循环来在每次前一次结束时将输入更改为下一个文件。
答案 0 :(得分:5)
也许您可以使用find
和xargs
来帮助您提供ffmpeg
的文件:
find /home/ftp -name "*.mp4" | xargs -I $ /lely/ffmpeg -y -re -i $ -vcodec copy -acodec copy -dts_delta_threshold 1000 -ar 44100 -ab 32k -f flv rtmp://10.0.0.17:1935/live/kid
在这里,您首先要求find
查找/ home / ftp中的所有mp3文件。
然后您将结果提供给xargs
。对于xargs,您告诉它用$
字符串中的标记ffmpeg
替换它接收的输入。
答案 1 :(得分:0)
您可以将视频文件连接到“命名管道”,并将管道用作ffmpeg的源。 例如:
mkfifo pipeFile # create a FIFO file (named pipe)
cat $(find /home/ftp -name "*.mp4") > pipeFile & # concatenate video files do the pipe (do not forget the "&" for running in background)
/lely/ffmpeg -y -re -i pipeFile -vcodec copy -acodec copy -dts_delta_threshold 1000 -ar 44100 -ab 32k -f flv rtmp://10.0.0.17:1935/live/kid # run ffmpeg with the pipe as the input
注意: