オーディオプレーヤーとビデオプレーヤーはたくさんありますが、多くの提案に1つのツールを使用したいと思います。そこで、オーディオおよびビデオプレーヤーとしてffplayを使用したいと思います。

1つのファイルを再生するには、コマンドは次のようになります。

 ffplay path_to_audio_file.mp3  

ただし、リストの再生方法オーディオファイルまたはビデオのリスト?

使用しようとしました:

ffplay *.mp3 

成功しなかった場合、次のようなエラーが発生します:

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

回答

ffplayは単一の入力ファイルのみをサポートしているように見えるため、コードを使用して入力ファイルのリストをループする(場合によってはシャッフルする)必要があります。 ); coreutilsshufの場合)を乱暴に想定すると、おそらく次のようになります:

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 -

コメント

  • 解決策を試しましたが、'ほぼ良好ですが、…関連する問題がいくつかあります。 'この質問で解決する必要があるのか別の質問で解決する必要があるのかわからないffplayへ。問題の1つは、ffplayが現在の曲の再生を終了しないことです。このため、CTRL + cキーボードの組み合わせを使用しないまで、現在の曲の終了時に次の曲に移動しません。
  • @Scantlight -autoexitフラグがその問題に関連しているようです。
  • -autoexitがその問題を解決しました。これで、-nodispを使用して解決できる別の方法があります…これにより、波形などの視覚化が無効になります。これにより、新しいウィンドウを作成したり、現在の作業アプリケーションからフォーカスを奪ったりすることを回避できます(これは非常に厄介な動作でした)。迷惑な動作を解決するための可能なオプションとして、このオプションを回答に含めますか。

回答

Lazarus / FPCでFFplayGUIを書いているときに、このスレッドを見つけました。ドロップされたファイルリストを再生して次/前のファイルにスキップすることはできましたが、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と連結するために使用するのと同じ構文です。

現在、追加する適切な方法を探しています。ファイルが画像ファイルの場合の遅延…

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です