2017-11-04 10 views
2

ソース音がaudio.mp3で、audio.aiffに変換したいと思います。 私はなぜこれらの2つのffmpegファイルが異なるのですか(配管とファイルの出力)?

ffmpeg -i audio.mp3 -acodec pcm_s16le -ac 1 -ar 44100 -vn audio.aiff

を行うと、私は出力に再生可能である、私はそれを期待どおりにファイルtim_tum.aiffを取得します。しかし、私が見つけた私は

ffmpeg -i audio.mp3 -acodec pcm_s16le -ac 1 -ar 44100 -vn -f aiff pipe:1 > audio_pipe.aiff

を行う際

$ diff audio.aiff audio_pipe.aiff 
Binary files audio.aiff and audio_pipe.aiff differ 

によって証明されるように、私は両方の期待、再生不能であると、元audio.aiffのファイルと異なるaudio_pipe.aiffファイルを取得するということですファイルが同一であり、なぜ異なって出てくるのか理解できませんが、最も重要なのは、1つのファイルが再生可能なのはなぜですか?これら二つのAIFFエンコードされたファイルのヘッダの比較ですとすることで

答えて

2

、あなたは彼らが

00000000: 464f 524d 0199 9040 4149 4643 4656 4552 [email protected] 
をパイプではない

xxd audio.aiff | head 

最初の行に3-4列で異なることを観察することができます

配管

00000000: 464f 524d 0000 0000 4149 4643 4656 4552 FORM....AIFCFVER 

AIFFのファイル指定によるこの位置のデータは、チャンクのデータ部分のサイズを指定するckDataSizeである必要があります。パイプされたバージョンは0の値を持っていたので、パイプを使用すると、ffmpegは出力ストリームのデータサイズを適切に事前に決定できないため、空白のままになり、エンコードされたファイルは多少不正な形になります。

flacのようないくつかのツールは、--ignore-chunk-sizesなどのオプションを使用してこれらの不正なヘッダーを回避することができますが、可能であればメディアファイルの変換中にパイプを使用しないことをおすすめします。

関連する問題