集計期間は週間のニコ生統計の1ヶ月分である。2018年からカテゴリタグの割合は今までと変わらないが、1枠30分の割合が少なくなったので来場者数とコメント数の6000以上を除かないすべての放送を対象にした。それに伴い平均値は除外した。来場者数はTS視聴可能時間が来れば増え、TS来場者数を含まずに計算することは困難な仕様なので、翌日(当日)の朝に前日の6時から当日の6時までを取得している。
全放送を対象にしたので改めて以前の放送のデータを使って調べ直している。
niconicoとffmpegのことを中心に書いてる
集計期間は週間のニコ生統計の1ヶ月分である。2018年からカテゴリタグの割合は今までと変わらないが、1枠30分の割合が少なくなったので来場者数とコメント数の6000以上を除かないすべての放送を対象にした。それに伴い平均値は除外した。来場者数はTS視聴可能時間が来れば増え、TS来場者数を含まずに計算することは困難な仕様なので、翌日(当日)の朝に前日の6時から当日の6時までを取得している。
全放送を対象にしたので改めて以前の放送のデータを使って調べ直している。
Netflixが使っているエンコードされる前と後の動画の品質評価に使われている VMAF(Video Multimethod Assessment Fusion)スコアをffmpegで調べる。以前の記事に異なる解像度でも調べられると書いていたが間違いである。同じ解像度でないと調べられない。対応サブサンプリングは4:2:0、4:2:2、4:4:4になり、エンコード前後でピクセルフォーマットが異なるときは2入力目の参照元のファイルのピクセルフォーマットに変換される。外部ライブラリフィルタなので別途インストールが必要で--enable-libvmaf
を付ける。--enable-version3
はつけなくてもよくなった。vmaf v2.0.0以降をリンクしたffmpegではn_threadsでスレッド数を指定しないと処理速度が上がらない。
3. It relies on existing image quality metrics (VIF, DLM), properly modified to cover multiple scales of resolution, as well as the amount of motion between consecutive video frames in a video sequence as features that are input in a machine-learned set of weights. The final score is the result of combining these elementary features in a support vector machine (SVM) regressor.
3. VMAFは、既存の画質評価指標(VIF、DLM)を、複数の解像度に対応するように適切に修正したものと、連続するフレーム間の動きの量を、機械学習した重みをセットに入力する特徴を利用している。最終的なスコアは、これらの初歩的な特徴をサポートベクターマシン(SVM)の回帰分析と組み合わせた結果になる。
2022年1月24日のコミットでlibvmaf v2.0.0に対応しオプション指定を刷新した。`compute_vmaf()` is deprecated and will be removedのエラーは出なくなり、複数モデルのスコアを同時に調べられるようになっている。
今週の放送分から brightcove から boltdns に代わり master.m3u8 だと低ビットレートの 1080p になるのでこれを 720p に変更する。ダウンローダは youtube-dl と ffmpeg を使い2つとも同じフォルダに置いておく。-Fで調べたフォーマットを-fで指定する。音声フォーマットは 3つあるが、上から順にビットレートが 64k, 96k, 128k になるので3番目を指定する。master.m3u8 の調べ方は F12 で開発ツールを開き F5 でリロードし、動画を再生し、ネットワークタブに mas を入力すると master.m3u8 が見つかる。
youtube-dl: Download Page
Download FFmpeg
フォーマットの調べ方
youtube-dl "master.m3u8 の URL" -F
調べたフォーマットを-fで複数指定して保存する
youtube-dl "master.m3u8 の URL" -f 2005+audio-2-en__Main_ -o "output.mp4"
ffmpeg 単体のコマンド例
ffmpeg -i "master.m3u8 の URL" -map 0:5 -map 0:4 -c copy "output.mp4"
ffmpeg -i "master.m3u8 の URL" -map p:2 -c copy "output.mp4"
追記 2018年6月13日
放送局のサイトよりも GYAO! のほうがビットレートが高く、手軽だった。
白くなるところが真っ白になってなかったり、黒になるところが真っ黒になってないところを ffmpeg で補正する。方法はコントラストを上げて白はより白く、黒はより黒くする。今回は白黒ページの色補正だけでリサイズ(解像度を変える)、クロップ(指定範囲で切り取る)、デノイズは行わない。
自炊したときに JPG(PNG、BMP、TIFFでも可能)で出力したときに使える方法であり、PDFは ffmpeg では扱えない。一般的に Photoshop や GIMP を使う方法がよく紹介されているが、これらは一度 RGB にデコードして再度JPG出力するときに YUV に変換するので処理が遅くなりがちであるが、以下の方法は RGB 変換を挟まないので処理が早い。
v1 は対応してるが v2 はまだ対応してない
3DS版「ニコニコ」で使用しているAPIまとめ – nanowayより一部を抜粋
https://ext.nicovideo.jp/api/getthumbinfo/sm9
https://flapi.nicovideo.jp/api/getrelation?video=sm9
https://api.ce.nicovideo.jp/nicoapi/v1/video.relation?v=sm9
https://api.ce.nicovideo.jp/nicoapi/v1/video.info?v=sm9
https://api.ce.nicovideo.jp/api/v1/community.array?id=co1
https://api.ce.nicovideo.jp/api/v1/step.video.ranking?date=2017-11-13&type=daily(無効確認。2021年5月21日)
https://api.ce.nicovideo.jp/api/v1/session.create?__format=json(無効確認。2021年5月21日)
2018年2月28日 v2 の対応確認
コンテンツ検索API V2 について
ただし、ニコ生で重要な getplayerstatus は未対応。
2019年6月現在、字幕ファイルのダウンロードうまくできていない。字幕は動画をブラウザで開く前にデベロッパーツール(F12)を開いてNetworkでvttをフィルタすれば見つかる。現在の字幕ファイルはvttなので下のjsonからの変換が不要。
TED のプレゼンテーション動画をブラウザやアプリで見るときに字幕が選択できるが、これを ffmpeg で PC に保存し動画に合わせる方法。わざわざ字幕付き動画は公式から普通に保存できるが2言語の字幕付きの動画に変換する方法も併せて紹介する。
動画の保存方法は PC からは再生ページのプレイヤ右下の「Share」から動画、音声、字幕を焼き付けた(ハードサブ)動画が選択できる。字幕の保存方法は簡単な方法はないが、まずブラウザでソースコードを表示して「ted://talks/」の次に書いてある数字を控えておき字幕用のアドレスに記入する。プレイヤに日本語字幕が選択できなければもちろん保存は出来ない。昔は動画リンクから字幕IDは調べられたが調べられなくなっている。
日本語字幕用のアドレス(1234 の部分に上で調べた数値を記入)。英語の場合は末尾が eng。
https://www.ted.com/talks/subtitles/id/1234/lang/jpn
livestreamerがメンテナンスされなくなりその後継にstreamlinkが公開されている。基本コマンドはlivestreamerと同じで新しいオプションの追加や、サイト対応が行われている。Windows利用者で3.0.0以降に更新するときはconfigファイルを削除するか、configファイル内の最終行にあるrtmpdump指定のパスを削除する。
Twitch, Ustream, Youtube に対応した livestreamer の使い方
対応しているすべてのサイト一覧:Plugins — Streamlink documentation
日本から関係ありそうなのは、abema.tv, live.bilibili.com, dailymotion, live.line.me, mixer.com, nhk.or.jp/nhkworld, nicolive, openrec.tv, radiko.jp, showroom-live.com, sketch.pixiv.net, twitcasting.tv, twitch, vimeo, youtube。
1つのファイルにフィルタを使い分けたり、コピーしたり複数出力する方法のまとめ。ファイルからネットワーク越しに配信するときに「Past duration too large」のログが大量に発生するときは、-vsync passthrough -frame_drop_threshold 4を入力ファイルの後ろに指定する。
普通のコマンド。1入力を2度エンコードを行い2出力する。つまり負荷も2倍。コーデックやフィルタ指定してその後ろに出力ファイルの指定があるときは指定子はなくてもよい。
ffmpeg -i input.mp4 -movflags +faststart -c:v libx264 -c:a copy output1.mp4 -c:v libvpx-vp9 -c:a libopus output2.webm
ffmpeg -i input.mp4 -movflags +faststart -c:v:0 libx264 -c:a:0 copy output1.mp4 -c:v:1 libvpx-vp9 -c:a:1 libopus output2.webm
1入力で複数コピー出力するコマンド。
ffmpeg -i input.mp4 -c copy -movflags +faststart output1.mp4 -c copy -movflags +faststart output2.mp4
ffmpeg -i input.mp4 -c copy -map 0:v -map 0:a -movflags +faststart -flags +global_header -f tee "output1.mp4|output2.mp4"
2色のグラデーションにするにはnormalize
フィルタを使えばよいが、2色だけ、3色だけにするにはlutyuv, lutrgb
フィルタを使いこなすことで作ることが出来る。イメージとしては「ブラタモリ」のオープニングで見られる効果に似ている。
集計期間は週間のニコ生統計の1ヶ月分である。2018年からカテゴリタグの割合は今までと変わらないが、1枠30分の割合が少なくなったので来場者数とコメント数の6000以上を除かないすべての放送を対象にした。それに伴い平均値は除外した。来場者数はTS視聴可能時間が来れば増え、TS来場者数を含まずに計算することは困難な仕様なので、翌日(当日)の朝に前日の6時から当日の6時までを取得している。
全放送を対象にしたので改めて以前の放送のデータを使って調べ直している。