ffmpeg 2.8.5 リリース

HLS を利用した脆弱性に対応した ffmpeg 2.8.5 がリリースされた。公開サーバで ffmpeg を利用している人や、出所不明のファイルを読み込むときに脆弱性を利用してローカルにあるデータがリモートのサーバに送信される危険性があるので更新が必須である。

ちなみに--disable-protocol=hlsで HLS を無効化することもできる。

FFmpegに脆弱性 | マイナビニュース

対応パッチ
avformat/hls: forbid all protocols except http(s) & file – ffmpeg.git/commitdiff
avformat/hls: More strict url checks – ffmpeg.git/commitdiff
avformat/hls: Even stricter URL checks – ffmpeg.git/commitdiff

今回のリリースはマイナーアップデートとセキュリティアップデートがメインで、前回と同様に新機能のフィルタ追加はない。
http://git.videolan.org/?p=ffmpeg.git;a=shortlog;h=refs/tags/n2.8.5
https://git.videolan.org/?p=ffmpeg.git;a=blobdiff;f=Changelog;hb=n2.8.5;hpb=n2.8.4

2015年12月のニコ生統計

集計期間は週間のニコ生統計の1ヶ月分である。2015年の1月の2週目から取得漏れの R-18 放送を含めて Vita API で取得し始めたのでそれ以前と比べて取得放送数が増えている。

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

ニコニコチャンネルのデータ

2015年12月30日時点の公開チャンネルのデータ
データは Google スプレッドシートにて公開
個別課金のチャンネルは調べられないので空欄になる
チャンネルID しか表示していないチャンネルはリンクはあるが公開されていない
非公開チャンネルは 283、月額有料チャンネルは 801
https://docs.google.com/spreadsheets/d/147RrPYq4h5nS8Mc6qMW-JVRlD_PH0Xt5aIEwbF637KI

お気に入り登録数はこちらから:ニコニコチャンネル カテゴリ別のお気に入り登録数ランキング
API はこちらから:ニコニコAPIリストwiki – ch.info

2015年11月のニコ生統計

集計期間は週間のニコ生統計の1ヶ月分である。2015年の1月の2週目から取得漏れの R-18 放送を含めて Vita API で取得し始めたのでそれ以前と比べて取得放送数が増えている。

Continue reading “2015年11月のニコ生統計”

2015年10月のニコ生統計

集計期間は週間のニコ生統計の1ヶ月分である。2015年の1月の2週目から取得漏れの R-18 放送を含めて Vita API で取得し始めたのでそれ以前と比べて取得放送数が増えている。

Continue reading “2015年10月のニコ生統計”

ffmpeg 2.8.2 リリース

今回も前回同様に修正がメインで新機能は追加されていない。ショートログを見ると分かるがあまりコミットされていない。

http://git.videolan.org/?p=ffmpeg.git;a=shortlog;h=refs/tags/n2.8.2

master で新たに追加されたフィルタでブログで紹介しているのは zscale filter だけである。
Zライブラリを使ったリサイズフィルタ zscale

master で公開されているフィルタはこちらから
git.videolan.org Git – ffmpeg.git/blob – Changelog

これとは別に Nvidia のハードウェアアクセレーションのリサイズパッチが Ubuntu 向けに公開されている。
http://developer.download.nvidia.com/compute/redist/ffmpeg/1511-patch/FFMPEG-with-NVIDIA-Acceleration-on-Ubuntu_UG_v01.pdf

輝度の段差を減らして容量を減らす試み

ffmpeg のフィルタで容量を減らすと言えばたいていの場合デノイズしてのっぺりさせてきたが、今回はデノイズではなくてYチャンネル(輝度)のステップを間引いて容量を減らしてみた。この方法のデメリットはのっぺりしたりぼやけたりはしないがステップが単純化されるのでグラデーションがきれいではなくなる(バンディングがのる)のと、処理が遅いのでリアルタイムエンコード(配信)向きである。

任意でステップを調整できるのでバンディングが目立つところを間引かずに他の所を間引くことで目立たないところで容量を減らすことができる。ステップの調整は映像の内容によって変えた方がきれいに見える。

追記 2015年11月6日 0時21分
可逆圧縮(utvideo)の時は確かに容量は減るのだが、不可逆圧縮(libx264)のときはかえって容量は増えて SSIM も悪くなる傾向にあるのでもう少し調べてみる。

追記 2015年11月11日
paletteuseではなくてlutyuvでも間引くことができるがわずかな効果しかない。Yチャンネルは修正しない方が無難かもしれない。

追記 2017年3月31日
見た目の変化がわかりにくい青色、YUV の U をデノイズした方がよい結果になるかも。使うフィルタはremovegrainを使う。

奇数の値を+1繰り上げる。繰り下げる場合は-1。偶数はそのまま。
lutyuv=y="if(mod(val,2),val,val+1)":u="if(mod(val,2),val,val+1)":v="if(mod(val,2),val,val+1)"

その他にremovegrainでそれぞれのチャンネルに個別にデノイズ処理する方法もある。

Windows の ffmpeg で生放送する方法 :: グレイン除去

追記ここまで

Continue reading “輝度の段差を減らして容量を減らす試み”

ffmpeg で無限入力が可能に

今までは-loop 1で画像の無限入力はできていたが、これからは音声や映像も無限に入力できるようになった。

ループ回数を指定できる loop, aloop

公式ドキュメント:Main options : ffmpeg Documentation

FFMPEG: Why does the concat filter cause loss of a/v sync/lipsync? – Video Production Stack ExchangeFFmpeg concat video and audio out of sync – Stack Overflowより、-fflags +genptsを追加した。ループするファイルの入力オプションとして使う。1つの入力にフィルタでループなどして時間が長くなるなら出力オプションで使う。

Continue reading “ffmpeg で無限入力が可能に”

YUV RGB を比較計算する blend

2入力した映像の YUVA や RGBA を比較して結果を表示するblendの使い方。差分を調べて比較動画を作ったり、マスクした部分に別の映像を重ねたりいろいろな映像効果を作ることができる。

基本コマンド

比較動画として上に二つ並べて左下に差分(Y は 0 差分、UV は1入力)の動画を表示するコマンド例。
ffplay -f lavfi -i "movie=left.mp4,setpts=PTS-STARTPTS,split[a1][a2];movie=right.mp4,setpts=PTS-STARTPTS,split[b1][b2];[a1][b1]blend=c0_mode=difference,pad=2*iw:ih:0:0[blend];[a2][b2]hstack[tmp];[tmp][blend]vstack"
ffmpeg -i left.mp4 -i right.mp4 -filter_complex [0:v]setpts=PTS-STARTPTS,split[a1][a2];[1:v]setpts=PTS-STARTPTS,split[b1][b2];[a1][b1]blend=c0_mode=difference,pad=2*iw:ih:0:0[blend];[a2][b2]hstack[tmp];[tmp][blend]vstack -c:a copy output

比較動画として上に二つ並べて左下に差分(Y は 0 差分、UV は128)の動画を表示するコマンド例。
ffplay -f lavfi -i "movie=left.mp4,setpts=PTS-STARTPTS,split[a1][a2];movie=right.mp4,setpts=PTS-STARTPTS,split[b1][b2];[a1][b1]blend=c0_mode=difference,lutyuv=val:128:128,pad=2*iw:ih:0:0[blend];[a2][b2]hstack[tmp];[tmp][blend]vstack"
ffmpeg -i left.mp4 -i right.mp4 -filter_complex [0:v]setpts=PTS-STARTPTS,split[a1][a2];[1:v]setpts=PTS-STARTPTS,split[b1][b2];[a1][b1]blend=c0_mode=difference,lutyuv=val:128:128,pad=2*iw:ih:0:0[blend];[a2][b2]hstack[tmp];[tmp][blend]vstack -c:a copy output

さらに音声も再生するコマンド例(音声は left.mp4)。
ffplay -f lavfi -i "movie=left.mp4,setpts=PTS-STARTPTS,split[a1][a2];movie=right.mp4,setpts=PTS-STARTPTS,split[b1][b2];[a1][b1]blend=c0_mode=difference,lutyuv=val:128:128,pad=2*iw:ih:0:0[blend];[a2][b2]hstack[tmp];[tmp][blend]vstack[out0];amovie=left.mp4[out1]"

開始フレームが一致しない場合はsetptsフィルタの前にtrimフィルタを使う。以下は開始1フレームカットする例。
trim=start_frame=1

間違い探しを簡単に調べるコマンド(インターネット上の画像も入力できる)。
ffmpeg -i img1.jpg -i img2.jpg -filter_complex setsar=1/1[0a];[1]setsar=1/1,[0a]blend=c0_mode=grainextract,lutyuv=val:128:128 output.jpg

Continue reading “YUV RGB を比較計算する blend”

特定の時間だけフィルタを当てるタイムライン編集について

ffmpegのフィルタの中には効果を与えるのに期間(区間)、以上、未満、毎の時間の条件をつけることができるものがある。これらをつけられるのはffmpeg -filtersで調べたときにTと表示されるフィルタである。

ffmpeg -filters using Gyan ffmpeg

関連フィルタにsendcmd、asendcmdのコマンド対応がある。こちらは任意の時間の他にパラメータも任意に変更できる。
任意に時間や、効果を変えられるsendcmd、asendcmdフィルタの使い方

Continue reading “特定の時間だけフィルタを当てるタイムライン編集について”