トップ «前の日記(2011-02-06) 最新 次の日記(2011-02-11)» 編集

Days of Speed

過ぎゆく日々を書こう。忘れっぽい未来の自分のために


2011-02-09

_ OSC香川のことまとめてないね

さーせん。がんばります。

Tags: life

_ IEEE1394カメラとたった一行でUstream.tv高画質配信できた

ffmpegを使っての高画質配信は日経Linuxに載ってたことなので珍しいもんでもないけど、たった一行で高画質配信できたので見てくださいな。

RTMPでストリーミングしていると140秒ほどでffmpegが落ちるので実用では使えません。 ごめんなさい。

2012.2.12追記

衝撃の事実が判明しました。 「 □LinuxでUstream(ffmpegで高解像度配信!?完結編) | Linux Install Memo 」さんの情報によると、rtmpのflashverを flashver=FMLE/3.0としていた部分を flashver=FME/3.0 とすれば、落ちること無く使えるそうです。

え…。orz

ということで、ここの記述も変更しました。


1. Ustream.tvからFlash Media Encoderの設定ファイルをダウンロードする

Ustream.tvにログインして「番組設定」の「その他の設定」を開き、 「詳細設定」の「Flash Media Encoder XML ファイル」からFlash Media Encoderの設定ファイルをダウンロードしておきます。

2. 自分の番組番号と番組に設定された文字列を確認する

エディタでustream.fme.(番組名).xmlを開いて、以下の個所を確認しておく。 文字コードはUTF-16LEです。

<output>
  <rtmp>
    <url>rtmp://1.(番組番号).fme.ustream.tv/ustreamVideo/(番組番号)</url>
    <backup_url></backup_url>
    <stream>(ランダムな文字列)offair</stream>
  </rtmp>
</output>

3. IEEE1394でカメラをつないでコマンドを実行。

dvgrabのrawストリームをパイプでつないでffmpegに流しこんでます。

コマンドの説明をするとdvgrabはフォーマットをDV raw(-f raw)に設定してハイフンで標準出力に流します。 ffmpegではDVフォーマット(-f dv)をハイフンで標準入力からdvgrabのデータを受けます。

あとはFMEの設定ファイルを見ながら、解像度(-s 320x240)、フレームレート(-r 15)、オーディオサンプリングレート(-ar 22050)、オーディオビットレート(-ab 48k)、映像ビットレート(-b 300k)、出力フォーマットにflv(-f flv)を指定し、rtmpで出力します。 rtmpの指定はFMEの設定で確認した番組番号とランダムな文字列を指定すればOKです。

$ dvgrab -f raw - | ffmpeg -f dv -i - -s 320x240 -r 15 -ar 22050 -ab 48k -b 300k -f flv 'rtmp://1.(番組番号).fme.ustream.tv/ustreamVideo/(番組番号)/(ランダムな文字列)offair flashver=FME/3.0\20(compatible;\20FMSc/1.0)'

4. Ustream.tvのライブ配信ページを開きます

Ustream.tvの「ライブ配信」ボタンを押して、「より高画質へ」ボタンが表示されなければ成功です。

高画質配信が成功した場合の画面(より高画質へボタンがない)

失敗しているときは、「より高画質へ」ボタンが表示されています。

高画質配信が失敗した場合の画面(より高画質へボタンがある)

5. 感想

他のページでffmpegの高画質配信は重いと書いてるけど、dvgrabとffmpegを使っての配信は言うほど重くないよ。 ていうかwebcamstudioがパワーをバカ食いするので、それと混同しているような気がする…。

これの応用としては日経Linuxに載ってたようにwebcamstudioを使ってvloopbackの出力からffmpegにつないだり、音声にpulseを使ってミキシングしたりできますね。

(2011.2.10追記)

ffmpegに「-f alsa -i pulse」と追加すれば問題なくPulseで使えました。 ステレオで配信する場合は「-ac 2」(オーディオチャンネルを2)と追加します。

$ dvgrab -f raw - | ffmpeg -f dv -i - -s 320x240 -r 15 -f alsa -i pulse -ar 22050 -ab 48k -ac 2 -b 300k -f flv 'rtmp://1.(番組番号).fme.ustream.tv/ustreamVideo/(番組番号)/(ランダムな文字列)offair flashver=FME/3.0\20(compatible;\20FMSc/1.0)'

h.264で配信する場合はオプションを「-vcodec libx264 -vpre medium」とつけます。vpreはx264のプリセットで、/usr/share/ffmpeg/以下にlibx264-*という形で置いてあるので、その名前を指定します。 にしても、さすがにh.264でエンコードさせると重たい…。

$ dvgrab -f raw - | ffmpeg -f dv -i - -s 320x240 -r 15 -f alsa -i pulse -ar 22050 -ab 48k -ac 2 -vcodec libx264 -vpre medium -b 300k -f flv 'rtmp://1.(番組番号).fme.ustream.tv/ustreamVideo/(番組番号)/(ランダムな文字列)offair flashver=FME/3.0\20(compatible;\20FMSc/1.0)'
Tags: linux ustream
本日のツッコミ(全3件) [ツッコミを入れる]
_ masterq (2011-02-13 06:37)

ffmpeg -f video4linux2 -i /dev/video0 -s 320x240 -r 15 -f alsa -i pulse -ar 22050 -ab 48k -b 300k -f flv 'rtmp://1.(番組番号).fme.ustream.tv/ustreamVideo/(番組番号)/(ランダムな文字列)offair flashver=FMLE/3.0\20(compatible;\20FMSc/1.0)'<br>とかしてwebcamで同じことやってみたんですが、さっぱり高画質じゃないような。。。

_ masterq (2011-02-13 06:38)

やっぱりいいカメラ買わないとダメですね。。。

_ nogajun (2011-02-13 22:45)

そうですねぇ。安くてもビデオカメラのほうが画質は上ですね。<br>一時期、機材を軽くしようとwebcamにしたのですが、やっぱり無理があってビデオカメラにしました。


2001|12|
2002|01|02|03|04|05|06|07|08|09|10|11|12|
2003|01|02|03|04|05|06|07|08|09|10|11|12|
2004|01|02|03|04|05|06|07|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|06|08|12|
2011|01|02|03|06|07|08|09|10|11|12|
2012|01|02|03|05|06|07|08|09|10|11|12|
2013|01|02|03|04|05|06|07|08|09|10|12|
2014|02|03|04|05|06|07|08|09|10|11|12|
2015|01|02|03|04|05|06|07|08|09|10|11|12|
2016|01|02|03|04|05|06|07|10|11|12|
2017|01|02|11|12|

クリエイティブ・コモンズ・ライセンス Jun NOGATA を著作者とするこの 作品クリエイティブ・コモンズの 表示 - 継承 4.0 国際 ライセンスで提供されています。