SoxとFFMPEGを一緒に接続する

SoxとFFMPEGを一緒に接続する

私はさまざまな形式のオーディオファイルを扱っており、FFMPEGとSoXを使用してその形式と設定を統合したいと思います。

私のプロセスには2つのステップがあります。

  1. ファイル(元のファイルは何でも)をPCM 16ビットリトルエンディアンWAVファイルに変換します。
    ffmpeg -i input.wav -c:a pcm_s16le output.wav
  2. 必要なサンプルレートとチャンネル数に合わせてSoxでファイルを処理します。
    sox input.wav output.flac channels 2 rate 44.1k

理想的には、不要なファイルの生成を避けるために、これら2つのコマンドを一緒にリンクしたいと思います。

しかし、実際にフォーマットを操作するのに多くの困難があります。

SoXは入ってくるオーディオのフォーマットを明示的に知る必要があると文句を言いますが、私はそれを実行してもそれを知りません。 PCMオーディオフォーマットは知っていますが、チャンネル数や受信オーディオのサンプリングレートはよくわかりません。

これら2つのコマンドを一緒に接続する方法はありますか?それとも、1つのツールを使用してタスクを実行する方が良いですか?

私が1つだけ試してみるのではなく、2つのツールを使用する理由は次のとおりです。

FFMPEG

  • チャンネルをコピーしてモノラルオーディオストリームをステレオオーディオストリームに安全に変換する方法があるかどうかはわかりません。 (SoXはこれをデフォルトで行います。)
  • サンプルレートを変更する方法がわかりません。 (SoXはこれをデフォルトで行います。)
  • 最適な圧縮率でFLACに出力する方法がわかりません。

ソックス

  • FFMPEGなどのオーディオ形式の検出はありません。拡張子のないファイルがある場合、SoXはフォーマットを手動で指定する必要がありますが、これは私のアプリケーションではまったく機能しません。

ベストアンサー1

デコードにはFFmpegを使用し、フォーマット検出の問題を避けるために、パイピングにはsoxフォーマットを使用し、16ビットで出力するにはレベル8 FLAC圧縮を使用します。

ffmpeg -hide_banner -i input.wav -f sox - |
 sox -t sox - -b 16 -C 8 output.flac channels 2 rate 44.1k

おすすめ記事