fc2ブログ

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エンコードでした。しかしもう個人が設定をちまちまいじる時代ではないのかもしれません。さまざまな設定の動画が溢れかえるよりも、単一の設定の安定した動画が普及した方が、何かと便利な気がします。

MacでAirPodsのAAC CODECを利用する

Appleの可愛くて高性能なAirPods、使っていますか?
私は毎日iPhoneやiPadと組み合わせて使っています。
時にはMacとも接続しますが、音質が悪くなることがあることに気がつきました。
AirPodsの特徴は、iTunes Storeでも用いられているAAC CODECを使用した高音質ですが、Macは環境によってはAACが有効ではないことがあります。
この問題への対応についての前回の記事への追記です。
続きを読む
テーマ: Mac | ジャンル: コンピュータ

Text Encoding Obj ver.2.5

いくつかのアプリにスクリプトオブジェクトライブラリ Text Encoding Obj ver.2.5を配信しています。
parseJapanese(msg)という新しいルーチンを実装しました。これを直接利用するアプリケーションはまだありませんが、これに付随するいくつかのサブルーチンの微修正も行いました。
続きを読む
テーマ: Mac | ジャンル: コンピュータ

YouTubeへのアップロード形式

YouTubeへのアップロードの方法についての資料をwebで検索すると、様々な意見が出てきます。しかし、その多くは再エンコードの特性をきちんととらえていないようです。
YouTubeは原則としてすべての動画を視聴環境に合わせて再エンコードします。アスペクト比も自動的に修正されます。
再エンコードの際には必ず画質と音質の劣化を伴うので、YouTubeでサポートされているファイル形式の場合は最適なアップロードの方法はよけいなことをせず元のファイルをアップロードすることです。
それでは、YouTubeが対応していない形式の場合はどうしたらいいでしょうか。
続きを読む

Delegate方式のスクリプト

OpenKitのスクリプトの利用方法について、
property parent : script "OpenKit"
という宣言でdropletの親として使用する方法を紹介したところ、Script FactoryのKuritaさんから、

AppleScript のライブラリを実装する際に、そのライブラリを parent にするような設計は良く無い。そのライブラリを利用するスクリプトの設計を制限することになってしまう。デリゲートパターンを利用すべき。

との意見をいただきました。
そこで、Kuritaさんから教えていただいたスクリプトをもとに、OpenKitを利用しながら、droplet本体には好きなparentなり何なりの設定をすることができるdelegate方式のスクリプトを書いてみましたので、ご利用ください。
OpenKitの中に含まれるスクリプトハンドラはあくまでも私自身のために作られているので、他の人にとって使いやすいとは限りませんから、この方がいいかもしれません。

続きを読む
テーマ: Mac | ジャンル: コンピュータ