Audio

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

  • September 14, 2021

有很多音頻和影片播放器,但我更喜歡將一種工具用於多種用途。所以我想ffplay同時用作音頻和影片播放器。

要播放文件,命令是這樣的。

ffplay path_to_audio_file.mp3

很好,但是如何播放音頻文件列表或影片列表?

我嘗試使用:

ffplay *.mp3

但無濟於事。它給了我以下錯誤:

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

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 -

我在 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 連接文件時使用的語法相同。

如果文件是圖像文件,我現在正在尋找一種適當的方法來添加延遲……

引用自:https://unix.stackexchange.com/questions/275257