ffplayで複数ファイルを読み込んだり、ffprobeでフィルタを当てた後のデータを調べるときに使うmovie、amovie入力の設定内容。名前の通り映像と音声なので字幕は読めないが、closed captionの字幕なら読める。
ファイルパス指定にはエスケープに注意する。
ffmpeg | パス指定とエスケープ
ffplay のショートカットキー
niconicoとffmpegのことを中心に書いてる
ffplayで複数ファイルを読み込んだり、ffprobeでフィルタを当てた後のデータを調べるときに使うmovie、amovie入力の設定内容。名前の通り映像と音声なので字幕は読めないが、closed captionの字幕なら読める。
ファイルパス指定にはエスケープに注意する。
ffmpeg | パス指定とエスケープ
ffplay のショートカットキー
アップデート内容:vlc-3.0/NEWS at master · videolan/vlc-3.0
公式サイト:Official download of VLC media player, the best Open Source player – VideoLAN
Windows 32bit のポータブル版
https://get.videolan.org/vlc/3.0.10/win32/vlc-3.0.10-win32.7z
https://get.videolan.org/vlc/3.0.10/win32/vlc-3.0.10-win32.zip
Windows 64bit のポータブル版
https://get.videolan.org/vlc/3.0.10/win64/vlc-3.0.10-win64.7z
https://get.videolan.org/vlc/3.0.10/win64/vlc-3.0.10-win64.zip
バンダイチャンネルの日本語字幕付き動画に表示されている字幕を普通の動画プレイヤーで見られる ass, srt と字幕だけの txt に変換する PHP。ファイル名を動画タイトルにするのが出来ていないのと、昔の動画、例えばボトムズなどは字幕が xml ではなく vtt なのでこれにも対応していない。
日本語字幕付き | バンダイチャンネル|好きなアニメを楽しもう!
字幕ファイルを動画に合わせる方法
【ffmpeg】 マルチトラックの動画の作り方
字幕ファイルを動画に焼き付ける(ハードサブ)subtitles
フィルタの使い方。字幕ファイルのスタイルを書き換えて字幕ファイルを出力するフィルタではない。似たフィルタにass
フィルタがあるが、subtitles
フィルタはass
フィルタよりも複雑な設定ができる。このフィルタを使うには–enable-libassとlibavcodec、libavformatが必要。
input.ass ファイルを表示する。
ffmpeg -i input -vf subtitles=sub.ass output
ffplay -i input -vf subtitles=sub.ass
映像の最初をカット(開始25分から26分時点まで)して同時に字幕時間の最初もカットする。参照元。
ffmpeg -ss 25:00 -to 26:00 -copyts -i video -ss 25:00 -vf subtitles=sub.srt -c:a copy output.mp4
webm 形式にエンコードするときは-output_ts_offsetをつける。参照元。
ffmpeg -ss 25:00 -to 26:00 -copyts -i video -vf subtitles=sub.srt -c:v libvpx-vp9 -crf 30 -b:v 0 -qmin 3 -qmax 40 -c:a copy -output_ts_offset 25:00 output.webm
シークバーが意図したものより長くなっているときは-avoid_negative_ts make_zeroを出力オプションにつける
ffmpeg -ss 23:10 -copyts -i input.mp4 -vf subtitles=input.mp4 -avoid_negative_ts make_zero output.mp4
FFmpeg: How can I burn subs and clip a video with only one line? – Super User
subtitles
フィルタで動画ファイルから字幕を選んだときはBT.601のカラースペースらしいので、BT.709素材の時はBT.601に変換しsubtitles
フィルタを当てて、BT.709に戻す。おそらく字幕ファイル単体で読み込んだときはカラースペースの変換は不要。
ffmpeg -y -i input.mkv -filter_complex scale=in_color_matrix=bt709:out_color_matrix=bt601,subtitles=input.mkv:si=0,scale=in_color_matrix=bt601:out_color_matrix=bt709 -pix_fmt yuv420p output.mp4
video – FFmpeg incorrect colourspace with hardcoded subtitles – Super User
動画にカラーマトリックスが指定してあれば、それを読むように、なければBT.601で読むように修正された。
avfilter/vf_subtitles: Respect YCbCr Matrix header · FFmpeg/FFmpeg@72e5381 · GitHub
テキスト字幕のストリームをコピーしてフォントサイズが変わるときは-map 0:t?も追加する。
Copied .ass Subtitle Changes Font Size : ffmpeg
集計期間は週間のニコ生統計の1ヶ月分である。2015年の1月の2週目から取得漏れの R-18 放送を含めて Vita API で取得し始めたのでそれ以前と比べて取得放送数が増えている。2017年8月24日(34週目)からユーザー生放送の新配信での予約延長が無料になり総配信数が減っている。
1枠30分はもはや絶滅危惧種なので来年からは30分枠、6000制限をなくす予定。
assの字幕ファイルを動画に焼き付ける(ハードサブ)ass
フィルタの使い方。似たフィルタにsubtitles
フィルタがあるが、ass
フィルタは単純に ass ファイルを動画に焼き付けるだけの簡易なフィルタである。このフィルタを使うには–enable-libassが必要である。
input.ass ファイルを表示する。
ffmpeg -i input -vf ass=input.ass output
ffplay -i input -vf ass=input.ass
assファイルのパス指定の例。詳しくは パス指定とエスケープを参照。
ffmpeg -i input -vf ass='E:/input.ass' output
ffplay -i input -vf ass='E:/input.ass'
字幕ファイルのエンコードは–enable-libassがなくてもできる。
ffmpeg -i input.srt output.ass
assファイルの書き方:
公式ドキュメント:FFmpeg Filters Documentation : ass
一つのバイナリで 8, 10 ビット深度の両方に対応した。それに伴って ffmpeg も両方エンコードが出来るようになった。ただし古い ffmpeg を利用するとエラーが出るので master を利用する。
対応コミット
git.videolan.org Git – x264.git/commitdiff : Unify 8-bit and 10-bit CLI and libraries
git.videolan.org Git – ffmpeg.git/commitdiff : x264: Support version 153
x264 のビルドにはオプション指定しなくても複数のビット深度に対応している。
ffmpeg 4.0 から追加されたエンコーダ。AMF(Advanced Media Framework)SDK を使ったAMD の VCE(Video Coding Engine)を ffmpeg で使う方法。RX470 で試したところ、h264_amfのほうが、hevc_amfよりも VMAFスコアを見る限り高画質でエンコード速度は少し遅く、デコード速度が早くなる。
関連記事
hardware acceleration の Wiki:HWAccelIntro – FFmpeg
公式の Wiki:FFmpeg and AMF HW Acceleration · GPUOpen-LibrariesAndSDKs/AMF Wiki
--disable-amf
をつける。Windows以外
Gentooでamf-amdgpu-proを利用してGPUで動画エンコードを行えるffmpegを作る方法のメモ – joker1007’s diary
[Question]: What are the proper FFMPEG syntax usages with AMD AMF drivers on Ubuntu Linux? · Issue #332 · GPUOpen-LibrariesAndSDKs/AMF
指定色でのモノトーンを作ったり、レンジを広げて見栄えをよくするnormalize
フィルタの使い方。
フルダイナミックレンジに伸張し、平準化はしない、フリッカー(ちらつき)は映像によっては発生する
ffmpeg -i input -vf normalize=blackpt=black:whitept=white:smoothing=0:independence=1:strength=1
ffplay -i input -vf normalize=blackpt=black:whitept=white:smoothing=0:independence=1:strength=1
解像度を変えずに上下左右を特定色で埋めるfillborders
フィルタの使い方。上下左右にロゴや不要な映像が入っているときに真っ黒にしたり、4:3解像度の映像を16:9にするときにpad
フィルタを使って左右に余白を追加し、その余白を合わせ鏡のように変えることも出来る。