ニコ生のTSから一定時間毎に画像を出力する

以前の記事 【ffmpeg】動画から特定フレームを画像で出力する方法 から発展して、ニコ生の映像に再生時間を載せつつ画像で出力することで内容が一目でわかり管理が楽になる方法。

この方法でメリットが有るのは映像に変化がある放送であり、画像1枚の放送では全くメリットがない。ゲーム実況やウェブカメラ配信、お絵かき放送など映像が刻々と変わる放送である。画像の出力には ffmpeg を使用する。

使用する ffmpeg : Zeranoe FFmpeg - Builds
namaroku や kakoroku に同梱されている ffmpeg でもよいが、64bit OS では1割程度速度が早くなるので64bit版の ffmpeg を利用する。

OS に合わせて Download FFmpeg git--***** 32-bit Static か Download FFmpeg git--***** 64-bit Static を保存する。解凍できない場合は 7-Zip などを使う。

基本コマンド
200秒毎に画像を 3x3 の1枚で出力する。1枠の場合9枚となり丁度1枚の画像に収まる
ffmpeg -i "nicolive_ts.flv" -vf "drawtext=fontfile='C\:/Windows/Fonts/msgothic.ttc': fontsize=16: fontcolor=yellow@0.9: shadowcolor=black@0.6: shadowx=-2: shadowy=-2: timecode='00\:00\:00\:00': r=24: x=10: y=10, select=isnan(prev_selected_t)+gte(t-prev_selected_t\,200), scale=1/2*iw:-1, tile=3x3" -an -y -vsync 0 img%02d.jpg

基本コマンドを元にそれぞれのオプションの説明


  • -i "nicolive_ts.flv"
    入力ファイル名。ffmpeg とは別の場所の場合は絶対パスか相対パスを指定する
  • -vf "drawtext から tile=3x3" まで
    映像にフィルタを当てて画像として出力する。以下で説明
  • drawtext=fontfile=...: fontsize=16: ... x=10: y=10, まで
    drawtext フィルタの指定方法。drawtext は文字を映像に載せるフィルタ。ここでは動画時間を表示させる。詳しい内容は以下で説明。普通に文字を表示させる方法は、Windows の ffmpeg で生放送する方法 : テキスト を参照
  • fontfile='C\:/Windows/Fonts/msgothic.ttc'
    フォントの指定で MSゴシックを使って文字を書く。このように絶対パスではなく、フォントファイルを ffmpeg と同じ所にコピーしても使える
  • fontsize=16
    フォントサイズの指定。規定値は 16 ピクセル
  • fontcolor=yellow@0.9
    フォントの色指定。@0.9 は透過指定で 1 が透過なし。0 で透明になる。規定値は黒の透過指定なし。
    フォントの色は名前を直接指定する方法とカラーコードを指定する方法がある
    HTML,CSS カラーコード一覧表 | 背景色や文字色の設定 を参照
    fontcolor=yellow@0.9 と fontcolor=FFFF00@0.9 は同じ色になる
  • shadowcolor=black@0.6
    影付きの色指定と透過指定。影付きを指定しない場合は何も書かなくても良い。同様に透過も不要ならば書かなくても良い
  • shadowx=-2: shadowy=-2
    影をどの方向に付けるかの指定。x が横軸で + が右方向。y が縦軸で + が下方向。- はその逆になる
  • timecode='00\:00\:00\:00'
    時間表示方法。hh:mm:ss[;.:]ff (時間:分:秒:フレーム)形式になっている
    '00\:00\:00\;00' と '00\:00\:00\.00' は同じ
    '00\:00\:00\:00' は上と異なる
  • r=24
    フレームの1秒あたりの描写枚数。動画フレーム数と一致させないと上の timecode と実際の再生時間が一致しない。小数点や分数は指定できない
  • x=10: y=10
    timecode の描写座標。x=0: y=0 が左上隅で x が横軸で + が右方向。y が縦軸で + が下方向。- はその逆になる
  • select=isnan(prev_selected_t)+gte(t-prev_selected_t\,200)
    最後の 200 が重要で 200秒毎に画像を出力する。秒数を変更するときはこの値を変更する
    詳しい仕様 : FFmpeg documentation : : 11.1 aselect, select
  • scale=1/2*iw:-1
    画像をリサイズする。リサイズしない場合は不要。この場合横幅を半分にしてアスペクト比を固定して縦幅もリサイズする。直接解像度を指定することもでき、 scale=320:180 は 320x180 にリサイズする
  • tile=3x3
    一枚画像に何枚の画像を貼り付けるかの設定。規定値は 8x8
    貼り付けられる順番は左上から右下の順番
  • -an
    画像を出力するので音声を無効にする
  • -y
    同名のファイルが有るとアラートなしに上書きする
  • -vsync 0
    映像のズレが出ないようにするおまじない
  • img%02d.jpg
    img がファイル名の接頭詞になり、%02d が 00 から始まる連番。%03d であれば 000 から始まる連番。.jpg が出力形式。png や bmp でも可能
  • 「:」「,」 の違い
    フィルタを繋ぐ場合に使われ、「:」は同じフィルタに複数のオプションを指定する
    「,」は異なるフィルタを指定する


秒数指定ではなく、映像がよく動いたシーン(Iframe)だけを出力する


select=isnan(prev_selected_t)+gte(t-prev_selected_t\,200) を
select=eq(pict_type\,I) に変更する。ただし出力画像枚数は増える。

コマンドを実行するには cmd.zip を保存し ffmpeg と同じフォルダ内に解凍して、cmd を実行し、コマンドをコピペすればコマンドラインから ffmpeg を実行できる。

上のコマンドを実行すれば画像が出力されるが、どのように時間が表示されるか ffplay を使ってプレビューできる

基本コマンド
ffplay -f lavfi -i color=c=black:s=640x360:r=60 -vf "drawtext=fontfile='C\:/Windows/Fonts/msgothic.ttc': fontsize=64: fontcolor=white@0.9: shadowcolor=yellow@0.6: shadowx=-2: shadowy=-2: timecode='00\:00\:00\:00': r=60: x=10: y=10"

上のコマンドと違うところの説明
  • -f lavfi -i color=c=black:s=640x360:r=60
    背景となる映像の指定で、色(color=c)や解像度(s)、フレーム数(r)を指定する
  • select=isnan(prev_selected_t)+gte(t-prev_selected_t\,200), scale=1/2*iw:-1, tile=3x3" 以下
    これらを入力しないのは時間表示を進ませるためと、画像出力しないため


タイマーを動画として出力する


基本コマンド。読みやすいようにフォントサイズを大きくしている
ffmpeg -f lavfi -i color=c=black:s=640x360:r=60:d=20 -vf "drawtext=fontfile='C\:/Windows/Fonts/msgothic.ttc': fontsize=64: fontcolor=white@0.9: shadowcolor=yellow@0.6: shadowx=-2: shadowy=-2: timecode='00\:00\:00\:00': r=60: x=10: y=10" out.flv

d=20 は動画時間(秒)。ffplay では機能しない



FFMPEG Launcher でのタイマー表示方法


高度な設定 < 共通設定 < 映像 < フィルタを有効にする
注意点は r を配信フレームレートと一致させる

コマンド例
drawtext=fontfile='C\:/Windows/Fonts/msgothic.ttc': fontsize=16: fontcolor=white@0.9: shadowcolor=yellow@0.6: shadowx=-2: shadowy=-2: timecode='00\:00\:00\:00': r=24: x=10: y=10
ffmle_timer_min.png
関連記事

この記事へのコメント

管理人のみ通知 :

トラックバック


ニコニコチャンネル始めました
ニコラボチャンネル
スポンサード リンク
THE IDOLM@STER THE@TER ACTIVITIES 03
THE IDOLM@STER THE@TER ACTIVITIES 03

Fate/EXTELLA REGALIA BOX for PlayStation (R) 4 【初回限定特典】ネロ・クラウディウス、アルトリア・ペンドラゴン衣装「純真のナイトドレス」プロダクトコード付+【Amazon.co.jp限定特典】アルテラ衣装「スイートデビル」プロダクトコード配信 - PS4
Fate/EXTELLA REGALIA BOX for PlayStation (R) 4 【初回限定特典】ネロ・クラウディウス、アルトリア・ペンドラゴン衣装「純真のナイトドレス」プロダクトコード付+【Amazon.co.jp限定特典】アルテラ衣装「スイートデビル」プロダクトコード配信 - PS4

妖怪ウォッチ くったりぬいぐるみだニャン ジバニャン
妖怪ウォッチ くったりぬいぐるみだニャン ジバニャン

Fate/EXTELLA VELBER BOX 【初回限定特典】ネロ・クラウディウス、アルトリア・ペンドラゴン衣装「純真のナイトドレス」プロダクトコード付+【Amazon.co.jp限定特典】アルテラ衣装「スイートデビル」プロダクトコード配信 - PS4
Fate/EXTELLA VELBER BOX 【初回限定特典】ネロ・クラウディウス、アルトリア・ペンドラゴン衣装「純真のナイトドレス」プロダクトコード付+【Amazon.co.jp限定特典】アルテラ衣装「スイートデビル」プロダクトコード配信 - PS4

Fate/EXTELLA REGALIA BOX for PlayStation (R) Vita 【初回限定特典】ネロ・クラウディウス、アルトリア・ペンドラゴン衣装「純真のナイトドレス」プロダクトコード付+【Amazon.co.jp限定特典】アルテラ衣装「スイートデビル」プロダクトコード配信 - PS Vita
Fate/EXTELLA REGALIA BOX for PlayStation (R) Vita 【初回限定特典】ネロ・クラウディウス、アルトリア・ペンドラゴン衣装「純真のナイトドレス」プロダクトコード付+【Amazon.co.jp限定特典】アルテラ衣装「スイートデビル」プロダクトコード配信 - PS Vita

【早期購入特典あり】初音ミクシンフォニー~Miku Symphony 2016~オーケストラ ライブ CD(初音ミクシンフォニー描き下ろしクリアファイル付き(ランダム配布))
【早期購入特典あり】初音ミクシンフォニー~Miku Symphony 2016~オーケストラ ライブ CD(初音ミクシンフォニー描き下ろしクリアファイル付き(ランダム配布))

「うたわれるもの 偽りの仮面&二人の白皇」歌集(初回限定盤)
「うたわれるもの 偽りの仮面&二人の白皇」歌集(初回限定盤)

TVアニメ『ラブライブ!サンシャイン!!』挿入歌シングル「想いよひとつになれ/MIRAI TICKET」
TVアニメ『ラブライブ!サンシャイン!!』挿入歌シングル「想いよひとつになれ/MIRAI TICKET」

『刀剣乱舞-花丸-』 歌詠集 其の三 特装盤
『刀剣乱舞-花丸-』 歌詠集 其の三 特装盤

本好きの下剋上~司書になるためには手段を選んでいられません~第一部 「本がないなら作ればいい3」
本好きの下剋上~司書になるためには手段を選んでいられません~第一部 「本がないなら作ればいい3」

新着記事と追記・編集記事
スポンサード リンク
ブログ内検索
プロフィール

Author:ロベルト
お問い合わせはこちらまで
robelt2525[at]gmail.com

中の人 @nico_lab
ブログ更新用 @blo_nico_lab

詳しいプロフィールはこちら

カテゴリ
アクセスの多い記事
記事アーカイブ

最新コメント
リンク
ニコニコ静画
アニメカテゴリ毎時ランキング
免責事項
当ブログはリンクフリーです。記事によりトラブルが生じた場合でも、当ブログ管理人は一切の責任を負いません。 当ブログに記載されている情報の正誤や利用は、ご自身の判断でお願いします。 紹介したアプリケーションに関する問い合わせは作者に問い合わせてください。ニコニコ動画に関する質問はまずは公式掲示板、2ch、各Q&Aサイトを参照ください。
ブログの読者になる(RSS)
アクセス数