我正在使用 ffmpeg 创建一个包含 mp3 文件夹和一个视频文件夹的直播视频播放列表。
我希望每次有一首新歌出现在一个新的视频循环中,直到下一首歌曲。
最初我使用的是live-stream-radio,它是完美的,除了它的处理方式是在每个轨道之后初始化一个新的 ffmpeg 流循环。在许多客户端中,这会发出停止命令,并且之间存在“死区”。
我的尝试是在创建 gif 播放列表文本文件(它们是 gifs 但我转换为 mp4)时,我将持续时间设置为相应曲目的持续时间。问题是视频播放一次,然后在最后一帧冻结,直到下一首曲目。
rm music.txt
rm gifs.txt
printf "ffconcat version 1.0\n" >> gifs.txt
printf "ffconcat version 1.0\n" >> music.txt
for i in {1..9}; do
printf "file 'mp3/00%s.mp3'\n" $i >> music.txt
done
for i in {1..9}; do
DURATION=$(ffmpeg -i mp3/00$i.mp3 2>&1 | awk '/Duration/ { print substr($2,0,length($2)-1) }')
printf "file 'gif/00%s.mp4'\nduration %s\n" $i $DURATION >> gifs.txt
done
ffmpeg \
-stream_loop -1 \
-i gifs.txt \
-i music.txt \
-vcodec libx264 \
-f flv "$URL"
这里的任何想法都会很棒。