如何使用 ffplay 播放音频文件列表

如何使用 ffplay 播放音频文件列表

有很多音频和视频播放器,但我更喜欢使用一种工具来实现多种目的。所以我想到ffplay同时用作音频和视频播放器。

要播放文件,命令如下。

ffplay path_to_audio_file.mp3

很好,但是如何播放音频文件列表或视频列表?

我尝试使用:

ffplay *.mp3

但无济于事。它给了我以下错误:

Argument 'audiofileB.mp3'  provided as input filename, but 'audiofileA.mp3' was already specified.

答案1

ffplay似乎只支持单个输入文件,因此您需要使用代码来循环输入文件列表(并可能对它们进行洗牌);疯狂地假设coreutils(对于shuf),也许是这样的:

find musicdir -type f -name "*.mp3" | shuf | while read f; do ffplay -autoexit -- "$f"; done

如果文件名中有空格或换行符,这当然会严重破坏。

(我现在的音乐播放器非常相似,find ~/music -type f -name "*.mp3" | mpg123 --shuffle -Z --list -

答案2

我从这个发现https://ubuntuforums.org/showthread.php?t=2068478

for f in *.mp3 ; do ffplay -autoexit "$f"; done

答案3

我在 Lazarus/FPC 中编写 FFplay GUI 时发现了这个线程。它已经可以播放删除的文件列表并跳到下一个/上一个文件,但我必须终止 ffmpeg 进程并每次创建一个新进程。我试图添加播放整个文件列表的功能。我目前发现的最简单的解决方法当然是使用 -autoexit,并使用以下 Pascal 代码创建播放列表文件:

begin
      AssignFile(tfOut, C_FNAME);
      try
        rewrite(tfOut);
        for i:= 0 to Fichiers.Items.Count - 1 do
        if Fichiers.Selected[i] then
        begin
          writeln(tfOut, 'file ' + #39 + conv(Fichiers.Items[i]) + #39)
        end;
        CloseFile(tfOut);
      except
        on E: EInOutError do
        ShowMessage ('File error')
      end;
  end;

然后这样读:

'ffplay -f concat -safe 0 -i flist.txt -autoexit'

这与我使用 FFMPeg 连接文件的语法相同。

我现在正在寻找一种适当的方法来添加延迟(如果文件是图像文件)......

答案4

ffplay可以使用类似于 的 concat demuxer ffmpeg

创建一个列出您要播放的文件的文件:

# list.txt
file 'audiofileA.mp3'
file 'audiofileB.mp3'

然后运行ffplay:

ffplay -f concat -i list.txt

其他有用的选项:

  • 用于-autoexit使其在完成后退出
  • 用于-loop 0永远循环(按q退出)。
  • -safe 0如果文件路径是绝对路径(或包含其他特殊字符),则使用。

请参阅 ffmpeg wiki 关于连接解复用器更多细节。

相关内容