□LinuxでUstream(ffmpeg使って高解像度配信!?)□LinuxでUstream(ffmpeg使って高解像度配信!?)実家のライブカメラが壊れたので、AxisとかPanasonicのネットワークカメラをあれこれ物色したけど、どうにも高いというか、また壊れたらなーと思って、今回はLinuxでUSBのWebCam使ってUstreamが出来ないかな、と調べてみた。最近のLinuxならUSBウェブカムは大抵UVC対応なので、プスッと挿して最初から入っているビューアー(レコーダー)ソフトを使うと何の句もなく見ることが出来る。見れるのは/dev/video0とかにカメラが繋がっているからで、FlashについてもLinuxにちゃんとインストールできれば、最低解像度でさっくりUstreamが出来ちゃったりするんだけど、どう見てもこれってQCamレベルの画質(160×120)。ビューアー(レコーダー)ソフトでは1280×720とか、カメラがサポートしている解像度で見れるので、それでやって欲しいんですけど...FireFoxとかでブラウザからやろうとすると無理みたい。高解像度にするならFME...といいたいところだけど、Linux用のなんてでていない。でていないけど、データとしては高解像度になっているので、これをUstream側にポイッとできればいいわけで、みんなあれこれがんばっています。前だとv4l2loopbackとかでループバックさせた上でWebcamstudioを使うとかがあったけど、でもJavaを入れたりとか面倒なのと、当然Javaなので重い。他にもデスクトップ配信をするためのツールが幾つかあったりするけど、こちとらWebCamの映像をそのままUstreamで中継したいのでちょっと違う。2011年02月あたりに日経なんたらで、ffmpegを使ってFMEの代わりとし、高解像度で中継する、と言う記事が出たらしい。これには落ちがあって、いろいろがんばっても二~三分(百数十秒)するとffmpegが止まるという。確かに試してみるとそれくらいで止まって、ご丁寧なことにコマンドプロンプトに戻る。これはいただけない、なんでこんなの記事にした!?さすが日経なんたら。調べてみると、ffmpegは2010年06月あたりにlibrtmpを経由してrtmpプロトコルに対応するようになったらしい。rtmpプロトコルって何ぞや、と言うとFMEとかとUstream送出用クライアントとの間でやりとりするリアルタイムメッセージプロトコルというものらしい。これって時間と言うよりデータ量で止まってしまっているんじゃないかと思う。だいたい5MBちょい(6MB行かない)流すとぷつっと止まる。rtmpと5MBで検索するとこんなサイトが引っかかったりするので、なんか問題解決に少し近づいてきた感があるんですけどどうでしょう?ま、もう少しがんばってみます。HDなUSBカメラ(Microsoftとかロジクールのとか)で見てみると、すげーきれいにUstreamできるんで、何とかしたい。追記1librtmpのmanは見たほうがいいね。X31)にインストールするのにえらい時間がかかったけど、librtmpにも対応しているみたいだったし。言うわけでリンクおいときます。追記2家に帰ってきてから早速あることを試してみた。一度/dev/video0からflvフォーマットで5MBを超えるファイルが作れるかということから。これはあっさりと10MBが余裕で作れた。つづいて、作った10MBのファイルをflvのままrtmpで出力すると...4MBでffmpegが止まる。これはつまりffmpegがどうのというわけではなくて、librtmpがアレなのか、ffmpegがlibrtmpをうまく使えていないということか。追記3その後もあちこちウロウロしたり、GoogleChrome先生の力を借りながらあちこちの海外サイトを見ても、やっぱりffmpegではUstremがうまく出来ないらしい。こんなサイトがあったので、自分も思うところがあってwiresharkを入れて見てみたけど、自分の場合には動きがちょっと違った。いうか、ブラウザでUstreamで配信開始しなくても、単にffmpegでだらだら送信するだけでもやっぱりこけるのでなんだかよく判らない。このサイトの人もjustin.tvを薦めているみたいだし、確かにこれでもやりたかったことはできそうなので、Ustreamはあきらめてjustin.tvで長時間ストリーミングを試すことにする。追記4上記からjustin.tvにだらだらと長時間ストリーミングしているんですが、なんかしらのタイミングで中継が途切れたとしても、無限ループなスクリプトにしたので、見た感じずーっと中継しているように見えます。(過去の中継記録とかみると、10時間とか86時間くらい中継した形跡もある)これでいいんじゃね?という気になってます。追記5このサイトも収まっているサーバーにWEBCAMつなげようとしたら、Vine5.xでffmpegパッケージとかが古かったのでrtmpに対応していなかった。本家からffmpegの最新版(0.8.5)を取ってきてインストールしてみる。Vineはself-buildでffmpegを入れるので、残りの必要なライブラリ(librtmpとdevel)を入れて、もともとのパッケージのffmpegで表示される./configureオプションの最初の方だけ(笑)をコピーしてmakeしてみる。追記6気分的にはまだ11.01なんだけど、一応これを書いている時点では02日ってことで。本シリーズ、衝撃の完結となりました。詳しくは「□LinuxでUstream(ffmpegで高解像度配信!!完結編)」をご覧ください。コメントをキャンセルメールアドレスが公開されることはありません。*サイト次回のコメントで使用するためブラウザーに自分の名前、メールアドレス、サイトを保存する。