2019年11月11日

4K H.265/HEVCへの対応

久々の設定プロファイルの更新にあたりffmpegの情報を集めており、audiotoolboxとvideotoolboxへの対応がビルドのオプションではなく標準設定になっていることに気がつきました。これまではビルドオプションの値を取得して設定を切り替えていましたが、これができなくなるとともに、必要も無くなりました。
音声についてはaudiotoolboxへの対応によりmacOS標準の高音質なAACのエンコードが可能になるため、設定プロファイルでは全面的に音声エンコードをaudiotoolboxに移行しました。これまでは音声データだけ取り出してAACエンコードを行なって一つのファイルにまとめる作業をQuickTime Plug-inというスクリプトで実施していましたが、ほとんどの設定で利用しなくなりました。
映像のvideotoolboxへの対応は、macOSのH.265/HEVCエンコーダをffmpegから利用できるのですが、いくつかの問題があることがわかりました。ffmepgに内蔵されているx265エンコーダでは品質固定可変ビットレートが利用できますが、ffmpeg経由のvideotoolboxでは固定ビットレートしか利用できません。ビットレートを指定しない場合、非常に悪い品質でしかエンコードできません。解決策の一つは、非常に高いビットレート(例えば100Mbps)を設定することでした。この設定では、画面が小さいファイルの場合はそれにあわせてmacOSはビットレートを下げてエンコードしますが、それでもH.264より大きなファイルになることがわかりました。もうひとつの解決策は、QuickTime Playerのexport機能を利用することでした。QuickTime Playerは動画の中身により自動的にビットレートを制御して最適なエンコードを行うようです。x265よりも倍以上の大きさのファイルができるため、H.265の圧縮の利点の一部を損なっていますが、iOS機器などとの互換性は完璧なはずです。4Kと呼ばれるこの設定は、Mojave以上のQuickTime Playerで利用できるようです。なお、設定の名称は4Kですが、4Kへのリサイズをしているわけではないので、どんな大きさの動画でもエンコードできます。
そんなわけで、4K H.265/HEVCへの対応は、macOSの環境変数を見ながら、次のような設定を利用できるようにしました。

・Sierra以前
 H.265/HEVCエンコードには対応しません。
・High Sierra
 ffmpegのx265を用いた可変ビットレート品質固定エンコードに対応。簡単に設定できるカスタマイズ項目はアスペクト比の指定だけ。
・Mojave以上
 x265を使った上記のエンコードと、QuickTime Playerを使ったエンコードを選択できます。

QuickTime PlayerをAppleScriptで制御してエンコードするのは、MPEG Exporter TNGの前身であるQT MPEG Exporter(Classic Mac OSの時代)の基本機能でもあったので、設定が存在することさえわかればお手の物です。MPEG Exporter TNGをリリースした当初の目玉の設定は、ビットレート上限付き品質固定可変ビットレートのH.264エンコードでした。しかしもう個人が設定をちまちまいじる時代ではないのかもしれません。さまざまな設定の動画が溢れかえるよりも、単一の設定の安定した動画が普及した方が、何かと便利な気がします。
posted by MacLab. at 22:27| Comment(0) | TrackBack(0) | 技術情報
この記事へのコメント
コメントを書く
お名前: [必須入力]

メールアドレス:

ホームページアドレス:

コメント: [必須入力]

この記事へのトラックバックURL
http://blog.sakura.ne.jp/tb/187457556

この記事へのトラックバック