音楽制作YouTube投稿時にトランスコードを回避する方法(かも?)YouTubeへの動画投稿時、PCM音声を含む動画ファイルを作成すれば公開までに必要以上にエンコード&デコードを繰り返すことによる劣化を回避できる...かもしれません。続編のエントリはこちらはじめにYouTubeは、アップロードされたファイルの音声トラックをシステム側で再エンコードすることが知られています。同社は、アップロードするファイルの音声にAAC/mp3といった非可逆圧縮形式の使用をガイドラインで推奨しています。これに従うと、音声の(あるいは映像も)劣化をともなう非可逆圧縮が、ファイル作成時とアップロード後の2度に渡り、繰り返し行われることになります。PCMのまま動画ファイルをアップロードする方法を考えてみました。本稿の手順によりファイル作成からYouTubeにアップロードしての視聴までは確認できておりますが、その結果がYouTubeが推奨するコーデックを使用した場合よりも音質面で優位であるかどうかの判断は皆様に委ねたいと思います。前準備ソースとなる動画ファイルと音声ファイルの多重化(mux)にはFFmpegを使用しますので、コマンドラインがある程度使えることが前提になります。音声ファイルの作成時は以下にご注意ください。音声はあらかじめ映像に同期させておきます。※試した限りでは、たとえば「歌みた」動画のような作品なら、元の動画の音声トラックを参照し、ファイル冒頭からイントロ(あるいはアタックの明確な箇所)までの時間がだいたい同一であることを確認できればOKと思われます。尺は映像より短くしておくと事故を回避できるように思われます。音声ファイルは48kHz/24bitで書き出します。下記サイトよりFFmpegを入手します。https://www.ffmpeg.org/手順1.FFmpegでストリームの番号を確認するFFmpegで動画ファイルと音声ファイルを多重化する前に、それぞれのストリームIDを確認します。1がAudioであることがわかりました。今回は前者の映像より使用し、音声は使用しません。次に同様にWAVファイル中の音声のストリームIDを調べます。endian)のPCM音声が含まれていることが確認できました。映像と音声を多重化する各ファイルのうち使用するソースのストリームIDがわかったところで、次にこれらを取り出し、多重化してひとつのファイルにまとめます。out_video.mp4[source_video.mp4]には元となる動画ファイルを、[source_audio.wav]には、音声ファイルを、それぞれ指定します。copyは、映像をトランスコードせずに多重化するオプションです。音声をFLAC形式で可逆圧縮を行うコマンドです。0番を使用する指示です。先にffprobeコマンドで調べた結果、映像のストリームIDが0でない場合は適宜変更してください。1:0(ふたつ目のmap)オプションは、2番目に上げたソースファイルより最初のストリームIDを使用する指示です。オプションは、執筆時点ではまだ試験的な機能とされているmp4ファイルへのFLAC多重化を強制的に実行するために必要になります。最後の[out_video.mp4]には、出力ファイル名を任意に設定します。追記:出力時の拡張子を.movに変更することで、32fの音声ファイルも多重化できることがわかりました。その場合のコマンドは以下のようになります。out_video.mov以上でファイルのできあがりです。muxにより音声は変化しないのか?作成した動画から音声トラックのみを抽出し、WaveCompareを使って元のWAVファイルと比較してみました。RXに読み込んで保存しなおしたファイルを比較に使用しましたが、それでもなお元のファイルと内容が一致しました。おまけFFmpegでは、下記コマンドをを使用して動画ファイルのラウドネス(Integrated)も測定できます。-詳しくはFFmpeg本家ドキュメントをご覧ください。YouTubeへ作品をアップロードする前に、規定レベルから大きくはずれていないかどうか最終チェックを行ってもよいかもしれません。Vocal-EDIT.comのブログです。Mix/Masteringに関する海外記事に意訳を添えてご紹介しています。