FFMPEG:情報/品質を大きく失うことなく、m4aファイルをmp3に変換します。自動ビットレート


44

オーディオファイル(約1000)が大量にあり、m4aからmp3に変換したいので、USBポートのあるCDプレーヤーで再生できます。

私は次のような簡単なことをしようとしましたffmpeg -i FILE.m4a FILE.mp3が、これはビットレートを非常に低い値に減らしているようですが、これは私が望んでいるものではありません。

同様に、変換するファイルの一部は320k m4aであり、一部は96k m4aと同じくらい低い品質であるため、320kなどの固定ビットレートを使用して変換したくありません。

一部のファイルは必要以上に大きくなるため、320kを強制することは意味がないようです。同様に、すべての320kファイルを96kよりもはるかに低いファイルに変換することにより、すべての320kファイルを破棄することは意味がありません。(現時点では、ファイルは約50kに変換されています。)

誰も私がこれを行う方法を知っていますか?私が本当にやりたいのは、ffmpegに、ディレクトリ内のすべてのm4aファイルをmp3に変換しながら、可能な限り現在のオーディオ品質を維持するように指示することです。(もちろん、不可逆ファイル形式から不可逆ファイル形式への変換により、余分な損失が発生する可能性があります。)

ご協力いただきありがとうございます。これが不可能な場合、ファイルを個別に変換するときに必要な品質を検出するようなスクリプトがありますか?

PS:私はIntel Macに取り組んでいますが、Ubuntuボックスも持っています。

回答:


51

VBR

-qscale:aオプションを使用ffmpegして、可変ビットレート(VBR)MP3出力を作成できます。FFmpeg Wikiから:VBR(可変ビットレート)mp3オーディオのエンコード

-qscale:a(またはエイリアス-q:a)で品質を制御します。値はエンコーダ固有であるため、libmp3lameの範囲は0〜9で、値が小さいほど品質が高くなります。通常、0〜3は透明な結果を生成し、4(デフォルト)は知覚的な透明度に近く、6は通常「許容できる」品質を生成します。このオプション-qscale:a-V、スタンドアロンlameコマンドラインインターフェイスツールのオプションにマッピングされます。

どの値があなたに受け入れられるかを見るために実験する必要があります。Hydrogen Audio:Recommended LAME Encoder Settingsも参照してください。

複数のファイルのエンコード

Bashの「forループ」を使用して、ディレクトリ内のすべてのファイルをエンコードできます。

$ mkdir newfiles
$ for f in *.m4a; do ffmpeg -i "$f" -codec:v copy -codec:a libmp3lame -q:a 2 newfiles/"${f%.m4a}.mp3"; done

取得する ffmpeg

ffmpeg可能であれば、最新のビルドを使用することをお勧めします。OS X、Linux、およびWindowsのビルドへのリンクについては、FFmpegダウンロードページを参照しください。ガイドに従ってFFmpegをコンパイルすることもできます


1
わかりました、コマンドは動作しましたが、私が望んでいたことをしているとは思いません。-q:a 0を設定しました。これは、高品質のm4a(より高いvbrレートで大きなファイルを生成する)に期待したことを実行していますが、低品質のファイルはまだ約250-260のvbrで大きなファイルに変換されていると思いますkb / s。m4a形式で約96kのファイルは、vbrモードのlameエンコーダーで同様のビットレートに変換されると予想していました。VBRエンコーディングモードがどのように機能するかを理解していないと思いますか?
user3728501 14年

19

FFmpegを使用します(GUIバージョンも多数あります)

  1. MP3は既に廃止され(2017年)、廃止されたコーデックです。インターネットはすでにAAC(より効率的で高品質のコーデック)に切り替えています:

    ffmpeg -i filenameee.m4a -acodec copy output.aac
    
  2. ただし、MP3を使用したい場合は(まだ他のデバイスでサポートされているため):

    ffmpeg -i filenameee.m4a -acodec libmp3lame -ab 256k output.mp3
    

4
問題は品質に関するものであるため、128ではなく256kに変換すると有益な場合があります
。– VessoVit

3

これは私のために働いた:

ffmpeg -i testing.m4v -b:a 192K -vn testing.mp3

1

既存の回答を基礎として、Ubuntuマシンで質問が正確に行うことを行うbashスクリプトを作成しました(16.04でテスト済み)。パッケージに含まavprobeれているものをインストールする必要がありlibav-toolsます。avprobe次のコマンドでインストールできます

sudo apt-get install libav-tools

注:このスクリプトを実行するフォルダーのバックアップを作成し、実行前に何をしているかを理解するために最善を尽くすことをお勧めします。

私は非常に厳密にテストしていないので、YMMV。

#!/bin/bash

mkdir "mp3s"
for f in *.m4a;
do
    bitrate=$(avprobe "${f}" 2> >(grep bitrate) | sed 's/^.*bitrate://g' | sed 's/[^0-9]*//g')
    bitrate="${bitrate}K"
    new_filename=$(echo "${f}" | sed 's/.m4a$/.mp3/g')
    ffmpeg -y -i "${f}" -acodec libmp3lame -ab "${bitrate}" "mp3s/${new_filename}"
done

0

48 KhZで作業し、入力ファイルで少なくとも24ビット(ファイルエディタi.ex.など)-q:a 0を使用すると、flacほど大きなファイルではなく20 kHzを再生します。変換で作成されたディザリングまたはノーズリダクションのオーディオエディターによる高周波数(ヒス)から再生され、データファイルを聞き取れないHFとして使用しますが、高価なノイズです。

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