movie, amovie 入力の設定内容

ffplayで複数ファイルを読み込んだり、ffprobeでフィルタを当てた後のデータを調べるときに使うmovie、amovie入力の設定内容。名前の通り映像と音声なので字幕は読めないが、closed captionの字幕なら読める。

ファイルパス指定にはエスケープに注意する。
ffmpeg | パス指定とエスケープ
ffplay のショートカットキー

Continue reading “movie, amovie 入力の設定内容”

VLC 3.0 がリリースし ARIB 字幕や AV1 デコードに対応

アップデート内容: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

Continue reading “VLC 3.0 がリリースし ARIB 字幕や AV1 デコードに対応”

バンダイチャンネルの字幕を ass に変換する PHP

バンダイチャンネルの日本語字幕付き動画に表示されている字幕を普通の動画プレイヤーで見られる ass, srt と字幕だけの txt に変換する PHP。ファイル名を動画タイトルにするのが出来ていないのと、昔の動画、例えばボトムズなどは字幕が xml ではなく vtt なのでこれにも対応していない。

日本語字幕付き | バンダイチャンネル|好きなアニメを楽しもう!

字幕ファイルを動画に合わせる方法
【ffmpeg】 マルチトラックの動画の作り方

Continue reading “バンダイチャンネルの字幕を ass に変換する PHP”

字幕ファイルを動画に焼き付ける subtitles

字幕ファイルを動画に焼き付ける(ハードサブ)subtitlesフィルタの使い方。字幕ファイルのスタイルを書き換えて字幕ファイルを出力するフィルタではない。似たフィルタにassフィルタがあるが、subtitlesフィルタはassフィルタよりも複雑な設定ができる。このフィルタを使うには–enable-libasslibavcodec、libavformatが必要。

ass の字幕ファイルを動画に焼き付ける ass

基本コマンド

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

ffmpeg で指定時間でカットするまとめ

シークバーが意図したものより長くなっているときは-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

公式ドキュメント:FFmpeg Filters Documentation : subtitles

Continue reading “字幕ファイルを動画に焼き付ける subtitles”

2017年12月のニコ生統計

集計期間は週間のニコ生統計の1ヶ月分である。2015年の1月の2週目から取得漏れの R-18 放送を含めて Vita API で取得し始めたのでそれ以前と比べて取得放送数が増えている。2017年8月24日(34週目)からユーザー生放送の新配信での予約延長が無料になり総配信数が減っている。

1枠30分はもはや絶滅危惧種なので来年からは30分枠、6000制限をなくす予定。

Continue reading “2017年12月のニコ生統計”

ass の字幕ファイルを動画に焼き付ける ass

assの字幕ファイルを動画に焼き付ける(ハードサブ)assフィルタの使い方。似たフィルタにsubtitlesフィルタがあるが、assフィルタは単純に ass ファイルを動画に焼き付けるだけの簡易なフィルタである。このフィルタを使うには–enable-libassが必要である。

字幕ファイルを動画に焼き付ける subtitles

基本コマンド

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

Continue reading “ass の字幕ファイルを動画に焼き付ける ass”

x264 一つのバイナリで複数のビット深度に対応

一つのバイナリで 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 のビルドにはオプション指定しなくても複数のビット深度に対応している。

Continue reading “x264 一つのバイナリで複数のビット深度に対応”

AMD VCE 対応の ffmpeg をつくる

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

準備

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

Continue reading “AMD VCE 対応の ffmpeg をつくる”

RGB を伸張させる normalize

指定色でのモノトーンを作ったり、レンジを広げて見栄えをよくする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

Continue reading “RGB を伸張させる normalize”

上下左右を特定色で埋める fillborders

解像度を変えずに上下左右を特定色で埋めるfillbordersフィルタの使い方。上下左右にロゴや不要な映像が入っているときに真っ黒にしたり、4:3解像度の映像を16:9にするときにpadフィルタを使って左右に余白を追加し、その余白を合わせ鏡のように変えることも出来る。

Continue reading “上下左右を特定色で埋める fillborders”