Top / 設定 / FLV配信

FLV配信

ここでは FFMPEG Launcher(以下FFML)または Open Broadcaster Software(以下OBS) または XSplit Broadcaster(以下XSplit)を使って配信用に動画をエンコードする設定を説明します。 まだまだ、配信者とリスナー共に、模索中ということをご理解下さい。


FLV(h.264)配信の利点

  • 画質が良い。
    • 800kbps以下で配信した場合はパッと見で違いが判るくらい差があります。
    • 1500kbps以上になってくると差が判りにくくなります。静止画像を見比べれば差が分かりますが、殆どの人が差を感じないかもしれません。
    • エンコード設定を高画質設定、及びオプション設定を細かく調整すれば更に綺麗になりますがPC(CPU)への負荷が高くなりすぎるため、現在(2013年9月)のハイスペックPCを利用しない限り厳しいかもしれません。
    • WMVとh.264にて同じビットレートで60FPSで配信した場合、h.264のほうがブロックノイズが少ない。
    • 静止画に強く、動きと色変化の少ない動画で大きな違いを発揮します。
  • 遅延が多少少ない。
    • WMVは指定されたバッファが貯まるまで再生されませんが、h.264は再生に必要な最低限のバッファを貯めたところで再生を開始するので遅延が少ないのが特徴です。指定されたバッファは視聴中に貯めます。
    • 遅延が少ないのでリスナーとのコミュニケーションが取りやすくなる(かも)。
      • Flash系プレイヤーPecaFlowplayerpcyp Lite付属のpcfp、pcap等)で視聴した場合の遅延は直下で3〜5秒程度です。設定次第ですがWMVでは直下で6〜10秒程度です。
      • VLC、MPC-HC、WindowsMediaPlayer(のapiを使ったpcwmp、peerstplayer)+LAV Filters等はFlash系プレイヤーと比較して視聴可能になるまでに時間がかかります。
        特にWMP+LAV Filtersについては視聴環境による差が最も出やすく、直下でも開くのに時間が掛かれば30秒〜1分以上遅延する場合があります。環境によっては直ぐに開く場合もありますが、Flash系プレイヤーで開けばもっと早いです。

PeerCastStation導入

  • Peercast(PP版、VP版、IM版)は配信でflvを認識しないため、PeercastStation(2015年5月時点の最新verは1.8.1で、これ以下の物はリレーが安定しなかったりバッファループを起こすので注意!)を導入して下さい。
    1.6.1から、最大上り帯域(初期値0kbps)の値を、適切な値に設定しないとリレーが構築されないので、しっかりとヘルプを見て設定すること。

PeerCastでH.264配信方法(リンク先を必読)

「H.264配信方法」の各リンク先に基本設定や必要ツールが書かれていますので必ず目を通してください。このページの内容はそれを踏まえた上での補足説明です。

  • Open Broadband Software( + FlazrDumper)を使った配信方法です。
    • PeercastStationでFLV配信 2FlazrDumperを使う場合はリンク先を必読
      • PeercastStation 1.7.8からFLV配信時に FlazrDumper を使わずに配信できるようになりました(今まで通りFlazrDumperを使った配信も可能です)。設定方法はPeercastStation付属のヘルプ(の 配信 → RTMP配信)を参照してください。OBSが0.64 BetaでIPv6に対応した影響でFLV配信が出来ないバグはOBSの配信先URLのドメインをlocalhostから127.0.0.1に変えたら配信できます。
    • ffmpeg+FFMLの方法と比較してこちらのほうが簡単です。
    • 【必須設定】
      • 「設定」→「エンコード」にある「CBRを有効にする」にチェックを付けて、「CBRパディングを有効にする」のチェックを外してください。
        (保存したファイルのシークがうまく出来ない場合は「CBRパディングを有効にする」のチェックを付けてください。)
      • 初心者用の設定
        「設定」→「エンコード」の「特定のバッファサイズを使用する」にチェックを付け、映像ビットレートの0.5〜0.6倍の値を指定してください。例えば映像のビットレートが1000kbpsならバッファを500〜600kbpsにする。
        設定が基本設定の状態(詳細な設定を全くしない状態)でビットレートとバッファサイズが同じだと秒間ビットレート*1の最大値が1.3〜1.5倍、バッファサイズが2倍だと秒間ビットレートの最大値が1.5〜2倍になることがあるのでバッファサイズはビットレートの約半分を指定することで一時的なビットレート上昇を抑制できます。あくまで秒間の最大値なだけであり、数十秒単位で見ればビットレート通りになっています。
        小さなバッファサイズを指定することにより画質を低下させてまで(※それでもWMVと比較すれば断然綺麗です)ビットレートを均一化させなければ本当に配信が安定しないのかについては要検証項目として残っています。
        設定模索中であるため、今後この値が変更または別の設定に置き換わる可能性がありますので時折ここをチェックしにきてください。
      • 初心者用 x264のプリセット
        「設定」→「詳細設定」の「x264のプリセット」によって動きが早いシーンの画質とCPU使用率が大きく変動します。静止画ならどれを選択しても画質は同じです。目安として動きが早いシーンでCPU使用率が60%以下になるプリセットを推奨します。
        ultrafast superfast veryfast faster fast medium slow slower veryslow placebo
        低い <ーーーーーーーーーーーーーー CPU使用率 ーーーーーーーーーーーーーー> 高い
        低画質 <ーーーーーーーーーーーー 動きが早いシーン ーーーーーーーーーーーー> 高画質
      • 中級者以上用の設定
        バッファサイズを等倍〜2倍にしたい場合はPeercastシューティング@Wiki - FLV配信の手引きの設定を参考にしてください。但し、高解像度ソース(PS3やXBOX360)に対してリンク先の設定をそのまま使うとシャープさが無くなり少しボケた感じになり、前述の初心者用設定(バッファを0.5〜0.6倍)よりも画質が落ちますのでオススメしません。
    • 配信中にエンコード設定を変更する場合の注意点
  • ffmpeg + FFMPEG Launcher + FFFlvServer.jarを使った配信方法です。
    • PeercastStationでFLVのH.264配信するリンク先を必読
    • コマンドプロンプトでプログラムを実行させる必要があるのでOBSより難易度が高い。
    • 【必須設定】
      • 「高度な設定」→「共通設定」の「エンコードモード」を「固定ビットレート」にしてください。
      • 「基本設定」にある「映像」のバッファサイズにビットレートの0.5〜0.6倍の値を指定してください。(例:映像のビットレートが1000kbpsならバッファを500〜600kbpsにする)
        理由は前述の「Open Broadband Software + FlazrDumper を使った配信方法」のところを参照しくてください。

サーバー用ソフト

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

  • ffmpeg等のhttpでデータをpushする場合はFFFlvServerが必要になります。
    • PeercastStation 1.7.9(開発Verなので人柱専用)からrtmpに対応(FLVのみrtmp対応)したのでFFFlvServerが不要になりました。配信方法はPeercastStation付属のヘルプ(の 配信 → RTMP配信)を参照してください。
  • OBS等のrtmpでデータをpushする場合はFlazrDumperが必要になります。
    • PeercastStation 1.7.8(開発Verなので人柱専用)からrtmpに対応(FLVのみrtmp対応)したのでFFFlvServerが不要になりました。配信方法はPeercastStation付属のヘルプ(の 配信 → RTMP配信)を参照してください。
      • PeercastStation 1.7.8のDLしたファイル(zip)をWindows標準機能で展開するとPeercastStation.exe起動時に強制終了します。これはWindows標準の展開機能にバグがあるためです。よってWindows標準以外の展開ソフト(解凍ソフト)を使って展開(解凍)してください。
    • FlazrDumper0.4.4より、PeercastStationで配信中にエンコードをやり直すとメタデータが欠落する問題が修正されました。 FlazrDumper0.4.4でも配信中にエンコードをやり直すとメタデータが欠落しますので「配信中にエンコード設定を変更する場合の注意点」を参考に対処してください。
    • FlazrDumperで利用するポート番号の変更方法

エンコーダーの導入

  • OBSのDLはこちら
    • グラフィックボードがDirectX10に対応している必要があります。
  • FFMLのDLはこちら
  • XSplit。※FlazrDumper

音声codec基礎知識

使える音声の方式はMP3かAACとなります。 NellymoserやSpeexはH.264と合わせることが出来ないので使用しません。 低ビットレートにおいて音質はHE-AACを使わない限りどうしてもWMAに劣ります。

  • MP3
    • 基本的に低ビットレートに弱い形式です。
  • AAC
    • 通常のAACはAAC-LCと呼ばれ低ビットレートに弱い形式です。とは言えMP3より音質が維持されやすいようです。 この弱点を補うため、SBRという技術を使用した拡張形式としてHE-AACというものがあります。 更に超低ビットレート用にPS(Parametric Stereo)という技術を使用したHE-AAC v2というものもあります。 ただしライセンスの関係上、一般的なソフトに入っているAACエンコード用のライブラリではAAC-LCしかエンコード出来ません。 十分なビットレートを確保出来る場合、HE-AACの音質はAAC-LCに劣る場合がありますが、配信においてそこまでの高ビットレートを出すことは無いでしょう。
    • HE-AAC v2はプレイヤーによって対応していない場合があるので使わないほうが無難です。

使用の目安
MP3 96kbps以上
AAC-LC 80kbps以上
HE-AAC 48kbps〜128kbps
HE-AAC v2 48kbps以下(音声を22kHzにすれば更にビットレートを下げられる)

映像codec基礎知識

  • 使用出来るcodecはOn2 VP6、Sorenson Spark(H.263)、H.264等ありますが、H.264以外使う事はまず無いでしょう。
  • x264という表記を見かける事があるかもしれませんが、それはH.264へのエンコードを行うプログラムの名前の事です。ffmpegもOBSもx264を使用してエンコードを行っています。 使用するプログラムが同じなのでどれを使っても基本的に画質に差はありません。
  • エンコードされたH.264のファイルのヘッダ部分にはそのエンコードに使用したx264のオプションが全て記載されています。バイナリエディタなりメモ帳なりで開けば
    x264 - core 136 r2350 dba1934 - H.264/MPEG-4 AVC codec - Copyleft 2003-2013 - http://www.videolan.org/x264.html - options: cabac=1 ref=8 deblock=1:0:0 analyse=0x3:0x133 me=umh subme=9 psy=1 psy_rd=1.00:0.00 mixed_ref=1 me_range=16 chroma_me=1 trellis=2 8x8dct=1 cqm=0 deadzone=21,11 fast_pskip=1 chroma_qp_offset=-2 threads=6 lookahead_threads=1 sliced_threads=0 nr=0 decimate=1 interlaced=0 bluray_compat=0 constrained_intra=0 bframes=3 b_pyramid=2 b_adapt=2 b_bias=0 direct=3 weightb=1 open_gop=0 weightp=2 keyint=250 keyint_min=25 scenecut=40 intra_refresh=0 rc_lookahead=60 rc=cbr mbtree=1 bitrate=320 ratetol=1.0 qcomp=0.60 qpmin=0 qpmax=69 qpstep=4 vbv_maxrate=320 vbv_bufsize=320 nal_hrd=none ip_ratio=1.40 aq=1:1.00
    のように全ての設定が見えます。
  • x264のエンコードにはVBR、ABR、QPの3種類があります。
    • VBRは容量を気にせず映像の品質を一定に保つものです。-crfで設定します。
  • ABRは最終的な容量に制限がある場合に使うものです。通常は2pass以上で使用します。当然の事ながら設定値よりビットレートの大きな部分と小さな部分が生まれます。--bitrateで設定します。
  • QPはPフレームの量子化の量を決めるものです。VBRと同程度の内容でそれより容量が大きくなるため、通常は使いません。-qpで設定します。
  • これら3つの設定値は排他され、最後に設定したもののみが適応されます。
  • これとは別に-vbv-maxrateと-vbv-bufsizeという設定値があります。
    この値を設定すると-vbv-bufsize内における平均ビットレートが-vbv-maxrateを超えないようにエンコードされます。すなわち-bitrateと-vbv-maxrateと-vbv-bufsizeを全て同じ値にすると、1秒毎の平均ビットレートが全てvbv-maxrate以下になるわけです。もしこの数値を越える事があったばあいはVBV underflowのエラーが表示されることとなります。-vbv-bufsizeを大きな値にすることは平均を取る区間を伸ばすことになり、必然的にABR的なビットレートの偏りを大きくする結果になるのであまりおすすめできません。逆に小さくしすぎればIフレームの画質を大きく落とすことになり、画質の低下は明白です。通常-vbv-bufsizeの値は-vbv-maxrateの等倍に設定するのが無難なようです。これより小さな、例えば-bitrateの1/2にするなど非常に小さな値にすればよりビットレートの推移は安定しますが画質を相当犠牲にすることになり、通常は使用されません。
  • ちなみにx264r2341よりbitrate > vbv-maxrateの場合、bitrate = vbv-maxrateとして処理されるようになりました。
  • 各エンコーダーの設定で該当する項目は
    • OBSにおいてはエンコードタブから
      • ビットレート(kbit/秒)→vbv-maxrate
      • バッファ(kbit)→vbv-bufsize
      • 「CBRを有効にする」をチェックした場合「ビットレート(kbit/秒)」の値がbitrateにも適応される
    • FFMLにおいては
      • 【FFMPEG】基本設定 ビットレート(kbps)→-maxrate(ffmpegの処理でvbv-maxrateに適応される)
      • 【FFMPEG】基本設定 バッファサイズ(kbps)→-bufsize(ffmpegの処理でvbv-bufsizeに適応される)
      • 【FFMPEG】高度な設定 共通設定 固定ビットレート(-b:v kbps)→-b:v(ffmpegの処理でbitrateに適応される)
    • ffmpegで直接設定するなら
      • -x264opts bitrate=500:vbv-maxrate=500:vbv-bufsize=500
  • presetを使用することによりx264に最初から用意されている負荷と画質のバランスの取れたデフォルトの設定を選ぶことができます。この設定だけでも画質はかなり変わります。ただしあまりCPUを使いすぎると不安定になりますのでほどほどに。また、このpresetによる一部設定項目が環境依存の不具合を起こす事があるのでslower以上は使用しない方が無難でしょう。
    • 軽い ultrafast,suparfast,veryfast,faster,fast,medium,slow,slower,veryslow,placebo 重い
  • その問題のある項目というのは-refを7以上、あるいは-bframesを4以上です。これをグラフィックボード支援でデコードを行うと映像が崩壊する場合があります。
  • 処理スレッド数(-threads)は通常は自動設定の0を使用しましょう。この場合CPU数×1.5となります。基本的に増やしすぎても減らしすぎてもエンコードによくありません。
  • 基本的にCPUの使用率に非常に繊細です。x264からすればどれだけエンコードが遅れても構わない為、無理をさせない設定でないと危険です。平常時の使用率はせいぜい40%程度に抑えた方が安全でしょう。余裕が無いとエンコードに厳しい画面になった時に障害(音ズレや配信の強制終了)が起きる可能性が高くなります。せめて4コアは無いと厳しいでしょう。

OBSについて

全般

  • FlazrDumperが必要(RTMP配信なら不要)。
    • PeercastStation 1.7.8(開発Verなので人柱専用)からrtmpに対応(FLVのみrtmp対応)したのでFFFlvServerが不要になりました。配信方法はPeercastStation付属のヘルプ(の 配信 → RTMP配信)を参照してください。
      • PeercastStation 1.7.8のDLしたファイル(zip)をWindows標準機能で展開するとPeercastStation.exe起動時に強制終了します。これはWindows標準の展開機能にバグがあるためです。よってWindows標準以外の展開ソフト(解凍ソフト)を使って展開(解凍)してください。
  • FlazrDumperで利用するポート番号の変更方法(例えば9000にするには)
    • 方法1:「ファイル名を指定して実行」に「FlazrDumperのパス 9000」と入力してEnter
    • 方法2:FlazrDumperのショートカットを作成し、リンク先の最後に9000を追加して
      「FlazrDumperのパス 9000」にする
    • 方法3:FlazrDumper.jar を終了し、FlazrDumper.jar と同じフォルダ内にある setting.xml をテキストエディタ等で開き <entry key="port">8888</entry> の 8888 部分を 9000 に書き換えて上書き保存する。※setting.xmlが無ければFlazrDumper.jarを起動して終了すれば生成されます。
  • シーン切り替えが便利。
    • シーンを切り替えると右側のソース(OBSに標準実装されているキャプチャ設定)も変わりますのでゲームを変更したりする場合に便利です。
    • OBSのキャプチャ機能については音ズレ対策を参照してください。
  • 音声入力メータがある。
  • ステミキ機能がある。
  • ソースにてガンマ補正の設定ができる。
  • MP3でもFPSが1000になるし、一部の動画プレイヤーで音声が再生されない。
  • デモタ 13/9/17 FPSが1000の問題は、OBSの詳細設定でQuick Syncにチェック入れると改善されるらしい。
    ただし、Quick Syncは、IntelCPU(Sandy Bridge)以後のi5,i7シリーズと、対応マザーボードでのみ使える。 Quick Sync Video
  • AACの64kbps未満の場合、音が籠もるので、64kbps以上かFFMLLのAAC+を利用すること。はどの値を設定しても少なくとも96kbps以上を平気で出すVBRです。注意して設定すること。
  • OBSv0.57bからサウンドのフォーマットの選択肢として、48kHzが選択できるが、
    Pecaflowplayer v0.12では、音声が再生出来ないことを確認したので、44.1kHzを選択することを推奨します。
  • フレームレート(FPS)を一定に保つには「CFRを有効にする」にチェックを付ける(設定 → 詳細設定 にあります)。但し、動きが激しいところでもFPSを一定に保つのでビットレートが不足している場合は映像が荒くなります。「CFRを有効にする」をチェックするとx264に対し--fpsと--force-cfrを送る。通常はOBSからx264に渡されたデータから提供されるタイムスタンプを元にエンコードを行うが、そのタイムスタンプが信用出来ない(OBSが正しく処理を行なっていない)場合に有効にすることにより、送られてきたタイムスタンプを無視してエンコードを行う。通常はOBSが送り出すデータを整形しているのでこの設定に意味は無い。
  • 特定のバッファサイズ(設定 → エンコード にある)を指定する場合はビットレートの1/2倍〜2倍をセットする(1倍推奨)。※現在検証中 13/10/01
    • 映像680kbps、バッファ2080kbpsで配信して、LANの上りを計測したが、MAX1225kbos出てた。
      バッファの値を配信してみて検証した
      この結果からバッファはビットレートの0.25倍で、適切なリレーが構築できると思う。ぎりぎり攻めたいなら0.50倍が限界だと思う。by デモタ 13/10/01
    • 映像1000kbps+音声64kbpsの場合、バッファを250kbpsにすると800kbpsくらいまでしか上がらなかったのでバッファを500〜600にした方がいいみたい。by yy 13/10/01
  • NVENC(NVIDA製ビデオカード内蔵のビデオエンコーダー)が使えます。NVIDIA公式ツールではGTX系(GTX6xx/GTX7xx)しか使えませんが、OBSではGT730 GDDR5 1GBでもNVENCを使うことが出来ました。ググったところGT640でも使えるらしい。(GT620やGT720で使えるかどうかは不明) 15/1/24
    • PS3をHDMIキャプチャカード(720P)で取り込み、OBSの設定でビデオビットレート 1100kbps、バッファ(6割の)660kbit、解像度960x540(540P)、フレームレート60FPS、NVENCのプリセットを「High Quality Low Latency(2pass)」という設定で配信した時のGPU-Z 0.8.0の表示は「GPU Load」が40%以下、「Video Engine Load」が30%以下でした。CPUはAthlonII 640 x4という数年前のものですが、CPU使用率が20%前後の低負荷で配信することが出来ました。
    • 配信される映像が真っ黒になる場合は「詳細設定」の「キーフレーム間隔」を5〜10秒にしてみてください。
    • ちなみにGT730 GDDR5 1GB版はGT740 DDR3 2GB版よりもベンチマーク結果が少し良いです。

音ズレ対策

  • Windowsのステレオミキサーを使っていると音ズレする場合があり、その場合はWindowsのサウンド設定のステレオミキサーを無効にし、OBSの「設定」→「サウンド」にある「デスクトップサウンドデバイス」と「マイク/他のサウンドデバイス」を使ってください。それと「詳細設定」にある「デスクトップオーディオでサウンド時間の基準としてビデオタイムスタンプを使用する」と「マイクQPCタイムスタンプを使用」の2つにチェックを付けてください。
    後述するOBSのキャプチャ機能を利用すればWindowsのステレオミキサーやアマミキ!を使っても音ズレが解消されるで場合が多いです。
  • SCFHやSCFFを使わず、OBSに標準実装されているキャプチャ機能を利用する。
    • OBSを起動し、OBSウィンドウの下部にある「ソース:」の部分で設定します。右クリックして「ウィンドウキャプチャ」「画面キャプチャ」「ゲームキャプチャ」の何れか1つ、または3つ全てを追加しておけば基本的には困らないと思います。追加したらそれをダブルクリックすれば詳細設定が出来ます。
    • 現在のところ(2013年11月25日時点)、OBSにはSCFHやSCFFのDragHereに相当する機能はありませんが、OBSのソース(キャプチャソース)項目には複数のソースを追加することができ、配信中のソース切り替え、及び追加/削除が可能です。それに慣れてしまえばクリック1つで切り替え可能なため、場合によってはSCFHやSCFFより使い勝手が良かったりします。
    • 「ソース:」の左側にある「シーン:」を追加することにより、配信内容(例えばゲーム)ごとに「ソース:」の切り替えが可能です。
  • その他の音ズレに関しては「FFMLについて」の「音ズレ対策」を参考にしてください。

OBSのエンコードモードについて

Encode Mode配信備考
「CBRを有効にする」をチェックするFFMLの固定ビットレートCBRと同等の設定。推奨設定。CBRパディング(nal-hrd=cbr)は完全なCBRに見せかける為に付加された空データにより帯域を意味もなく無駄に消費する事になるので無効を推奨。ただし無効にしたまま動画に保存するとシークするのに必要な情報がFLVファイルに存在しない為、シークに時間が掛かったり、正常にシークされない場合があるので注意してください。
「CBRを有効にする」のチェックを外すFFMLの品質基準VBRと同等の設定。映像の品質0→crf=32〜映像の品質10→crf=22
映像ビットレートが0kbpsとして処理されるため手入力でPeercastStationへビットレートの指定が必要。FlazrDumper0.4.3からPecastStationへビットレートの値を渡せるようになった。

配信中にエンコード設定を変更する場合の注意点

  • 配信中、OBS設定変更のためエンコードを停止し再開するとき、同時に直下を全て切断(または配信停止して配信開始)してください。
    エンコーダーのみ停止し再開するとメタデータが正常に送られず、リスナー自らが切断して接続しなおさないと正常にメタデータを受け取れません。リスナーが手動で再接続してもメタデータを正常に受け取っていない枝に再び繋がれば正常な枝に繋がるまで何度も繰り返さないといけなくなります。その手間を省くためにも直下を全て切断するようにしてください。
  • メタデータを正常に受け取れなかった場合の症状として映像の乱れ、映像無しの音声のみ、アスペクト比率の不一致、配信に繋がらない等の不具合が発生します。メタデータの一部欠損の場合、プレイヤーによっては正常に視聴できるものとそうでないものがあります。
  • PecaFlowplayerを右クリックすると表示される情報がメタデータです。
  • pcfpのログ情報には映像データとメタデータの一部が表示されています。
  • 上記はFlazrDumper ( + OBS) 、及び FFFlvServer.jar ( + ffmpeg + FFMPEG Launcher) を使った配信中にエンコード停止→再開を行ったときの対処法です。PeercastStation 1.7.8 (1.7.9)から実装されたRTMP配信(FlazrDumper、及びFFFlvServer.jarを使わない配信)中にエンコ停止→再開で同様の不具合が発生するのかは未確認(RTMP配信機能が実装されてから4ヶ月以上不具合報告がないので発生しないのかも)。もし、RTMP配信中にメタデータ欠損が疑われる症状が発生した場合は上記の対処法でいけると思われます。

FLV配信のローカルチェック方法

方法
プレイヤーのショートカットを作成し、プロパティを開いてリンク先に下記を指定する。
または、「ファイル名を指定して実行」に下記を入力してEnter。
プレイヤーのフルパス "http://localhost:8888"
ローカルチェックが可能なプレイヤー
プレイヤー名備考
FLV Player Nano接続が早く、GPU再生支援に対応。
pcfp(pcypLite付属)接続が早い。
Ver1.6.0.23からGPU再生支援に対応
VLC正常に観れるまでに時間が掛かる
ffmpeg付属のffplay.exe接続が早いですが、ボリューム調整機能無し
ローカルチェックが出来なかったプレイヤー
PecaFlowplayer ver0.31
pcap ver1.3.4

ffmpeg

  • コマンドプロンプトで直接命令を送って動作させます。通常は.batファイルにその動作を記述して動作させます。ただしこれらの動作は覚えるのが大変なのでフロントエンド、例えば後述のFFMLを使用することもできます。
  • コマンドプロンプトを右上の[×]から強制終了させると使用しているDirectShowが開放されません。結果的にSCFFの使用中プログラム一覧に居座ります。キーボードのQを押すことによりエンコードをQuitできます。
  • デフォルトで入っているAACエンコード用のライブラリはlibvo-aacencと実験用のAACの2つです。残念ながらどちらもあまり音質はよくありません。
  • ライセンスの関係で同梱されていないだけですので自らffmpegをビルドすれば下記のAAC用のライブラリを使用することができます、が、他人に配布してはいけません。
    • libvo-aacenc(AAC-LCのみ)
    • libfaac(AAC-LCのみ、OBSのAACはこれ、低ビットレートの指定はなかなか守ってくれない)
    • libfdk-aac(AAC-LC、HE-AAC等)
    • libaacplus(HE-AACのみ)
  • 入力ソースを一時的に保持する設定に-rtbufsizeというものがあります。デフォルト値は3041280なのですがこれに収まりきらないほどの情報が入力ソースから送られてくると、その送られてきた情報は破棄されます。結果として破棄された分だけ映像が早くなり音と映像がずれます。そうならないように適当に大きな値を設定した方がよいでしょう。メモリが許せばそれこそ100Mや500Mでもいいのです。限界値は恐らく2147483647。

FFMLについて

正確にはFFMLはffmpegを操作する為のランチャー(フロントエンド)です。

映像関連、及び設定全般

  • 品質基準VBRで配信すると、PeerCastStation側の認識ビットレートは72kbpsだった。PeCaStに手動で1500kpsと入力しても、72kbpsになった。これはリレーの障害になる。
  • FLV(H.264)配信時は、固定ビットレートが安定している。
  • FFMPEGLauncherのFFMPEG基本設定のバッファサイズは、ビットレートの1/2倍〜2倍をセットする(1倍推奨)。Peercastのリレーの都合上、配信ビットレートの上限を極端に超えないようにバッファの値を映像ビットレートから400〜500kbps引いた値にするとよい?※現在検証中 13/10/01
  • 配信を停止し、設定を見直し直すたびにSCFFのリストにffmpeg.exeが増えていった。8個表示が限界だったので、FFMPEG LauncherとSCFFの両方を終了させたら消えた。
    • FFMLを再起動せずともSCFFを再起動すればリセットされるので、SCFFの仕様あるいは不具合と思われる
    • ffmpegのコマンドプロンプトでQを押す正規の方法で終了させれば少なくとも問題ない
  • av_interleaved_write_frame(): Unknown errorで、配信が止まってた。FFMPEG --Launcherのコマンドプロントは表示させて隅にでも表示した方がいいと思う。配信が止まった事に気付かなかった。
  • IMとPPが直下でリレーとローカルプレイヤー再生が可能だった。
  • FFFlvServerが必要(RTMP配信なら不要)
    • PeercastStation 1.7.9(開発Verなので人柱専用)からrtmpに対応(FLVのみrtmp対応)したのでFFFlvServerが不要になりました。RTMP配信方法はPeercastStation付属のヘルプ(の 配信 → RTMP配信)を参照してください。

音関連

  • AACの64kbps未満の場合、音が籠もるので、AAC+の利用を推奨します。
    • AAC+で配信開始したら、エラーが出て配信できなかった。ライセンスの関係で入っていない。
    • AAC+を使うには自分でffmpegをビルドする必要あり。音質を低ビットレートにする場合AACでは激しく潰れてしまい、mp3は音質が悪いのでAAC+推奨。
    • このページのビルドツールを使うと簡単にビルド出来る。
      http://www.sakura-zaka.net/ffmpeg/
      ビルドに掛かる時間は環境によって異なりますが30分〜1時間程度です。
    • FlashはHE-AAC v2のデコードが出来ないようですのでHE-AACを使用すること。

音ズレ対策

  • 音ズレ
    • 音ズレが発生するなら、FFMLの「高度な設定」の「共通設定」の「音声」の「同期方式」にチェックを付ける。
    • エンコード負荷が低くても、一時的な高負荷な状態(アマレコの起動時等)になると音が遅延することがあるようです。
      対処法の1つとしてWindowsのサウンド設定のステレオミキサーを無効にし、FFMLの「高度な設定」タブ →「複合フィルタ」タブの「音声ミックス」の「音声ミックスを有効にする」にチェックを付け、ミックスしたいデバイスを「音声デバイス」で選択する。且つ、「高度な設定」の「共通設定」の「音声」の「同期方式」にチェックを付ける。
      ※全ての環境で音遅延を解決する方法ではありません。
    • ウィンドウを最小化したり元に戻したりを繰り返すと激しく音ズレを起こす場合有り。
      コントロールパネル → システム → システムの詳細 → 詳細設定タブのパフォーマンスの設定ボタンをクリックし、「パフォーマンスオプションの視覚効果」と「ウィンドウを最大化や最小化するときにアニメーションで表示する」のチェックを外して「適用」させると改善される場合あり。
    • 環境によりますがSCFH DSFを使うと音ズレが発生する。この場合は入力フレームレートを自動認識にしレジストリの「HKEY_CURRENT_USER\Software\SCFH DSF\ffmpeg.exe」にある「Framerate」に配信したいフレームレートに設定する。
    • 入力ソースを一時的に保持する設定にreal-time buffer(-rtbufsize)というものがあります。デフォルト値は3041280なのですがこれに収まりきらないほどの情報が入力ソースから送られてくると、その送られてきた情報は破棄されます。結果として破棄された分だけ映像が早くなり音と映像がずれます。そうならないように適当に大きな値を設定した方がよいでしょう。いっそGUIで設定できる上限の256MBでも構いません。
    • CPU使用率は平均60%以下(PC環境によっては50%以下)を推奨します。常時60%を超えていると何かしらのソフトを起動したりバックグラウンで動くソフト等の影響で一時的に80%以上となり、音ズレが発生する可能性があります。

FFMLのエンコードモードについて

Encode Mode配信備考
品質基準VBR映像のビットレートは0kbpsとして処理されます。よってPeercastStationの配信設定にて手入力でビットレートを必ず指定する事。さもなくば実際のビットレートと配信情報のビットレートが大きく異なっているため、リスナーのリレー設定を無視したビットレートのリレーが可能だと誤判断させ、リスナーを偽緑化させてバッファ読み込みを多発させてしまう。よって通常はCBRの利用を推奨します。
固定ビットレート CBRビットレートは固定。推奨設定。
平均ビットレート ABR×ビットレートは変動。VBRの一種。VBRとCBRの良さを取り入れたエンコードモード。ローカル保存する動画のエンコードには有効であり、YouTubeで有効なモードです。が、しかし、Peercastのストリーミング配信で使うには大きな問題があり使わない方がいいです。デモタ氏のテストにて ABR 1400kbps+AAC 96kbps という設定において、動きが早い部分は4000kbpsで推移していることが解りました。つまり、申告ビットレート(配信情報のビットレート)の倍以上で配信している状態が続くことが有り、リスナーを偽緑化させてしまうので推奨しません。直下で配信が切れる原因の一つと思われます。
固定量子化量×使う意味がないらしい。学術目的であるらしい。

FLV配信のローカルチェック方法

XSplitについて

特徴

シーン数を19個設定できる。有料でドル決済。

設定全般

FlazrDumper0.4.2から対応した。0.4.3でビットレートが反映されない問題を修正済み。

映像及び音関連

関連リンク

視聴方法について

関連ツール・ソフト

  • Pecastarter5(配信を補助するツール)はPeercastStation及びFLV配信に対応済みです。2015/9月現在の最新バージョンは5.2.4.0。
    • バージョン5.2.1.1からFLV配信に対応。
      5.2.0.0以下ではFLV配信の開始に不具合があるのでアップデート推奨(WMV配信は問題無し)。
  • pcyp2 player selector
    • pcyp2はプレイヤーを1つしか選択出来ませんが、pcyp2 player selectorという補助ツールを使えば拡張子別のプレイヤー自動選択が可能になります。
    • 使い方は付属の「readme.txt」をよく読むこと。
    • 2010/10/26時点での最新版はVer1.06.3

編集メモ

  • 編集メモって履歴を書いた方がいいのかな。とりあえずOBSのバッファ関係のテスト結果を編集した。 -- デモタ? 2013-10-01 (火) 12:51:18
  • ビットレートが上がる原因から考えて、映像ソースによるバッファの使い分けが正しいとは思えない。 -- 2013-10-04 (金) 05:32:43
  • FFMLのCBRの項目にもビトレ入れれるけど、どんな値がいいのかなー。いろいろ試して見てるけど・・・ -- 2013-10-12 (土) 00:09:47
  • だから1.7.8はバグ持ってるから強制終了するって言ってるだろ、試してから書き換えな -- 2014-03-14 (金) 03:30:11
  • そんな攻撃的書かなくてもいいやん、もっとまったり行こうぜ -- 2014-03-14 (金) 20:10:08


*1 PeercastStationの開発者であるあれくま氏によるとGUIに表示されるビットレートは過去1秒間の通信量とのこと

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