質問: opusをaacに変換するための推奨設定 youtubeから音楽をダウンロードしていますが、ほとんどの場合(人気のあるビデオ)、最高品質のオーディオはopusファイルのようです。(1)opusは 最新かつより効率的なコーデック であり、(2)損失のあるコーデックから別のコーデックへの変換はお勧めしません。ただし、windows/ios /車で同じファイルを使用する、つまり同じコンテナを使用するため、aacまたはmp3に変換したいと考えています。私は here を読みました。ターゲットコーデックに高いビットレートを使用することで、ある程度の世代損失を軽減できます。では、同じオーディオ品質を維持するためにopusファイルをaacに変換するためにどの設定(たとえばffmpeg)を推奨しますか(これは主観的なものであることを知っています...)?による youtube-dl -fデータは160kbsですが、ダウンロードすると、mediainfoは全体で127kbpsのビットレートと48khzのサンプリングレートを提供します。aacファイルには192kbsが適していますか? (aacはいずれにしてもmp3よりも良い選択だと思いますか?)cdまたはロスレスからは、vbrが最も推奨されますが、opusからのトランスコーディングにはcbrがより良いでしょう。そして、48khzのサンプルレートをopusファイルから保持するか、通常の44.1khzのaacにダウンサンプリングする必要がありますか?最後に、youtube-dlは128 kbsのaacファイルもダウンロードできます。オーパスの方が効率的/優れているため、同じビットレートでは品質は高くなります。しかし、オーパスをaacにトランスコーディングすると(例:192kbs/212kbs)、その品質の違いが維持されます。または、トランスコーディング(より高いビットレートでも)がアーティファクトを引き起こし、192kbs aacファイルのオーディオ品質が実際にはaac 128kbsよりも悪くなります。ファイル?編集トランスコーディングの最適化設定を決定する方法を理解することに「概念的に」苦労する理由を説明しましょう。ほとんどの場合、ロスレスファイル(50mb wavなど)から始め、品質(vbr)または目的のビットレート(cbr/abr)のエンコーダー設定を選択します。次に、エンコーダーはそのホーカスポーカス(聞き取れない情報、圧縮などを破棄する)を実行します。これにより、選択した設定に基づいて、損失の少ないファイルが得られます。議論のために、128kbs mp3の場合は3mb、最高品質のvbr(つまり、lameまたはqaacの最高の設定)の場合は5-6mb、320kbsのcbrの場合は7-8mbとしましょう。ただし、この場合、ソースファイルは5mb 128kbsのopusファイルです。トランスコーディングの最初のステップは、最初にファイルを(pcmストリームに?)デコードし、次に新しい形式で再度エンコードすることです。したがって、ファイル内の最大情報が5mb以下であることを理解し、エンコードする必要があります(ファイルを削減する必要がない場合)サイズ)opusファイルにまだ存在する事実上すべての情報をキャプチャするには、可能な限り最高品質のvbr、またはおそらく高cbr(256または320)を使用する必要があります。結果として生成されるファイルは、5mbを超えることはありません。プロセスで新しい情報を作成/生成できないと思います(これをテストするために週末にいくつかの実験を行います)。与えられた最初の答えはこれを示唆しているようです。
回答: 私が自分に同じ質問をしたときのちょうど私の2セント: 利用可能な最高の品質は、ダウンロード時のopusです。別の形式を強制すると、不可逆的な損失が発生します(例:spekで観察) しかし、私の古いmp3はaacのみをサポートしており、opusはサポートしていません そして、youtube-dlによって取得されたメタデータを保持しながら、-map_metadataでffmpegを使用してopusをaacに変換するだけでは、windows 10では失敗します。 "部分、youtube-dlによる。 したがって、コンパクトで高解像度のopusライブラリをwindows 10の古いmp3に適合するaacライブラリに変換する場合、メタデータを手動で追加する必要があります。 次のバッチファイルを使用しない限り...@echo off setlocal enabledelayedexpansion set _inputpath=opus\*.opus set _outputpath=m4a_from_opus for %%a in (%_inputpath%) do ( for /f "tokens=* usebackq" %%f in (`ffprobe -v error -show_format -show_streams "%%a" ^| findstr artist`) do ( set artistline=%%f ) for /f "tokens=* usebackq" %%f in (`ffprobe -v error -show_format -show_streams "%%a" ^| findstr title`) do ( set titleline=%%f ) for /f "tokens=* usebackq" %%f in (`ffprobe -v error -show_format -show_streams "%%a" ^| findstr album`) do ( set albumline=%%f ) for /f "tokens=2 delims==" %%b in ("!artistline!") do ( set artist=%%b ) for /f "tokens=2 delims==" %%b in ("!titleline!") do ( set title=%%b ) for /f "tokens=2 delims==" %%b in ("!albumline!") do ( set album=%%b ) echo converting %%a... ffmpeg -i "%%a" -c:a aac -b:a 160k -metadata artist="!artist!" -metadata title="!title!" -metadata album="!album!" "%_outputpath%/%%~na".m4a ) set "_outputpath=" set "_inputpath=" set artistline= set albumline= set titleline= set artist= set album= set title=