ffmpegでの変換とか何とか
ちょっと昔(と言っても半年くらい前)にメモってたものの纏め
ヘルプ
お決まり。
$ ffmpeg -h
ちょっと長くて見づらいようであれば、ファイルに出力すれば良い。
$ ffmpeg -h > help.txt
動画ファイルの詳細確認
$ ffmpeg -i ./movie.mp4 ffmpeg version 1.0 Copyright (c) 2000-2012 the FFmpeg developers built on Dec 11 2012 22:23:46 with Apple clang version 4.1 (tags/Apple/clang-421.11.66) (based on LLVM 3.1svn) configuration: --prefix=/usr/local/Cellar/ffmpeg/1.0 --enable-shared --enable-gpl --enable-version3 --enable-nonfree --enable-hardcoded-tables --cc=cc --host-cflags= --host-ldflags= --enable-libx264 --enable-libfaac --enable-libmp3lame --enable-libxvid libavutil 51. 73.101 / 51. 73.101 libavcodec 54. 59.100 / 54. 59.100 libavformat 54. 29.104 / 54. 29.104 libavdevice 54. 2.101 / 54. 2.101 libavfilter 3. 17.100 / 3. 17.100 libswscale 2. 1.101 / 2. 1.101 libswresample 0. 15.100 / 0. 15.100 libpostproc 52. 0.100 / 52. 0.100 Input #0, mov,mp4,m4a,3gp,3g2,mj2, from './movie.mp4': Metadata: major_brand : mp42 minor_version : 0 compatible_brands: mp42isomavc1 creation_time : 2012-06-22 03:16:35 encoder : HandBrake 0.9.6 2012022800 genre : Movie artist : hoge Duration: 00:09:31.09, start: 0.000000, bitrate: 2042 kb/s Stream #0:0(und): Video: h264 (Main) (avc1 / 0x31637661), yuv420p, 512x384 [SAR 1:1 DAR 4:3], 1874 kb/s, 30 fps, 30 tbr, 90k tbn, 180k tbc Metadata: creation_time : 2012-06-22 03:16:35 Stream #0:1(jpn): Audio: aac (mp4a / 0x6134706D), 44100 Hz, stereo, s16, 164 kb/s Metadata: creation_time : 2012-06-22 03:16:35
上記から動画にはlibx264, 音声にはlibfaacが使われていることが分かる。
動画ファイルから音声のみ抽出
基本フォーマットはコレ。
$ ffmgep -i <入力ファイルパス> -vn -acodec copy <出力ファイルパス>
-vnで動画部分排除(-anなら音声部分排除)
codecの指定方法は、基本は -acodec <codec名>で指定するのだが、copyを利用すると、元のcodecをそのまま利用できる。
$ ffmpeg -i movie.mp4 -vn -acodec copy sound.m4a
着信音作成
元データが動画の場合には、-vnを付ける。
元データが音声の場合には、-vn不要。
$ ffmpeg -i movie.m4a -vn -acodec copy ringtone.m4a # 着信音の拡張子へrename $ mv ringtone.m4a ringtone.m4r
出力ファイルを直接*.m4rと指定しても、'Unable to find a suitable output format for '*.m4r' *.m4r: Invalid argument'と怒られるので、変換後にrenameする必要がある。
その後、iTunesへドロップすれば自動的に着信音としてライブラリ登録される。
-tオプションで時間指定
$ ffmpeg -i movie.mp4 -vn -acodec copy -t 00:00:40 sound.m4a
これで40秒。
-ssオプションで開始時間指定
$ ffmpeg -i movie.mp4 -vn -acodec copy -ss 00:00:05 -t 00:00:40 sound.m4a
この場合、元データの5秒目から40秒間分(5〜45秒)が抽出される
別のcodecへ変換
まず先述のffmpeg -i で情報を調べる
$ ffmpeg -i ./movie.mp4 Stream #0:1(jpn): Audio: aac (mp4a / 0x6134706D), 44100 Hz, stereo, s16, 164 kb/
codecを指定しつつ、情報に併せて音質を指定する。
# ステレオ, 44100Hz, 164kbのaudio.m4aを作成 $ ffmpeg -i ./movie.mp4 -vn -acodec <codec名> -ac 2 -ar 44100 -ab 164k audio.m4a
好みに応じて値を変更すると良い。