[Mac] コマンドラインで動画から音声を抽出する

環境:macOS Catalina Version 10.15.6(英語環境)

(1)ffpmeg をインストールすると ffprobe が一緒にインストールされる。これを使って動画のコーデックを調べる。

$ ffprobe input.mov
  Metadata:
	major_brand     : qt  
	minor_version   : 0
	compatible_brands: qt  
	creation_time   : 2021-01-27T21:52:04.000000Z
	com.apple.quicktime.location.accuracy.horizontal: 65.000000
	com.apple.quicktime.location.ISO6709: +35.1261+136.9381+016.488/
	com.apple.quicktime.make: Apple
	com.apple.quicktime.model: iPad Pro
	com.apple.quicktime.software: 14.4
	com.apple.quicktime.creationdate: 2021-01-28T06:52:04+0900
  Duration: 00:00:09.54, start: 0.000000, bitrate: 24398 kb/s
	Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p(tv, bt709), 1920x1080, 24227 kb/s, 59.96 fps, 59.94 tbr, 600 tbn, 1200 tbc (default)
	Metadata:
	  creation_time   : 2021-01-27T21:52:04.000000Z
	  handler_name    : Core Media Video
	  encoder         : H.264
	Stream #0:1(und): Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz, mono, fltp, 91 kb/s (default)
	Metadata:
	  creation_time   : 2021-01-27T21:52:04.000000Z
	  handler_name    : Core Media Audio
	Stream #0:2(und): Data: none (mebx / 0x7862656D), 0 kb/s (default)
	Metadata:
	  creation_time   : 2021-01-27T21:52:04.000000Z
	  handler_name    : Core Media Metadata
	Stream #0:3(und): Data: none (mebx / 0x7862656D), 0 kb/s (default)
	Metadata:
	  creation_time   : 2021-01-27T21:52:04.000000Z
	  handler_name    : Core Media Metadata
	Stream #0:4(und): Data: none (mebx / 0x7862656D), 69 kb/s (default)
	Metadata:
	  creation_time   : 2021-01-27T21:52:04.000000Z
	  handler_name    : Core Media Metadata

今回は iPad で撮影した動画だったが、音声は aac だと分かった。

(2)ターミナルで以下を実行。-vn は動画部分を無効化するオプション。-acodec copy でそのまま音声をコピーすることになる。

$ ffmpeg -i 'input.mov' -vn -acodec copy input.aac

これで音声のみを無劣化で抽出できた。

参考:
動画のコーデックを調べる in linux – Qiita
https://qiita.com/mzmttks/items/120e6712c4ef3d32b144

FFmpegで動画から音声だけ無劣化抽出(分離) | SlackNote
https://slacknotebook.com/ffmpeg-extract-audio-from-video/