2019年1月のニコ生統計

集計期間は週間のニコ生統計の1ヶ月分である。2018年からカテゴリタグの割合は今までと変わらないが、1枠30分の割合が少なくなったので来場者数とコメント数の6000以上を除かないすべての放送を対象にした。それに伴い平均値は除外した。来場者数はTS視聴可能時間が来れば増え、TS来場者数を含まずに計算することは困難な仕様なので、翌日(当日)の朝に前日の6時から当日の6時までを取得している。

全放送を対象にしたので改めて以前の放送のデータを使って調べ直している。

2018年9月25日から2018年10月1日までの間、ログイン不要で生放送が見られるようになっているのでいつも以上に来場者数が多くなっている。

【10/1更新】【ニコニコ生放送】来場者数集計方法変更のお知らせ|ニコニコインフォ

Continue reading “2019年1月のニコ生統計”

2018年12月のニコ生統計

集計期間は週間のニコ生統計の1ヶ月分である。2018年からカテゴリタグの割合は今までと変わらないが、1枠30分の割合が少なくなったので来場者数とコメント数の6000以上を除かないすべての放送を対象にした。それに伴い平均値は除外した。来場者数はTS視聴可能時間が来れば増え、TS来場者数を含まずに計算することは困難な仕様なので、翌日(当日)の朝に前日の6時から当日の6時までを取得している。

全放送を対象にしたので改めて以前の放送のデータを使って調べ直している。

2018年9月25日から2018年10月1日までの間、ログイン不要で生放送が見られるようになっているのでいつも以上に来場者数が多くなっている。

【10/1更新】【ニコニコ生放送】来場者数集計方法変更のお知らせ|ニコニコインフォ

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

ニコ生を外部ツールで見ながら録画する

配信形式が RTMP から HLS に変わり同じアカウントで録画しながら配信を見ると片方が止まることがあるのでそれを回避する方法。今回はTSではなくライブ配信を対象とする。使用するツールは ffmpeg と ffplay で録画しながら tee プロトコルで UDP に配信している。別の配信を同時に配信する場合はポート番号の 8080 を変更する。

FFmpeg Formats Documentation : tee

ユーザー生放送のライブの RTMP はうまく受信できない。さらに HLS は直ぐにプレイリストにアクセスできなくなるのでコメントビューワを同時に起動して配信コメントを受信する。それでもアクセスできなくなり録画が中断することもあるし、セグメント欠けを起こすこともある。

Continue reading “ニコ生を外部ツールで見ながら録画する”

ニコ生旧配信TSの録画まとめ

2019年5月23日のメンテナンス以降の配信で getedgestatus で調べられる rtmp は廃止された。

2018年12月11日の昼過ぎの仕様変更により普通の方法では従来の Flash Player を使った配信が見られなくなった。しかし現在のところ Flash Player で見るのは完全にはふさがれていないので見る方法と保存方法、コメントとの同期についてのまとめ。

今までタイムシフト(TS)の保存と言えば kakorokuR が一般的で、他の作者も平行してlivedl、(仮 が開発されていたが公式のTSしか見ていない人には kakorokuR で十分だった。しかし kakorokuR、imarokuR が同時に使えなくなったので仕方なく他のツールを使う人が急増した。

livedl:livedl – 新配信(HTML5)に対応したニコ生録画ツール。他サイトにも対応 – himananiito’s diary
(仮:プログラムを作ってみるコミュニティ-ニコニコミュニティ

Continue reading “ニコ生旧配信TSの録画まとめ”

レンズ補正フィルタ lenscorrection

レンズ補正フィルタは他にperspectiveremapフィルタやfrei0rlensfunなどの外部フィルタがある。手動補正なのであらかじめレンズの視野(Field of View)を調べておくと設定が楽になる。魚眼レンズの修正もできる。

写真など傾いた対象を修正する perspective
ffmpeg で使える frei0r フィルタの使い方

基本コマンド

既定値での設定。k1, k2が0なので変化しない。
ffmpeg -i input -vf lenscorrection=cx=0.5:cy=0.5:k1=0:k2=0 output

video – Is there a way to remove GoPro fisheye using ffmpeg – Stack Overflowよりk1の計算方法。

GoPro 3 setting: 16 x 9 Widescreen :: H fov = 69.5 || V fov = 118.2 || Diag = 133.6
118.2 / 69.5 * 133.6 = 227.216, k1=227

GoPro のここでは HERO5 の FOV のデータが公開されている。
HERO5 Black の FOV (視野角) 情報より

垂直画角(V. FOV) 水平画角(H. FOV) 対角画角(Diag)
4 x 3 W 94.4 122.6 149.2
4 x 3 M 72.2 94.4 115.7
4 x 3 N 49.1 64.6 79.7
16 x 9 W 69.5 118.2 133.6
16 x 9 M 55 94.4 107.1
16 x 9 N 37.2 64.4 73.6

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

Continue reading “レンズ補正フィルタ lenscorrection”

2018年11月のニコ生統計

集計期間は週間のニコ生統計の1ヶ月分である。2018年からカテゴリタグの割合は今までと変わらないが、1枠30分の割合が少なくなったので来場者数とコメント数の6000以上を除かないすべての放送を対象にした。それに伴い平均値は除外した。来場者数はTS視聴可能時間が来れば増え、TS来場者数を含まずに計算することは困難な仕様なので、翌日(当日)の朝に前日の6時から当日の6時までを取得している。

全放送を対象にしたので改めて以前の放送のデータを使って調べ直している。

2018年9月25日から2018年10月1日までの間、ログイン不要で生放送が見られるようになっているのでいつも以上に来場者数が多くなっている。

【10/1更新】【ニコニコ生放送】来場者数集計方法変更のお知らせ|ニコニコインフォ

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

フィールドタイプや色域を記述するsetparams

ffmpeg 4.1から使えるフィルタ。フィルタ内のフィールドタイプや色域などの色情報を記述するsetparamsフィルタの使い方。 入力映像は変更しないがフィルタやエンコーダの処理方法に影響を与える。

まとめ:色関係の設定のまとめ

Continue reading “フィールドタイプや色域を記述するsetparams”

再エンコードせずに fps を変更する

Using ffmpeg to change framerate – Stack Overflowより、H.264, H.265 の映像を再エンコードせずにフレームレート(fps)を変更する方法。映像のフレームレートだけなので音声は再エンコードしないと速度を変えられない。音声の速度変更はatempo, rubberbandフィルタのどちらかを使う。

公式wikiにも記載された。
How to speed up / slow down a video – FFmpeg

【ffmpeg】倍速再生できる動画にエンコードする
サンプリング周波数を変えずにテンポとピッチを変える rubberband

元映像のフレームレートよりも入力フレームレートを大きくすれば再生速度は速く、動画時間は短くなる。反対に入力フレームレートを小さくすれば再生速度は遅く、動画時間は長くなる。同様に本当のフレームレートが30000/1001なのに、30でエンコードされている動画の修正にも使える。

H.264 の場合。
ffmpeg -i input.mp4 -c copy -bsf:v h264_mp4toannexb output.h264
ffmpeg -fflags +genpts -r 12 -i output.h264 -c copy output.mp4
ffmpeg -fflags +genpts -r 36 -i output.h264 -c copy output.mp4

音声も合わせるなら映像の速度に合わせてatempoも揃える。
ffmpeg -fflags +genpts -r 36 -i output.h264 -i input.mp4 -filter_complex [1:a]atempo=1.5[a] -map 0 -c:v copy -map [a] -c:a aac output.mp4

H.265 の場合。
ffmpeg -i input.mp4 -c copy -bsf:v hevc_mp4toannexb output.h265
ffmpeg -fflags +genpts -r 12 -i output.h265 -c copy output.mp4
ffmpeg -fflags +genpts -r 36 -i output.h265 -c copy output.mp4

video – Change framerate in ffmpeg without reencoding – Super Userより、-itsscaleを使う方法もある。こちらはH.264、H.265に限らず、VP9やAV1でもフレームレートを変えられる。

30を30000/1001に修正するには、30/(30000/1001)=1.001で少数を指定する。逆に音声フィルタはその逆数を指定する。
ffmpeg -itsscale 1.001001 -i input -af "rubberband=(30000/1001)/30" -r 30000/1001 -c:v copy -c:a aac -b:a 128k output.mp4

How do I speed up a video by 60X in ffmpeg? – Super User
video – using ffmpeg to convert 60fps to 29.97fps without dropping frames – Super User

ffmpeg 4.4からはビットストリームフィルタでPTSを書き換えられるようになったので再エンコードコード不要で映像の再生速度を変更できる。以下の例は2倍速。setts=TS/再生速度で指定する。
ffmpeg -i input -af "atempo=2" -bsf:v setts=ts=TS/2 -c:v copy output

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

映像と音声の pts を扱う setpts, asetpts

PTSを変更することで再生速度を上げたり下げたり、複数のファイルを合わせたりするときにPTSを揃えたりするのに使うsetpts、asetptsフィルタの使い方。音声の速度変更にはrubberbandフィルタを使う方法もある。

サンプリング周波数を変えずにテンポとピッチを変える rubberband

FFmpeg 7.0からsetptsフィルタを通して映像を出力するとフレームレートが25に上書きされるので、fpsフィルタか、出力オプションの-rとfps数、または-fps_mode passthroughを追加する。

Ffmpeg: concatenate videos and keep framerate the same – Super User

24000/1001 fpsで出力する例。
-vf setpts=PTS-STARTPTS,fps=24000/1001
-vf setpts=PTS-STARTPTS -r 24000/1001

lavf/vf_setpts: unset output framerate · FFmpeg/FFmpeg@f121d95 · GitHub

アニメGIFの速度調整は-itsscaleで1/倍速を小数で指定する。
再エンコードせずに fps を変更する

PTSとDTSの生成

CTS(Composition Time Stamp)について。
timestamp – Different PTS values in ffmpeg and MP4 CTS values obtained using ctts and stts – Stack Overflow

ffmpeg 4.4からはビットストリームフィルタでPTSを書き換えられるようになったので再エンコードコード不要で映像の再生速度を変更できる。
ffmpeg -i input -af "atempo=2" -bsf:v setts=ts=TS/2 -c:v copy output

出力フレームレートを29.97fpsに変更する。
ffmpeg -i video -bsf:v setts=dts=N/((30000/1001)*TB):pts=PTS+N/((30000/1001)*TB)-DTS -c:v copy output

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

基本コマンド

PTSを0リセットする。
ffmpeg -i input -filter_complex setpts=PTS-STARTPTS -c:a copy output

再生速度を2倍にする。
ffmpeg -i input -filter_complex setpts=(PTS-STARTPTS)/2;atempo=2 output

再生速度を半分にする。
ffmpeg -i input -filter_complex setpts=2*(PTS-STARTPTS);atempo=0.5 output

【ffmpeg】倍速再生できる動画にエンコードする

2つの映像のPTSをリセットして縦に並べる。
ffmpeg -i input1 -i input2 -filter_complex [0:v]setpts=PTS-STARTPTS[v0];[1:v]setpts=PTS-STARTPTS[v1];[v0][v1]vstack output

公式ドキュメント:FFmpeg Filters Documentation : setpts, asetpts

Continue reading “映像と音声の pts を扱う setpts, asetpts”

透過部分だけに色を付ける

Replace transparent pixels (alpha) with black in ffmpeg? – Stack Overflowより、透過情報のある画像、または映像に透過部分を別の色に変えて透過情報を消すコマンド。

透過部分に映る色をcolor=blackで指定するか、FFFFFF形式の RGB で指定する。
ffmpeg -i in.png -filter_complex "color=black,format=rgb24[c];[c][0]scale2ref[c][i];[c][i]overlay=format=auto:shortest=1,setsar=1" out.png
ffmpeg -i in.png -filter_complex "color=000000,format=rgb24[c];[c][0]scale2ref[c][i];[c][i]overlay=format=auto:shortest=1,setsar=1" out.png