公式のフィルタではなく Facebook の github レポジトリで公開したフィルタ。
Next-generation video encoding techniques for 360 video and VR | Engineering Blog | Facebook Code | Facebook
facebook/transform
インストール方法は Building に書いてあるので省略。
niconicoとffmpegのことを中心に書いてる
公式のフィルタではなく Facebook の github レポジトリで公開したフィルタ。
Next-generation video encoding techniques for 360 video and VR | Engineering Blog | Facebook Code | Facebook
facebook/transform
インストール方法は Building に書いてあるので省略。
HLS を利用した脆弱性に対応した ffmpeg 2.8.5 がリリースされた。公開サーバで ffmpeg を利用している人や、出所不明のファイルを読み込むときに脆弱性を利用してローカルにあるデータがリモートのサーバに送信される危険性があるので更新が必須である。
ちなみに--disable-protocol=hls
で HLS を無効化することもできる。
対応パッチ
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
集計期間は週間のニコ生統計の1ヶ月分である。2015年の1月の2週目から取得漏れの R-18 放送を含めて Vita API で取得し始めたのでそれ以前と比べて取得放送数が増えている。
2015年12月30日時点の公開チャンネルのデータ
データは Google スプレッドシートにて公開
個別課金のチャンネルは調べられないので空欄になる
チャンネルID しか表示していないチャンネルはリンクはあるが公開されていない
非公開チャンネルは 283、月額有料チャンネルは 801
https://docs.google.com/spreadsheets/d/147RrPYq4h5nS8Mc6qMW-JVRlD_PH0Xt5aIEwbF637KI
お気に入り登録数はこちらから:ニコニコチャンネル カテゴリ別のお気に入り登録数ランキング
API はこちらから:ニコニコAPIリストwiki – ch.info
集計期間は週間のニコ生統計の1ヶ月分である。2015年の1月の2週目から取得漏れの R-18 放送を含めて Vita API で取得し始めたのでそれ以前と比べて取得放送数が増えている。
集計期間は週間のニコ生統計の1ヶ月分である。2015年の1月の2週目から取得漏れの R-18 放送を含めて Vita API で取得し始めたのでそれ以前と比べて取得放送数が増えている。
今回も前回同様に修正がメインで新機能は追加されていない。ショートログを見ると分かるがあまりコミットされていない。
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 で生放送する方法 :: グレイン除去
追記ここまで
今までは-loop 1で画像の無限入力はできていたが、これからは音声や映像も無限に入力できるようになった。
公式ドキュメント:Main options : ffmpeg Documentation
FFMPEG: Why does the concat filter cause loss of a/v sync/lipsync? – Video Production Stack Exchange、FFmpeg concat video and audio out of sync – Stack Overflowより、-fflags +genptsを追加した。ループするファイルの入力オプションとして使う。1つの入力にフィルタでループなどして時間が長くなるなら出力オプションで使う。
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