adelay
フィルタは音声のチャンネル毎に無音の挿入ができたが、このapad
フィルタはまとめて末尾に無音を挿入する。映像は何もしないので無音を挿入すると映像と音声の時間が異なるファイルになる。
映像の前後にフレームを挿入する tpad
映像を挿入して動画時間を伸ばすことができるtpad
フィルタの使い方。映像のフレームレートに合わせるのでフレーム数、時間の指定だけでよい。映像時間が伸びるので音声時間と合わなくなるときは-shortestをつけると短い方でカットされる。
音声も時間を延ばすには、
音声の先頭に無音を挿入する adelay
音声の末尾に無音を挿入する apad
基本コマンド
映像の最初に100フレーム真っ黒な映像を挿入する。
ffmpeg -i input -vf tpad=start=100 -c:a copy output
映像の最初に10秒間、真っ白な映像を挿入する。
ffmpeg -i input -vf tpad=start_duration=10:color=white -c:a copy output
映像の最後に50フレーム、最後のフレームをコピーする。
ffmpeg -i input -vf tpad=stop=50:stop_mode=clone -c:a copy output
公式ドキュメント:FFmpeg Filters Documentation : tpad
2019年7月のニコ生統計
2017年1週目から2019年10週目までの取得漏れが判明し、毎週土曜日の放送開始0時から6時までの6時間が入ってなかった。気がついたのが2019年11週目で月間統計は過去のデータを修正したが過去記事は修正してない。
集計期間は週間のニコ生統計の1ヶ月分である。2018年からカテゴリタグの割合は今までと変わらないが、1枠30分の割合が少なくなったので来場者数とコメント数の6000以上を除かないすべての放送を対象にした。それに伴い平均値は除外した。来場者数はTS視聴可能時間が来れば増え、TS来場者数を含まずに計算することは困難な仕様なので、翌日(当日)の朝に前日の6時から当日の6時までを取得している。
ffmpeg 4.2 リリース
2020年5月22日 4.2.3 がリリースされた。アップデート内容は修正ばかりで新しいフィルタは入ってない。
git.videolan.org Git – ffmpeg.git/commitdiff
git.videolan.org Git – ffmpeg.git/shortlog : n4.2.3
2020年1月1日 4.2.2 がリリースされた。アップデート内容は修正ばかりで新しいフィルタは入ってない。
git.videolan.org Git – ffmpeg.git/commitdiff
git.videolan.org Git – ffmpeg.git/shortlog : n4.2.2
2019年9月7日 4.2.1 がリリースされた。アップデート内容は修正ばかりで新しいフィルタは入ってない。
git.videolan.org Git – ffmpeg.git/commitdiff
git.videolan.org Git – ffmpeg.git/shortlog : n4.2.1
2019年8月6日に ffmpeg 4.2 Ada(エイダ・ラブレス)がリリースされた。今回のリリースはメジャーアップデートとなり、セキュリティ対応や 4.1 以降に追加された新機能の中からマスターにしか追加されていなかったフィルタやデコーダの新機能が全て取り込まれた。
今回のリリースで気になった部分は、libdav1d を使った AV1 デコーダ、ライセンス違反による libndi-newtek の除外、PocketSphinx を使った音声認識の asr フィルタ、DNN を使って映像内の雨を除去する derain フィルタ、libaribb24 を使って日本のテレビ字幕に対応した。CUDA SDK の利用に NVCC が使われ配布できない–enable-nonfree扱いになっていたが、clang を代わりに使うことでそれを回避した。
技術書典7 でFFmpeg本出ます
無事完売して電子版の販売と振り返り記事と修正箇所。
FFmpegの本を頒布した技術書典7を振り返る
【PDF】FFmpegの本 – ニコラボの本屋 – BOOTH
【サンプル】FFmpegの本【PDF】 – ニコラボの本屋 – BOOTH
技術書典7 | 技術書典
技術書典7 | サークルリスト | 技術書典(ニコラボは下から見たほうがはやい)
日時 2019/09/22 (日) 11:00〜17:00
場所 池袋サンシャインシティ 展示ホールC/D(文化会館ビル2/3F)

内容はブログで書いてきたことを中心に改稿したものになる。他のブログでよく紹介されている使い方から便利な使い方まで基本的な使い方を紹介する。
複数の出力先のときの挙動を調整する fifo
フィルタのfifo
と、マルチプレクサのfifo
の使い方。fifo
は複数のストリームの同時出力で処理速度の差が出る、例えばネットワーク障害や書き込み速度の差が付くときなどにつける。複数出力ではなく1出力で再接続するような使い方でも使える。フィルタのfifo
にはオプション設定はない。
fifo, afifo
フィルタが2024年2月8日以降のffmpeg 7.0から廃止になった。
利用例:
ffmpeg で複数出力
1つの出力内容を複数に振り分ける tee
基本コマンド
テストソースでエラーが出たときに再接続する例。
ffmpeg -f lavfi -re -i testsrc -c:v libx264 -map 0:v -flags +global_header -f fifo -fifo_format flv -max_recovery_attempts 20 -recovery_wait_time 5 -attempt_recovery 1 -recover_any_error 1 rtmp://example.com/livekey
avformat/fifo: avoid repeated scaling of timestamps on failure and re… · FFmpeg/FFmpeg@d9f07a5
Reconnect RTMP stream after disconnect and continue from specific position : ffmpeg
フィルタのfifo
の例。最初は普通再生で次に逆再生をつなげる。試すなら動画時間の短いファイルを使う。
ffmpeg -i input -filter_complex "[0:v]reverse,fifo[r];[0:a]areverse,afifo[ar];[0:v][0:a][r][ar]concat=n=2:v=1:a=1 [v] [a]" -map "[v]" -map "[a]" output
1つの出力内容を複数に振り分ける tee
通常の方法だと1エンコード1出力なのが、1エンコード複数出力できるteeマルチプレクサの使い方。
フェードトランジションのカーブを別フィルタに実装する
afade, acrossfade
フィルタにあるフェードトランジションのカーブを別フィルタにも同様の変化を持たせるために評価式を使って実装する。
入力した2つの音声にクロスフェードをかける acrossfade の使い方
FFmpeg Filters Documentation : afade
FFmpeg Filters Documentation : acrossfade
画像は公式Wikiを引用した:AfadeCurves – FFmpeg
2019年6月のニコ生統計
2017年1週目から2019年10週目までの取得漏れが判明し、毎週土曜日の放送開始0時から6時までの6時間が入ってなかった。気がついたのが2019年11週目で月間統計は過去のデータを修正したが過去記事は修正してない。
集計期間は週間のニコ生統計の1ヶ月分である。2018年からカテゴリタグの割合は今までと変わらないが、1枠30分の割合が少なくなったので来場者数とコメント数の6000以上を除かないすべての放送を対象にした。それに伴い平均値は除外した。来場者数はTS視聴可能時間が来れば増え、TS来場者数を含まずに計算することは困難な仕様なので、翌日(当日)の朝に前日の6時から当日の6時までを取得している。
映像に枠をつける drawbox
指定した場所を四角で囲ったり、埋めたりできるdrawbox
フィルタの使い方。四角以外で囲むならgeq
フィルタを使う。
基本コマンド
-
オプション無指定の場合は上下左右の端に4ピクセルの黒枠が描写される
ffmpeg -i input -vf drawbox output
-
左上の縦横10ピクセルの位置から幅100X200に太さ8ピクセルの青枠を描写
ffmpeg -i input -vf drawbox=10:10:100:200:blue:8 output
ffmpeg -i input -vf drawbox=x=10:y=10:w=100:h=200:c=blue:t=8 output - 左上に縦横10ピクセルから幅200X100に枠内を輝度反転した四角を描写
ffmpeg -i input -vf drawbox=10:10:200:100:invert:fill output
- ボックス部分だけ透過させる。
format
フィルタでアルファチャンネルをつけても最初は全画面255(透明ではない)なので、lutyuv
フィルタで 0(透明)にしてボックス部分だけ255にしている。アルファチャンネルの確認にはalphaextract
フィルタを使う
ffmpeg -i input -vf format=yuva420p,lutyuv=a=0,drawbox=0:0:100:100:replace=1 output
ffplay -i input -vf format=yuva420p,lutyuv=a=0,drawbox=0:0:100:100:replace=1,alphaextract - 透過部分をcolor, cの指定色に入れ替えてアルファチャンネルをなくす
ffmpeg -i alpha.png -vf "[0]split=2[bg][fg];[bg]drawbox=c=blue@1:replace=1:t=fill[bg];[bg][fg]overlay=format=auto" output.png
FFmpeg: Convert transparency to a certain color – Super User