web-dev-qa-db-ja.com

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

私はUSBポートを持っているCDプレーヤーでそれらを再生することができるように私がm4aからmp3に変換したいと思うオーディオファイルのロード(約1000)を持っています。

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

同様に私が変換しているファイルのいくつかが320k m4aのものであり、いくつかが96k m4aのように低品質であるので、私は320kのような一定のビットレートを使用して変換したくない。

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

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

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

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

40
user3728501

VBR

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

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

どのような値があなたにとって許容できるかを確かめるために実験する必要があります。 Hydrogen Audio:推奨LAMEエンコーダー設定 も参照してください。

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

ディレクトリ内のすべてのファイルをエンコードするために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 Download ページを参照してください。 のガイドに従ってFFmpeg をコンパイルすることもできます。

46
llogan

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
    
19
T.Todua

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

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

基礎として既存の答えを使用して、私は質問がUbuntuマシン(16.04でテストされた)で頼むことを丁度するべきであるbashスクリプトを書きました。 libav-toolsパッケージにあるavprobeをインストールする必要があります。次のコマンドで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
1
jbowman

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

0
Kaiser Lima