今回はMacで映像変換を行ってみます。Macだと映像フォーマット変換は標準で入っているQuickTimeを利用すればできます(簡単な編集もできます)。ただ、ディレクトリ(フォルダ)に入っている映像データを条件付きでまとめて変換するなどといった処理は標準では提供されていません。やはり、条件付きでまとめて何か処理する場合はコマンド入力の方が便利なことがあります。ということで、今回は一括して処理するのに便利なavconvertコマンドを扱います。
さて、今回もデスクトップのsampleディレクトリにサンプルファイルを入れておきます。また、カレントディレクトリはsampleディレクトリとします。コマンドならcd ~/Desktop/sampleです。
変換はavconvertコマンド
Macには以前(MacOS X 10.7から。64bit版はmacOS X 10.15から)から映像を変換するためのavconvertコマンドがあります。UNIXで言うところのffmpegのようなものですが、さすがにffmpegほど高機能ではありません。ただ、8Kオーバーの映像処理など新しい映像系も対応していたりと使えればなかなか便利です。多分、Macでのフォーマット変換処理の裏ではavconvertが動作しているのでしょう。
便利そうなavconvertコマンドですが、検索してもあまりというかほとんど出てきません。仕方ないのでmanコマンドでマニュアルを表示して確認してみましょう。また、avconvertで何もパラメーターを指定しなくても表示されます。
man avconvert
表示された内容を見るとシンプルなパラメーターのようです。プリセットはOSのバージョンで若干異なっていますが、ほとんど同じようです。フォーマット変換する場合は、このプリセットを指定します。
・macOS Catalina (10.15.7)
Preset640x480
Preset960x540
Preset1280x720
Preset1920x1080
Preset3840x2160
PresetAppleM4A
PresetAppleM4V480pSD
PresetAppleM4V720pHD
PresetAppleM4V1080pHD
PresetAppleM4VAppleTV
PresetAppleM4VCellular
PresetAppleM4ViPod
PresetAppleM4VWiFi
PresetAppleProRes422LPCM
PresetAppleProRes4444LPCM
PresetHEVC1920x1080
PresetHEVC1920x1080WithAlpha
PresetHEVC3840x2160
PresetHEVC3840x2160WithAlpha
PresetHEVCHighestQuality
PresetHEVCHighestQualityWithAlpha
PresetHighestQuality
PresetLowQuality
PresetMediumQuality
PresetPassthrough
・macOS Sonoma 14.0
Preset640x480
Preset960x540
Preset1280x720
Preset1920x1080
Preset3840x2160
PresetAppleM4A
PresetAppleM4V480pSD
PresetAppleM4V720pHD
PresetAppleM4V1080pHD
PresetAppleM4VAppleTV
PresetAppleM4VCellular
PresetAppleM4ViPod
PresetAppleM4VWiFi
PresetAppleProRes422LPCM
PresetAppleProRes4444LPCM
PresetHEVC1920x1080
PresetHEVC1920x1080WithAlpha
PresetHEVC3840x2160
PresetHEVC3840x2160WithAlpha
PresetHEVC7680x4320 ←●追加された8K映像形式
PresetHEVCHighestQuality
PresetHEVCHighestQualityWithAlpha
PresetHighestQuality
PresetLowQuality
PresetMediumQuality
PresetPassthrough
最近のmacOSではPresetHEVC7680x4320という8K映像形式が追加されています。(上記で⚫︎を付けてある行です)
1つの映像ファイルを変換
まず手始めに1つの映像ファイルを変換してみましょう。ここではiPhoneで撮影した4K映像をFull HDサイズである1920x1080に変換してみます。
撮影した映像のサイズなどをQuickTime Playerのインスペクタで確認しておきます。
念のためlsコマンドでファイル名も確認しておきます。変換するのはIMG_6152.MOVという映像ファイルです。
それでは実際に変換してみましょう。avconvertコマンドの後に-pを指定し、その後にプリセット名を指定します。変換元のファイル名は-sの後に指定します。出力するファイル名は-oの後に指定します。まとめると以下のように指定すれば4K映像のIMG_6152.MOVファイルがHD6152.MOVという名前でFull HDサイズに変換され同じディレクトリに保存されます。
avconvert -p Preset1920x1080 -s IMG_6152.MOV -o HD6152.MOV
エラーなく変換されると図のようなメッセージが表示されます。
FinderやQuickTime Playerのインスペクタなどで変換された映像を確認することができます。サイズも指定したプリセットのものになっています。
なお、すでに保存するファイルと同じ名前のファイルがあると以下のようなエラーが表示され変換は行われません。このような場合は、異なるファイル名を指定するか、既存のファイルを別のディレクトリに移動させておきましょう。
avconvert: failed with error:Cannot Save. The requested file name is already in use. Try a different file name or location.
avconvert completed with error:1.
どうしても上書きする必要性があるなら--replaceオプションを指定します。既存のファイルは上書きされます。
先頭の2秒だけ別映像として変換して保存
次に先頭の2秒だけ別映像として変換して保存します。映像のサムネールを作成するといったところでしょうか。IMG_6152.MOVは4K映像なので、そのままの形式で先頭2秒だけ別映像ファイルにします。この場合、--durationオプションの後に秒数を指定します。その他のプリセットや入出力ファイルのオプションは先ほど説明したものと同じです。なお、--durationで2を指定すると2秒になりますが、小数値も指定することができます。例えば--duration 2.5とすると2.5秒の長さの映像ファイルになります。
avconvert -p Preset3840x2160 --duration 2 -s IMG_6152.MOV -o THUMB6152.MOV
エラーなく変換されたら確認してみましょう。指定した最初の2秒だけの映像になっています。
なお、上記のプリセットで変換すると映像の形式がH.264になります。元映像の形式がH.264でなくH.265(HEVC)の場合、H.265(HEVC)で保存したいところです。そのような場合はプリセットをH.265(HEVC)に対応したものに変更するだけです。
avconvert -p PresetHEVC3840x2160 --duration 2 -s IMG_6152.MOV -o THUMB6152a.MOV
開始時間と再生時間を指定して保存
次に開始時間と再生時間を指定して別映像として保存してみます。開始時間は--startの後に開始時間を秒で指定します。--durationと同じく10.25などの小数値も指定できます。
以下のように指定すると10秒目から2秒だけ切り取った映像がSHORT6152.MOVという名前で同じディレクトリに保存されます。
avconvert -p Preset3840x2160 --start 10 --duration 2 -s IMG_6152.MOV -o SHORT6152.MOV
なお、開始時間が再生時間よりも大きい場合はエラーとなり変換できません。
avconvert -p Preset3840x2160 --start 510 --duration 2 -s IMG_6152.MOV -o SHORT6152.MOV