VBRのFFmpegを使用してmp3をwavに変換する


27

ビットレートが可変のmp3ファイルを変換するには、どのコマンドを使用する必要wavがありますか。それとも、ソースオーディオがfixedビットレートかどうかをどのように知ることができvariableますか?


3
WAVファイル形式が可変ビットレートをサポートしているとは思わない。すべてのMP3デコーダーが標準に準拠するためにサポートする必要があるため、MP3ファイルを固定ビットレートのWAVに変換できる必要がありますが、結果はソースMP3の品質とWAVに選択した固定ビットレートによって異なります作成した。ほとんどのMP3再生ソフトウェアには、再生中のファイルのプロパティを表示する方法が用意されているため、これを使用して、どの種類のソースファイルを扱っているかを確認できます。
マルティノー

そして、コマンドはどうですか?おすすめは何ですか?
ソハムダスグプタ

マルティノーの答えをもう一度読んでください。いくつかの間違いを修正しました。特に、PCMエンコードされたWAVファイルのビットレートを設定することはできません。
slhck

回答:


36

ffprobe song.mp3コマンドを使用して、入力ファイルのビットレートに関する情報を取得できます。ただし、これは最初のフレームのビットレートのみを示します。MP3ファイルのVBRは通常、各フレームのビットレートを変更するだけで実装されるため、使用されているかどうかは、最初のフレームのヘッダーを読み取るだけでは判断できません。私は通常、他のオーディオファイルプレーヤーソフトウェアを使用して、VBRが使用されているかどうかを判断します。

非可逆出力コーデック(MPEG-1レイヤーIIIやAACなど)を使用する場合、ffmpegは出力ストリームのデフォルトビットレートまたは可変ビットレートを選択します。エンコーダー自体に依存します。

ロスレスコーデックの場合、各サンプルが事前定義されたビット数を使用するため、可変ビットレートを設定できません。ffmpeg -i song.mp3 song.wavしたがって、44,100 Hzのサンプルレートとサンプルあたり16ビットのPCMエンコードされた WAVファイルが取得されます。これにより、コンテナ全体で約1411 kBit / sになり、MP3入力ファイルよりもはるかに大きい可能性があります。

PCMエンコードされたWAVファイルのファイルサイズを小さくしたい場合は、ビット深度の少ないサンプル形式を設定し(-encodersそれらの完全なリストについてはオプションを参照)、低いサンプルレートを選択します(-ar 22050たとえば、22.05 kHzを使用します)。

両方を実行する例を次に示します。

ffmpeg -i song.mp3 -acodec pcm_u8 -ar 22050 song.wav

5
WAVコンテナでPCMオーディオをエンコードする場合、ビットレートを設定できません。それは意味がありません。PCMは非圧縮形式です。1秒あたりのビット数を増減するように指示することはできません。サイズを調整する唯一の方法は、異なるサンプルサイズを使用することです(-sample_fmtsオプションを参照)。-ar 128kは、サンプルレートが通常の44,1または48 kHzではなく、128,000 Hzになることを意味します。
slhck

12
ffmpeg -i song.mp3 song.wav適切なビットレート(おそらく44.1khz)が選択されるため、おそらくを実行する方が良いでしょう。wavに変換する場合は、おそらくそれ以上の情報を失いたくはないでしょう。
naught10115年

@ naught101は正しかったので、実際にffpmegは、適切なサンプリングビットレートを選択することをお勧めします。song.mp3入力データに。これにより、出力ビットマップwavファイルのビットレートが最適になります。これは、ファイルサイズが大きいことを意味しますが、データのオーバーフィッティングでは: `ストリーム#0:0:オーディオ:mp3、44100 Hz、ステレオ、s16p、128 kb / s`
loretoparisi

1
推測するのはかなり安全です。アスカーの目的は、生成されたWAVファイルをオーディオCDに書き込むことです。そのための唯一の適切な周波数は44100 Hzなので-ar 44100、ffmpegが適切な16ビットコーデックを自動的に使用する場合でも必須です。
ミハイルT.

3

@ naught101のコメントによると、私はこのプロセスに従って最良のものを検出しますacodec

$ ffmpeg -formats | grep PCM 

 DE f32be           PCM 32-bit floating-point big-endian
 DE f32le           PCM 32-bit floating-point little-endian
 DE f64be           PCM 64-bit floating-point big-endian
 DE f64le           PCM 64-bit floating-point little-endian
 DE s16be           PCM signed 16-bit big-endian
 DE s16le           PCM signed 16-bit little-endian
 DE s24be           PCM signed 24-bit big-endian
 DE s24le           PCM signed 24-bit little-endian
 DE s32be           PCM signed 32-bit big-endian
 DE s32le           PCM signed 32-bit little-endian
 DE u16be           PCM unsigned 16-bit big-endian
 DE u16le           PCM unsigned 16-bit little-endian
 DE u24be           PCM unsigned 24-bit big-endian
 DE u24le           PCM unsigned 24-bit little-endian
 DE u32be           PCM unsigned 32-bit big-endian
 DE u32le           PCM unsigned 32-bit little-endian

この時点で、のどちらかを選択するためにあなたのプラットフォームを検討しbig-endianlittle-endianビットレートを選択します。

$ ffmpeg -i sample.mp3 
[mp3 @ 0x7fb33180da00] Estimating duration from bitrate, this may be inaccurate
Input #0, mp3, from 'sample.mp3':
  Metadata:
    title           : Saturday
    artist          : Winterwood
    album           : Love In The Heart
    track           : 2/15
    TPA             : 1/1
    encoded_by      : iTunes 11.0.1
    genre           : Country & Folk
    date            : 1997
  Duration: 00:04:27.76, start: 0.000000, bitrate: 128 kb/s
    Stream #0:0: Audio: mp3, 44100 Hz, stereo, s16p, 128 kb/s

このオーディオファイルは、mp3(入力ファイルの拡張子に関係なく、バイト数を確認するだけでわかりません)ビットレートが128 kb/s、コーデックがs16p、サンプリングがで44100 Hzあることがわかります。したがって、それに応じて選択します。

$ ffmpeg -i sample.mp3 -acodec pcm_s16le -ar 44100 sample.wav


Input #0, mp3, from 'sample.mp3':
  Metadata:
    title           : Saturday
    artist          : Winterwood
    album           : Love In The Heart
    track           : 2/15
    TPA             : 1/1
    encoded_by      : iTunes 11.0.1
    genre           : Country & Folk
    date            : 1997
  Duration: 00:04:27.76, start: 0.000000, bitrate: 128 kb/s
    Stream #0:0: Audio: mp3, 44100 Hz, stereo, s16p, 128 kb/s
File 'sample.wav' already exists. Overwrite ? [y/N] y
Output #0, wav, to 'sample.wav':
  Metadata:
    INAM            : Saturday
    IART            : Winterwood
    IPRD            : Love In The Heart
    IPRT            : 2/15
    TPA             : 1/1
    ITCH            : iTunes 11.0.1
    IGNR            : Country & Folk
    ICRD            : 1997
    ISFT            : Lavf56.4.101
    Stream #0:0: Audio: pcm_s16le ([1][0][0][0] / 0x0001), 44100 Hz, stereo, s16, 1411 kb/s
    Metadata:
      encoder         : Lavc56.1.100 pcm_s16le
Stream mapping:
  Stream #0:0 -> #0:0 (mp3 (native) -> pcm_s16le (native))
Press [q] to stop, [?] for help
size=   46125kB time=00:04:27.75 bitrate=1411.2kbits/s    
video:0kB audio:46125kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.000457%

Macを使用している場合、オーディオwhite noiseの開始/終了がない場合(mp3の元のオーディオに一定のミリ秒/秒のオーディオがない場合)をチェックできます。

$ afplay sample.wav

そしてもちろん、ビットマップを再確認できます:

$ ffmpeg -i sample.wav
Input #0, wav, from 'sample.wav':
  Metadata:
    artist          : Winterwood
    date            : 1997
    genre           : Country & Folk
    title           : Saturday
    album           : Love In The Heart
    track           : 2/15
    encoder         : Lavf56.4.101
    encoded_by      : iTunes 11.0.1
  Duration: 00:04:27.76, bitrate: 1411 kb/s
    Stream #0:0: Audio: pcm_s16le ([1][0][0][0] / 0x0001), 44100 Hz, 2 channels, s16, 1411 kb/s

0

ffmpegを使用してメディアを変換します。最初にffprobeを使用してファイルの仕様を確認します。このコマンドを使用します ffmpeg -i kimberly.wav -acodec pcm_s16le -ar 16000 -ac 1 song.wav

どこで -pcm_s16le is codec 16 bit conversion -ar is sampling rate (16000samples/sec) -ac no of audio channel

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.