Audio
如何使用 ffplay 播放音頻文件列表
有很多音頻和影片播放器,但我更喜歡將一種工具用於多種用途。所以我想
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 連接文件時使用的語法相同。
如果文件是圖像文件,我現在正在尋找一種適當的方法來添加延遲……