2019年5月のニコ生統計

2017年1週目から2019年10週目までの取得漏れが判明し、毎週土曜日の放送開始0時から6時までの6時間が入ってなかった。気がついたのが2019年11週目で月間統計は過去のデータを修正したが過去記事は修正してない。

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

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

2019年4月のニコ生統計

2017年1週目から2019年10週目までの取得漏れが判明し、毎週土曜日の放送開始0時から6時までの6時間が入ってなかった。気がついたのが2019年11週目で月間統計は過去のデータを修正したが過去記事は修正してない。

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

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

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

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

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

2019年3月のニコ生統計

2017年1週目から2019年10週目までの取得漏れが判明し、毎週土曜日の放送開始0時から6時までの6時間が入ってなかった。気がついたのが2019年11週目で月間統計は過去のデータを修正したが過去記事は修正してない。

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

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

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

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

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

メンテナンスの顛末

当初はスターサーバーの無料サーバーを使っていて、これをスタードメイン無料特典の無料サーバーに切り替えて、常時httpsに変更するメンテナンスを行った。サーバーが変わり容量も10GBから3GBに変更され、すべてのファイルも入れ替えとなった。インストールも無事終わりプラグイン設定やftpに上げ直し一段落してブログを表示するとエラーが出る。SSL のエラー(ERR_CERT_COMMON_NAME_INVALID、SSL_ERROR_BAD_CERT_DOMAIN)が出て引っ越す前の状態に戻るときと、引っ越した後でSSLのエラーが出ないときと表示が直ったり直らなかったりを繰り返した。

運営に問い合わせると無料サービスなので回答を得られない。質問を変え3度問い合わせると「nico-lab.net」のDNSレコードがスターサーバーの無料サーバーとスタードメイン無料特典の無料サーバーを重複登録しているのを教えてもらった。ありがとう。というわけで、昔使っていたスターサーバーの無料サーバーを削除してエラーはなくなった。

ご契約特典:無料レンタルサーバープラン / スタードメイン – ドメイン取得 1,180円(税抜)~
無料独自SSL設定ガイド | レンタルサーバー【スターサーバー】
Webサイトの常時SSL化 | レンタルサーバー【スターサーバー】

メンテナンスのお知らせ

明日2019年3月31日の朝10時頃からメンテナンスを行う。表示が崩れたり表示できなかったりする。終了時刻は未定。2019年4月1日時点でも表示に不具合がある。

追記 2019年4月1日、20時42分
https の表示も安定し、http は https にリダイレクトするようにした。

追記 2019年4月1日、22時39分
表示が安定したかと思ったが、SSL のエラーが出ることがある。もう少し様子を見る。

追記 2019年4月5日、23時03分
今度こそ表示が安定しているはず。

ffmpeg で指定時間でカットするまとめ

グレーはカットしない、つまり出力する部分で、ブラックがカットする部分。-c copyすれば無劣化になり、コーデックを指定すれば再エンコードになる。[duration]、[front-duration]、[back-duration]は秒時間指定と、hh:mm:ss.ms指定ができる。4番目はプレイヤで再生しているときの再生時間でカットするのに便利なコマンド。実際に時間を指定するときには[]を省略して秒指定、hh:mm:ss.ms指定する。

こちらも参照:

Continue reading “ffmpeg で指定時間でカットするまとめ”

映像の黒枠の場所を検出する cropdetect

映像の黒枠を検出してcropフィルタで使う引数を返すcropdetectフィルタの使い方。

基本コマンド

ffmpeg -i input -vf cropdetect -an -f null -
ffplay -i input -vf cropdetect

metadataフィルタを使ってテキストに出力する方法もある。
ffmpeg -i input -vf cropdetect,metadata=mode=print:file=foo.txt -an -f null -

1枚画像のときはskip=0を指定する。
ffmpeg -i img.jpg -vf cropdetect=skip=0 -f null -

運用例。
ffplay -f lavfi -i color=white -vf fillborders=0:0:32:16:2,cropdetect
ffplay -f lavfi -i color=white -vf fillborders=0:0:32:16:2,crop=320:192:0:32

以下のようなログが1フレーム毎に流れる。

x1:0 x2:319 y1:32 y2:223 w:320 h:192 x:0 y:32 pts:2 t:0.080000 crop=320:192:0:32
  • x1, x2 は黒枠を除外した横座標の開始と終了ピクセルで、0ピクセル開始
  • y1, y2 は黒枠を除外した縦座標の開始と終了ピクセル、0ピクセル開始
  • w, h, x, y はcropフィルタで指定する引数

埋め込まれたビデオ領域を見つけ、事前にモーション ベクトルを生成する。
ffmpeg -i input -vf mestimate,cropdetect=mode=mvedges,metadata=mode=print -an -f null -

埋め込まれたビデオ領域を見つけ、デコーダからのベクトルを使用する。
ffmpeg -flags2 +export_mvs -i input -vf cropdetect=mode=mvedges,metadata=mode=print -an -f null -

関連フィルタ

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

Continue reading “映像の黒枠の場所を検出する cropdetect”

映像を指定座標に切り取る crop

映像を指定座標に切り取るcropフィルタの使い方。出力解像度はフレーム毎に変更できないがクロップする場所はフレーム毎に変更できる。

Continue reading “映像を指定座標に切り取る crop”

映像に余白を追加する pad

余白を追加することで、別のアスペクト比の映像に手軽に変換できる。ただし出力解像度が奇数になるとピクセルフォーマット次第で余白がずれたり、エンコードエラーになる。

リサイズする scale
映像を指定座標に切り取る crop

Continue reading “映像に余白を追加する pad”

mp4, mp3, flacにカバーアートを付ける

カバーアートを付けるとエクスプローラにサムネイルが表示、変更できる。

H.264だとサムネイルが表示されるが、H.265だと表示されないのがこれで表示できる。サムネイルはPNG、BMPでも可能。コメントの通りに指定方法が間違っていたので修正。
ffmpeg -i movie.mp4 -i thumb.jpg -map 0:v -map 0:a -map 1:v -c copy -disposition:2 attached_pic movie-with-cover.mp4

MP3の場合。
ffmpeg -i audio.mp3 -i thumb.jpg -map 0:a -map 1:v -c copy -disposition:1 attached_pic -id3v2_version 3 -metadata:s:v title="Album cover" -metadata:s:v comment="Cover (front)" audio-with-cover.mp3

mp3のタグ編集を行う際にID3v1とID3v2とAPEがあるんですが、それぞれ何か役割や違いがあるのでしょうか? – Yahoo!知恵袋

アルバム名やアーティスト名はメタデータとして追加できる。
ffmpeg でメタデータを加える

Flacの場合。
ffmpeg -i audio.flac -i thumb.png -map 0:a -map 1:v -c copy -disposition:1 attached_pic audio-with-cover.flac

動画ファイルから時間指定でシーンを選んでカバーアートつきのMP3ファイルを出力することも出来る。以下のコマンド例は開始10秒のシーンをアスペクト比保持して横幅320ピクセルのカバーアートになる。
ffmpeg -i movie.mp4 -vf trim=start='00\:10.000',trim=end_frame=1,setpts=0,scale=320:-1 -map 0:v -map 0:a -c:v:0 mjpeg -disposition:0 attached_pic audio-with-cover.mp3

MKVコンテナにJPGを添付する。
ffmpeg -i "mkv_without_cover.mkv" -attach "art_cover.jpeg" -map 0:a -c copy -metadata:s:t mimetype="image/jpeg" -metadata:s:t:0 filename="cover.jpeg" "mkv_with_cover.mkv"

disposition の設定

音声が2つ以上あるときに再生したとき最初に流れる音声を代えられる。ただしMP4コンテナには使えない。

2番目の音声を最初に再生するコマンド例。
ffmpeg -i movie.mp4 -map 0:v -map 0:a -c copy -disposition:a:0 0 -disposition:a:1 default output.mkv

2番目の音声を最初に再生し字幕も同様にするコマンド例。
ffmpeg -i movie.mkv -map 0 -c copy -disposition:a:0 0 -disposition:a:1 default -disposition:s:0 0 -disposition:s:1 default output.mkv

ffmpeg Documentation : Main options
-disposition[:stream_specifier] value (output,per-stream)
具体的にそれぞれにどのような効果があるのか分からない。

  • default
  • dub
  • original
  • comment
  • lyrics
  • karaoke
  • forced
  • hearing_impaired
  • visual_impaired
  • clean_effects
  • attached_pic
  • captions
  • descriptions
  • dependent
  • metadata

ちなみにこちらもMKVコンテナに限るが、追加した字幕ファイルを再生したときに最初から表示することもできる。普通にremuxすると字幕は最初から表示してくれない。
ffmpeg -i movie.mp4 -i sub -c copy -disposition:s:0 default sub-default.mkv

最初の字幕にデフォルトフラグを付けず再生時に字幕を表示させないようにするには-default_mode infer_no_subsをつける。
ffmpeg -i input.mkv -map 0 -default_mode infer_no_subs output.mkv

-default_mode[int]
-dispositionのフラグの制御

  • 0, infer:dispositionの既定値の各トラックを既定値としてマークする。1つもないときは最初のトラックを既定値としてマークする
  • 1, infer_no_subs:dispositionの既定値の各トラックを既定値としてマークする
  • 2, passthrough:dispositionフラグに従う。既定値