カバーアートを付けるとエクスプローラにサムネイルが表示、変更できる。
H.264だとサムネイルが表示されるが、H.265だと表示されないのがこれで表示できる。サムネイルはPNG、BMPでも可能。コメントの通りに指定方法が間違っていたので修正。
ffmpeg -i movie.mp4 -i thumb.jpg -map 0:v -map 0:a -map 1:v -c copy -disposition:2 attached_pic movie-with-cover.mp4
MP3の場合。
ffmpeg -i audio.mp3 -i thumb.jpg -map 0:a -map 1:v -c copy -disposition:1 attached_pic -id3v2_version 3 -metadata:s:v title="Album cover" -metadata:s:v comment="Cover (front)" audio-with-cover.mp3
mp3のタグ編集を行う際にID3v1とID3v2とAPEがあるんですが、それぞれ何か役割や違いがあるのでしょうか? – Yahoo!知恵袋
アルバム名やアーティスト名はメタデータとして追加できる。
ffmpeg でメタデータを加える
Flacの場合。
ffmpeg -i audio.flac -i thumb.png -map 0:a -map 1:v -c copy -disposition:1 attached_pic audio-with-cover.flac
動画ファイルから時間指定でシーンを選んでカバーアートつきのMP3ファイルを出力することも出来る。以下のコマンド例は開始10秒のシーンをアスペクト比保持して横幅320ピクセルのカバーアートになる。
ffmpeg -i movie.mp4 -vf trim=start='00\:10.000',trim=end_frame=1,setpts=0,scale=320:-1 -map 0:v -map 0:a -c:v:0 mjpeg -disposition:0 attached_pic audio-with-cover.mp3
MKVコンテナにJPGを添付する。
ffmpeg -i "mkv_without_cover.mkv" -attach "art_cover.jpeg" -map 0:a -c copy -metadata:s:t mimetype="image/jpeg" -metadata:s:t:0 filename="cover.jpeg" "mkv_with_cover.mkv"
- ffmpeg Documentation : matroska Metadata
- ffmpeg sets first subtitle track to be default : ffmpeg
- video – ffmpeg set subtitles track as default – Stack Overflow
- albumart – How to add album art with ffmpeg? – Stack Overflow
- ffmpeg – extract mp3 from video file and use specific frame as cover image – Super User
- audio – Cover art of mkv file not being added when converting to mp3 file – Super User
disposition の設定
音声が2つ以上あるときに再生したとき最初に流れる音声を代えられる。ただしMP4コンテナには使えない。
2番目の音声を最初に再生するコマンド例。
ffmpeg -i movie.mp4 -map 0:v -map 0:a -c copy -disposition:a:0 0 -disposition:a:1 default output.mkv
2番目の音声を最初に再生し字幕も同様にするコマンド例。
ffmpeg -i movie.mkv -map 0 -c copy -disposition:a:0 0 -disposition:a:1 default -disposition:s:0 0 -disposition:s:1 default output.mkv
ffmpeg Documentation : Main options
-disposition[:stream_specifier] value (output,per-stream)
具体的にそれぞれにどのような効果があるのか分からない。
- default
- dub
- original
- comment
- lyrics
- karaoke
- forced
- hearing_impaired
- visual_impaired
- clean_effects
- attached_pic
- captions
- descriptions
- dependent
- metadata
ちなみにこちらもMKVコンテナに限るが、追加した字幕ファイルを再生したときに最初から表示することもできる。普通にremuxすると字幕は最初から表示してくれない。
ffmpeg -i movie.mp4 -i sub -c copy -disposition:s:0 default sub-default.mkv
最初の字幕にデフォルトフラグを付けず再生時に字幕を表示させないようにするには-default_mode infer_no_subsをつける。
ffmpeg -i input.mkv -map 0 -default_mode infer_no_subs output.mkv
-default_mode[int]
-dispositionのフラグの制御
- 0, infer:dispositionの既定値の各トラックを既定値としてマークする。1つもないときは最初のトラックを既定値としてマークする
- 1, infer_no_subs:dispositionの既定値の各トラックを既定値としてマークする
- 2, passthrough:dispositionフラグに従う。既定値
- FFmpeg Formats Documentation : matroska
- incorrectly setting default subtitle : ffmpeg
- How do I prevent my scripts adding default flags to tracks? : ffmpeg
- I need to mark subtitles with a language : ffmpeg
- Disposition question about subtitles: how to encode a video with one subtitle track, but make sure it is NOT enabled by default? This works in Handbrake… : ffmpeg
videoが表示されず、jpegだけ表示される。
X265にImageを追加するには
ffmpeg -i movie.mp4 -i thumb.jpg -map 0:a -map 0:v -map 1 -c copy -disposition:2 attached_pic movie-with-cover.mp4
Stream mapping:
Stream #0:0 -> #0:0 (copy)
Stream #0:1 -> #0:1 (copy)
Stream #1:0 -> #0:2 (copy)
-map 0:vがたりない
-disposition:2で出力#0:2を指定する
確かに仰るとおりでした。
記事の修正を行いました。
このファイルからImageを取り出す方法の忘備録
ffmpeg -i moviw-with-cover.mp4 -map -0:0? -map 0:1? -map 0:2 -c:V mjpeg -frames:V output.jpg
ffmpeg -i moviw-with-cover.mp4 -map -0:v:0? -map 0:a? -map 0:v:1 -c:v mjpeg -frames:v 1 output.jpg
と、videostream[1]を指定しないと、subtitlesteamがあると、コケる。