Top / 設定 / WebM配信

WebM配信

WebM(VP8)配信

ここでは PeerCastStation と FFmpeg と Icecast を使って配信用に動画をエンコードする設定を説明します。
WebMのビデオコーデックはVP8とVP9があります。それぞれで使えるプレーヤーが違います。
まだまだ、配信者とリスナー共に、模索中ということをご理解下さい。
WebMで視聴・配信して気づいたことがあればwikiを更新してもらえると非常に嬉しいです。


WebM(VP8)配信の特徴

WebM(VP8)配信の利点

WebM(VP8)配信 現時点での問題点

WebM(VP8)配信の視聴方法

WebM配信(VP8)の視聴は下記のプレイヤーを使用します。現時点ではmpvが一番オススメです。(mpvは自動再接続機能に対応しておりキャッシュが残りません。)
これ以外でもmpvの再生エンジンを持つソフトなら再生できるかも知れません。
WMP/pcwmpでの再生を確認しました。(自動再接続機能に対応しているが、キャッシュが残る。)

mpv

Windows版のmpvの公式サイト
http://mpv.srsfckn.biz/
※更新が頻繁にされています。最新版へのこまめなチェックよろしくお願いします。

mpvの公式サイト
http://mpv.io/

PeCaRecorderの設定は
C:\Program Files\mpv\mpv.exe
引数 -{ av://lavfi:color -length 1 -} "$x" -title "$0"
タイプ WEBM
FLVにも対応させたい時は
C:\Program Files\mpv\mpv.exe
引数 -{ av://lavfi:color -length 1 -} "$x" -title "$0"
タイプ FLV
WMVにも対応させたい時は
C:\Program Files\mpv\mpv.exe
引数 -{ av://lavfi:color -length 1 -} "mms$y" -title "$0"
タイプ WMV
「リレーに接続してから起動する」をチェック
pcypLiteの設定は
C:\Program Files\mpv\mpv.exe
引数 -{ av://lavfi:color -length 1 -} "<stream/>" -title "<channelname/>"
拡張子 WEBM
FLVにも対応させたい時は
C:\Program Files\mpv\mpv.exe
引数 -{ av://lavfi:color -length 1 -} "<stream/>" -title "<channelname/>"
タイプ FLV
pcmp+の設定は
C:\Program Files\mpv\mpv.exe
引数 -{ av://lavfi:color -length 1 -} "<stream />" -title "<channelname />"
タイプ WEBM
FLVにも対応させたい時は
C:\Program Files\mpv\mpv.exe
引数 -{ av://lavfi:color -length 1 -} "<stream />" -title "<channelname />"
タイプ FLV

mpv.exeではなくmpv.comにするとmpvのログが見れます。

デフォルトだとストリーミングに接続してからウィンドウが立ち上がりますが、
引数の-{ av://lavfi:color -length 1 -}を付けるととウィンドウが立ち上がってからストリーミングに接続するようになります。

YPビューアで上記の通り設定しても他のプレイヤーがMKVやWebMに関連付けられていると他のプレイヤーが起動してしまうので、
そういう時は他のプレイヤーのMKVやWebMの関連付けを外すと設定したプレイヤーを起動することが出来ます。

MKVとWebMの設定は同じですが、拡張子・タイプのところにMKVとWebMを一緒に入力しないでください。別々に設定してください。

mpvフォルダに以下のmpv.confとinput.confの設定ファイルを置くことによりカスタマイズ可能
自分でわかりやすいように#の後ろに説明文を書くことができますので、日本語の説明部分までコピペしても大丈夫です。

input.conf
MOUSE_BTN1 cycle mute    #中クリックでミュート切り替え
MOUSE_BTN2 ignore        #右クリック(一時停止)を無視
MOUSE_BTN3 add volume 5  #マウスホイール上で音量を上げることができます。
MOUSE_BTN4 add volume -5 #マウスホイール下で音量を下げることができます。
SPACE ignore             #スペース(一時停止)を無視
UP ignore                #上ボタン(1分先送り)を無視
DOWN ignore              #下ボタン(1分巻戻し)を無視
LEFT ignore              #左ボタン(5秒巻戻し)を無視
RIGHT ignore             #右ボタン(5秒先送り)を無視
p ignore                 #pボタン(一時停止)を無視
mpv.conf
hwdec=auto   #ハードウェアデコードを有効
vo=opengl-hq #ビデオドライバをopengl-hqにする
loop=inf     #プレイリストをループする※接続が切れても再接続をする
no-osc       #オンスクリーンコントローラーを無効

mpv.confにontopを付けるかSHIFT+Tで最前面表示をONに出来ます。

#no-oscにすることにより、mpvプレーヤーで遅延状況を確かめることができます。
Cache 2s-○○KB/MBと表示されます。安定しているときは大体の平均は300KB以下です。
MBになっている場合遅延が発生しています。
その時はプレイヤーを開き直すかEnterキーを押すと遅延を小さくできます。

mpv.confにborder=noをつけるとフレーム無しになります。しかしウィンドウサイズを自由に変更することができません。プレーヤーを閉じるときはQを押してください。

またluaを使って機能を拡張することも可能です
例 自動再接続のlua mpv.confでloop=inf必須
プレイヤーがアイドル状態が20秒続くと自動的に再接続します
方法は以下の2つあります。

  • mpvフォルダの中に「scripts」という名前のフォルダを作成してください。そしてscriptsフォルダの中にreconnect.luaを入れてください。
  • mpv.exeと同じフォルダにreconnect.luaを入れて引数に-script "reconnect.lua"を追加して下さい
reconnect.lua
local timer = mp.get_time()
mp.add_periodic_timer(1, (function()
  if mp.get_property_bool("core-idle") then
    if mp.get_time() - timer >= 20 then
      timer = mp.get_time()
      print("reconnect")
      mp.commandv("playlist_next")
    end
  else
    timer = mp.get_time()
  end
end))

input.conf/mpv.conf/recconect.luaをzipにしました。以下よりダウンロードできます。
https://kie.nu/2mFO

mpvのマニュアル
http://mpv.io/manual/master/

mpvはキャッシュが残りません。

mpv使用中はディスクへの書き込みがありませんでしたが、アプリを終了するとディスク活動中のプロセスにでてきた。アプリ終了したらディスクに負担かかる?

VLC media player

VLC media playerの公式サイト
https://www.videolan.org/vlc/

PeCaRecorderの設定は
C:\Program Files (x86)\VideoLAN\VLC\vlc.exe
引数 "$x" --loop --meta-title "$0"
タイプ WEBM
pcypLiteの設定は
C:\Program Files (x86)\VideoLAN\VLC\vlc.exe
引数 "<stream/>" --loop --meta-title "<channelname/>"
拡張子 WEBM
pcmp+の設定は
C:\Program Files (x86)\VideoLAN\VLC\vlc.exe
引数 "<stream />" --loop --meta-title "<channelname />"
タイプ WEBM

VLCの詳細設定(設定の表示「すべて」にチェックを入れる)の入力/コーデックにあるデマルチプレクサをダブルクリック。matroskaの所のダミー要素にチェックを入れるとWebM配信を再生出来ます。
コマンドの引数に--loopを入れてますがこれを入れていると止まっても再接続されます。

VLCもキャッシュが残りません。

WebM for IE9

pcwmp/WMPでWebM(VP8)を視聴するにはWebM for IE9をインストールしてください。 WebM for IE9のDLはコチラから
配信者さんの設定でffmpegの-gオプションを低くすれば安定して接続できるようになりますが、下げた分だけビットレートが上がります。

PeCaRecorderの設定は
C:(pcwmp/WMPの場所)
引数 "$x" "$0"
タイプ WEBM
pcypLiteの設定は
C:(pcwmp/WMPの場所)
引数 "<stream/>" "<channelname/>"
拡張子 WEBM

WebM(VP8)配信の配信方法(ffmpegとIcecastを使う場合)

事前準備

PeerCastStation導入

サーバー用ソフト(Icecast)導入

Icecastの設定と起動

エンコーダー(FFmpeg)の導入

コマンドのつなぎ方を学ぼう!(VP8編)]

PeercastWebM(VP8)配信でよく使うコマンド(ここを読んでおくと、wikiを見ずに自分で設定できるようになります。)

アプリを起動する順番

Icecastを起動
      ↓
FFmpegでIcecastにpush送信
※ここを設定する前にコマンドのつなぎ方を学ぼう!(VP8編)PeercastWebM(VP8)配信でよく使うコマンドを読んでおいてください。
      ↓
PeerCastStationでチャンネルの作成
      ↓
SCFFを起動

  • △鉢はどちらから先に実行してもかまいません。Icecastを先に起動しないとffmpegがエラーを出します。
  • SCFFを使うときの注意点があります。エンコーダーを止めて再びエンコーダーを起動すると、SCFFはdrag here状態になってしまいます。
    一度エンコーダーをきってまたエンコーダーを起動する場合は、エンコーダーを起動した後にSCFFの「refresh」ボタンを押してください。
    これで正常に画面をキャプチャできると思います。配信画面を確かめてみてください。
  • SCFH DSFを使う場合正常に作動しない場合があります。もしそのような場合SCFFをダウンロードしてください。

アプリを終了する順番

SCFF
 ↓
ffmpeg
 ↓
PeerCastStation
 ↓
Icecast

  • ffmpegのコマンドプロンプトを右上の[×]から強制終了させると使用しているDirectShowが開放されません。
    結果的にSCFFの使用中プログラム一覧に居座ります。キーボードのQを押してエンコードをQuitしてください。

PeerCastStation導入

  • Peercast(PP版、VP版、IM版)は配信でmkvを認識しないため、PeercastStation(2014年12月時点の最新verは1.8.0)を導入して下さい。
    1.6.1から、最大上り帯域(初期値0kbps)の値を、適切な値に設定しないとリレーが構築されないので、しっかりとヘルプを見て設定すること。

サーバー用ソフト(Icecast)導入

WMEの場合は単体でエンコーダーとサーバーを兼ねていましたがFFmpegにその機能はありません。
そこでPeerCastStationによるhttpのpull要求に対しデータの送信を行えるソフトが必要になります。

  • FFmpegでデータをpushする場合はIcecastが必要になります。
    IcecastのDLはこちらをクリックしてください。
    • 「icecast_win32_2.4.1.zip」をクリックしてDLします。

エンコーダー(FFmpeg)の導入

  • FFmpegのDLはこちら
    • 「just download the 32-bit static builds.」をクリックしてDLします。

ffmpeg64bitでも配信できます。64bitのffmpegは高付加のとき32bitより負荷が軽減するメリットがあるようですがオプションに制限があるようです。(要検証)

Icecastの設定と起動

etcフォルダの中のicecast.xmlをエディタで開いて<icecast>タグの間(よく分からなければ2行目)に下にあるタグを貼り付ける

    <mount>
        <mount-name>/test.mkv</mount-name>
        <password>hackme</password>
    </mount>

これでIcecastの設定は終わりです。
FFmpegを起動する前にicecast.batを実行してIcecastを起動させておいて下さい。

PeerCastStationでチャンネルの作成

PeerCastStationで配信ボタンを押す
ソースをhttp
タイプをMatroska
ストリームURLをhttp://localhost:8000/test.mkv
チャンネル名を自分の好きな名前

にして配信開始。

※可変ビットレートを使用する場合PeerCastStationのビットレートの設定を自動ではなく手動で入力したほうがいいという意見が出ましたが、自動でも今のところ大きな問題というのはありませんでした。
もし何か問題があった場合、手動でビットレートを入力してください。

PeercastWebM(VP8)配信でよく使うコマンド

説明文がおかしい部分が多々あるので間違っていたら編集してください。

  • ビットレートの種類
  • -crf
    品質管理VBR
    値の範囲:0から51の整数
    デフォルト28
     -crfは「:」でつなげることによってパラメーターを増やすことができる。
    vbv-bufsizeはVBVのバッファサイズの指定をする。
    vbv-MAXRATEは最大ローカルビットレート(キロビット/秒)。VBV-bufsizeが指定されてる場合のみ使用することができる。
    vbv-bufsizeはvbv-maxrateの2倍がよろしいかと思います。
  • -vb
    ABRレート制御を可能にする。kbps単位でビットレートを指定する
    WMVで配信するときと同じ原理のビットレート方式です。
    例 -bitrate 1000k
  • -deadline
    FLVなどでいうプリセットです。
    値 best, good, realtime
  • -cpu-used
    CPU使用率を調整します。
    値(-16〜16)
  • -rc_init_occupancy
    配信が開始されるまえにrcのバッファサイズにロードされるビット数
  • -pass ワンパスエンコードか2パスエンコードかどちらか選択できます。
    2パスエンコードなら
    -pass 2
  • -passlogfile
    最初のパスの統計ファイル名
  • -minrate
    vbr/2passエンコードモードでの最小ビットレートを指定する。
  • -maxrate
    vbr/2passエンコードモードでの最大ビットレートを指定する。
  • -bt
    vbr/2passエンコードモードの変動許容幅 (in bits/s)。
    デフォルト=4000kbits/s
  • -bufsize
    バッファサイズの指定
  • -qmin
    q値の最小値
    推奨は0〜4
  • -qmax
    q値の最大値
    推奨は50〜63
  • --qcomp
    q値をどのくらい変動させてよいかの尺度 (デフォルト=0.5)
    1.0 だと q 値固定 (-cqp, -qscale) とほぼ同等
    0.0 だと bitrate 固定とほぼ同等
    float 0 - 1, 0 = CBR, 1 = VBR, (default 0.5)
  • -g
    最大キーフレーム感覚
  • -keyint_min
    最小キーフレーム感覚
  • -auto-alt-ref
    別の参照フレームの使用を有効にします。(2パスエンコードのみ)
    0 無効にする, 1 有効にする <デフォルト 0>~
  • -lag-in-frames
    エンコード時、先々にするフレームに制限をかけるかどうか。0は制限なし
    値 0-25~
  • -arnr-maxframes
    alt.refを作成する際使用される最大フレーム
  • -arnr-strength
    alt.refで使用される時間フィルターの強さ
    値 0-6~
  • -arnr-type
    alt.refのノイズ軽減フィルタの種類を選択
    値 backward (Backward Blur), forward (Forward Blur), centered (Center Blur)<default>
  • -slices
  • 出力速度をリアルタイムにする
    • -re
      -re
       -reだけでいい。
       -re を付けると出力速度がリアルタイムになるように調整する。
  • 画面サイズ
    • -video_size
       -video_size ○x○でコマンドを動かします。
      例 -video_size 640x480
      ここを変更することで画面の解像度が決定します。
      画面サイズが大きいほど解像度は高くなりますが、CPUに負荷がたくさんかかります。
  • 出力フォーマットの指定
    • -f
      例 -f dshow /-f matroska
      出力フォーマットの指定です。PeercastのMKV配信なら-iの前に-f dshowと、音声設定がすべて終わった後ろに-f matroskaをつければ良いです。
      詳細についてはリンクのコマンドのつなぎ方を学ぼう!を見てください。
  • 映像・音声デバイスの設定
    • -i
      映像・音声のデバイス設定をします。
      -i video="ビデオソース":audio="オーディオソース"
      上記の形でコマンドを動かします。
  • フラッグ
    • -flags/-partitions
      マクロブロック(○x○画素のブロック単位)をサブブロックに分割する際に利用可能なモードを指定する。
      • 複数指定する場合は + でつなぐ。
        Peercastではまだこれがいいというのははっきりわかっていませんが、
        -flags +global_header
        にしてください。
  • ビデオコーデック
    • -vcodec libvpx
      WebM(VP8)配信なので
      -vcodec libvpx
      とコマンドを打ってください。
  • フレームレート(FPS)
    • -framerate
      例 -framerate 30
      映像の滑らかさを設定できます。
      デフォルト30
      数字の値が低いと映像がカクカクします。
      高ければ滑らかに映像は動きますが、CPU使用率を結構使うのでPCスペックと相談してください。
  • スレッド
    • -threads
      例 -threads 4
      スレッドプールのスレッド数。 0(デフォルト)
      0はvp8では検地しません。
  • リアルタイムバッファサイズ
    • -rtbufsize
       -rtbufsize
      MBが単位となります。
      例 -rtbufsize 100MB
      デフォルトは100MB
      バッファというのは一時的にデータを保管する場所という意味です。
      コンピューター処理が間に合わずに遅延やデータが滞ってしまわないように適切なサイズを設定しましょう。
      バッファサイズが足りないと映像が途切れたり、ノイズが発生したり環境に影響が出る恐れがあります。
      バッファサイズが大きすぎると遅延の原因になるかもしれないことが分かりました。
  • 音声コーデック
    • -acodec
      例 -acodec libvorbis
      VP8ではlibvorbisが使えます。ちなみにOBSが使用しているのはlibfaacです。
      音質のよさは以下のとおりです。
      libopus > libfdk_aac = libvorbis > libmp3lame >= libfaac >= eac3/ac3 > aac > libtwolame > vorbis > mp2 > wmav2/wmav1 > libvo_aacenc
  • サンプリング周波数
    • -ar
      CDで採用されてるのは44.1kHzなので
      -ar 44100
      でいいと思います。
      問題があれば他の周波数を使用してください。
  • 音声ビットレート
    • -ab(固定ビットレート)/-aq(可変ビットレート)
      -ab 128k
       -abは固定ビットレートです。
      とれる値は、
      8k, 16k, 24k, 32k, 40k, 48k, 64k, 80k, 96k, 112k, 128k, 160k, 192k, 224k, 256k, 320k

128kbp以上あればいいと思います。
 

  • aq(可変ビットレート)についてはまだ検証中です。
     -aqは可変ビットレートです。
    -aq 5

0-10でクオリティを指定し,VBRでエンコードを行います。 0(高音質大容量)〜10(低音質小容量)

  • -aq 4  VBR 150-180kbps程度
  • -aq 2  VBR 170-210kbps程度
  • -aq 0  VBR 200-240kbps程度

  以下はMOBILEHACKERSより引用です。

【-aq オプションについて】
確認済みのものとしては、-acodec libfaac と -acodec libmp3lame を指定した場合は -aq で品質ベースのVBRエンコードが可能です。
libmp3lame を使う場合、-aq の指定値は lame.exe (LAME 本家のフロントエンド) の -V オプションの値と同じです
(ただし、avi の音声に VBR の mp3 を使うのはトラブルの元なので、音声のみのエンコードをしたい場合等に利用してください)。
同様に libfaac を使う場合、-aq の指定値は faac.exe (FAAC 本家のフロントエンド) の -q オプションの値と同じです。
特に faac の場合は、-ab でビットレート指定モードでエンコードすると例え -ab 256k などと指定しても大体160kbps程度でビットレートが頭打ちになってしまうが、aq の方で指定するとこのような制限はなく高ビットレートの音声も作成できる。

  • モノラル/ステレオの選択
    • -ac モノラルなら1、ステレオなら2を入力してください
      例 -ac 2
  • 音量
    • -vol 数値を256にすると100%の音量。200%の音量を出すには512を指定してください。
      例 -vol 256
  • Icecastにプッシュ時に必要なコマンド
    -password hackme -content_type video/webm icecast://localhost:8000/test.mkv

上記のコマンドを-f matroskaの後ろに入力してください。

コマンドのつなぎ方を学ぼう!(VP8編)

[[PeercastWebM(VP8)配信でよく使うコマンド>]]にでてきたコマンドを使用してffmpegを設定し、エンコーダーの設定を完成させたいと思います!
では、まず早速ですが、このコマンドを見てください。

では最後に、

-f matroska -password hackme -content_type video/webm icecast://localhost:8000/test.mkv

上記のコマンドを入力すれば、エンコーダーの設定完了です。

batファイルに書いておくとコマンドを入力する手間が省けます。
メモ帳にffmpegの設定を入力して(右端で折り返すにチェックを入れないでください。)
拡張子を.batに変換してください。
そしてffmpegの「ffmpeg.exe」が入っているフォルダと同じところに.batファイルを入れてください。
そうすれば、設定した.batファイルを起動するだけでエンコードできます。

FFmpegでIcecastにpush送信

IceCastを起動してからFFmpegを起動してみましょう。

ビデオソース、オーディオソースの入力の仕方が分からない場合、下のコマンド例を参考にしてください。

コマンド例1 SCFF アマミキ NETDUETTO を使用した場合のffmpegの配信コマンド

ffmpeg -re -rtbufsize 100MB -flags +global_header -framerate 30 -video_size 640x360 -f dshow -i video="SCFF DirectShow Filter":audio="ライン (Yamaha NETDUETTO Driver (W" -threads 0 -vcodec libx265 -tune ssim -preset ultrafast -b 900k -af aresample=async=1 -acodec libvo_aacenc -ar 44100 -ab 96k -ac 2 -vol 256 -f matroska -password hackme -content_type video/webm icecast://localhost:8000/test.mkv

コマンド例2 SCFF ステレオミキサーを使用した場合のffmpegの配信コマンド

ffmpeg -re -rtbufsize 180MB -framerate 30 -video_size 832x468 -f dshow -i video="SCFF DirectShow Filter":audio="ステレオ ミキサー (Realtek High Definit" -threads 0 -flags +global_header -qp 22 -vcodec libx265 -preset ultrafast -tune ssim -acodec libvorbis -ar 44100 -ab 128k -ac 2 -vol 256 -f matroska -password hackme -content_type video/webm icecast://localhost:8000/test.mkv
  • FFmpegのオプションがよく分からないならFFMPEG LauncherでFFmpegのオプションを参考にすれば良いと思います。
    • 「お知らせ」の【置き場】にあるURLを開いてDLします。
  • FFmpegの配信に関してはwikiのFLV配信のページが参考になると思います。

関連リンク

関連ツール・ソフト

視聴方法について

編集メモ



トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2015-01-14 (水) 15:49:12 (895d)