0

ffmpegを使用して、ライブストリームをエンコードしてFlashMediaServerに公開したいと思います。iOSデバイスをサポートするには、HTTPライブストリーミングも実装する必要があります。ビデオはH.264形式である必要があり、オーディオはAACである必要があります。私はffmpegを使った経験があまりなく、これを機能させるのに苦労しています。これは私が試したコマンドです(そしていくつかのバリエーションもあります):

ffmpeg.exe -threads 15 -f dshow -i video="USB2.0 UVC WebCam":audio="Microphone (Realtek High Defini" \
      -map_channel 0.1.1 -r 24 -acodec libvo_aacenc -ar 22050 -ab 128k -vcodec libx264 \
      -s vga -vb 100k -f flv "rtmp://<public-dns>/livepkgr/livestream1?adbe-live-event=liveevent" \
      -r 24 -acodec libvo_aacenc -ar 22050 -ab 128k -vcodec libx264 -s qvga -vb 200k \
      -f flv "rtmp://<public-dns>/livepkgr/livestream2?adbe-live-event=liveevent" \
      -r 24 -acodec libvo_aacenc -ar 22050 -ab 128k -vcodec libx264 -s vga -vb 350k 
      -f flv "rtmp://<public-dns>/livepkgr/livestream3?adbe-live-event=liveevent"

これを実行すると、FMSに接続しているように見えますが、ドロップされたフレームに関する多くのエラーメッセージが表示されます。フレームが正常にエンコードされているかどうかはわかりません。私のCPU使用率も非常に高いです。個々のストリームの1つに*.m3u8ファイルのURLを入力すると、FMSから404エラーが発生します(ただし、メインのlivestream.m3u8ファイルにはアクセスできます)。また、FMSの代わりにファイルに出力しようとしましたが、成功しませんでした。私が得るのは、非常に文字化けした音だけで、ビデオはありません。

これを機能させるために使用する必要があるオプション/コマンドに関する提案はありますか?FMSでffmpegを使用してMP4ビデオでHTTPダイナミックストリーミング/HLSを実行している人はいますか?私はしばらくの間HDS/HLSを機能させるのに苦労してきました、そしてどんな助けでも大いに感謝されます!違いはないはずですが、私はAmazonEC2でAMIイメージを使用してFMSを使用しています。

ありがとう!

4

1 に答える 1

2
-threads 15

私はその価値を深く疑っています。スイッチに関する私自身の調査と実験にthreadsよると、4 を超える値はすべて間違いです。より低い値、および/または2で割り切れる値を使用して、それを削除してみてください。

-f flv

私もこの価値観に深く疑問を感じています。FLV と h.264 はうまく連携しません。代わりに MP4 を使用してください。

CPU が「高」であると述べていますが、パーセンテージについては言及していません。また、3 つの異なるビット レートをエンコードしていることにも注意してください。事実上、3 つの同時エンコード ジョブです。また、実行しているCPUについては言及していません。Pentium 4 または Core 2? 私は驚かないでしょう。最新の Core i7 で十分です。

なぜFFmpegを使用しているのですか?Adobe のFlash Media Live Encoderを使用する方が簡単かもしれません。

于 2012-04-20T10:32:40.833 に答える