0

我正在使用 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"

这里的任何想法都会很棒。

4

0 回答 0