lighttpd / nginx、Mplayer(Mencoder)、Ruby、Flvtool2を使用したスト​​リーミングビデオ

サイトまたはポータルでビデオサービスが必要になるとすぐに、リソースのユーザーによってアップロードされたビデオファイルをブラウザーが理解できるフラッシュビデオ形式に変換することについて、開発者にすぐに疑問が生じます。



この問題の研究は、次の記事に反映されています。



ストリーミングビデオを実装する段階:
  1. ストリーミングモジュールが有効なサーバー

    ビデオ処理プラットフォームを実装するための2つの最も一般的なオプションがあります。
    • lighthttpd

      彼にはそれが必要です:
    • nginx

      彼にはそれが必要です:
      • nginxをインストールします
      • -with-http_flv_moduleオプションを使用してnginxを再コンパイルします。 新しいhttp_flv_moduleモジュールでは、ストリーミング機能がバージョン0.4.7で最初に実装されました(http://blog.kovyrin.net/files/flv_fix.patchで修正されているストリーミング実装に迷惑なエラーがありました)。 0.4.8では、エラーはなくなりました。

        # ./configure --with-http_flv_module ...SOME-OTHER-OPTS...



      • 次のステップは、nginx.confでflvファイルのストリーミングをアクティブにすることです。

        server {<br/> ...<br/> location ~ \.flv$ {<br/> flv;<br/> }<br/> ...<br/> }



      レビューによると、nginxサーバーはより受け入れられるオプションです。

      こちらもご覧ください
  2. ビデオファイルを、Flash Video(flv)のストリームとしてネットワーク経由で送信するための形式に変換する

    最も一般的な2つの変換オプションがあります。
    • ffmpegモジュールを使用する

      詳細はこちらをご覧ください。

      ただし、これはタスクに最適なツールではありません。 ffmpegが理解できる中間形式を使用して、ビデオの2段階のトランスコーディングを整理します。
    • MPlayer / MEncoderを使用する

      これを行うには、以下を行う必要があります。

      • 公式mplayerウェブサイトから mplayerのソースパッケージをダウンロードしてコンパイルします。
      • コンパイル段階で無効なコーデックのセットを最小化します。

        mencoderを使用した再コーディングの例:

        mencoder The.Simpsons.18x05.avi \<br/> -o simpsons.flv -of lavf \<br/> -oac mp3lame -lameopts abr:br=56 -srate 22050 -ovc lavc \<br/> -ofps 25 \<br/> -lavcopts vcodec=flv:vbitrate=500:mbd=2:mv0:trell:v4mv:cbp:last_pred=3 \<br/> -lavfopts i_certify_that_my_video_stream_does_not_use_b_frames \<br/> -vf scale=320:240





        ドキュメント- こちらをご覧ください170 mbファイルは17〜20分以内にトランスコードされます。 つまり 同様のサイズのファイルを禁止するか、バックグラウンドでプロセスを有効にする必要があります。
      注:

      Mplayerには既にオーディオをデコードするためのコーデックがあります。 Ffmpegの場合、オーディオをデコードするための追加のLameコーデックをインストールする必要があります。
  3. ビデオファイルのメタデータを取得します。

    ビデオをスクロールするには、メタデータの取得が必要です。

    これにはflvtool2ユーティリティが必要です。

    Rubyで書かれており、 Flvtool2をダウンロードするには、1.8.4以上のバージョンが必要です。

    flvtool2パッケージをインストールするには:

    gem install flvtool2-1.0.6.gem





    ファイル内のメタ情報を更新するには:

    flvtool2 -UP simpsons.flv





    注:

    blog.kovyrin.netのソースは、 flvtool2の現在のバージョンには、メンコーダーによって生成されたファイルでこのソフトウェアを使用できないようにする、小さいが非常に不快なエラーが含まれていることを示しています。 flvtool2を実行すると、次の結果が得られます。

    /usr/local/lib/site_ruby/1.8/flv/amf_string_buffer.rb:163: [BUG] Segmentation fault





    この問題を解決するには、flvtool2ソースでlib / flv / amf_string_buffer.rbファイルを開き、次の行163を変更します。

    write [(time.to_i * 1000.0)].pack('G')





    に:

    write [(time.to_f * 1000.0)].pack('G')



    ただし、ソースwebnext.ruには同様のエラーは示されていません-flvtool2の新しいバージョンで既に修正されている可能性があります。
  4. キュー作成

    ビデオ変換はリソースを大量に消費するプロセスであることに注意してください。 低優先度で実行する必要があります。 さらに、変換を待機しているファイルからキューを作成する必要があります。 キューの長さは、特定の各サーバーの構成に基づいて計算する必要があります。
  5. ストリーミングビデオを理解するFlashプレーヤー

    Flowplayer JW FLVメディアプレーヤー




All Articles