3

ライブテレビ(dvbt:mpeg.ts-files)を記録し、すぐにffmpegでwebmファイルにトランスコードするアプリケーションを構築しています。私はそれを一定の割合で行うことができます。そのため、ffmpeg は成長するファイルに追いつきません。

今、このファイルを html5 Web サイトで再生したいと考えています。これは機能しますが、ffmpeg のトランスコーディングが完了していない場合 (および webm ファイルがまだ成長している場合)、シークできません (進行状況バーはありません)。

トランスコード中にビデオ ファイルをシークすることはできますか? いくつかの ffmpeg 設定がありませんか? それともwebmが問題ですか?

これは私が今持っているものです:

ffmpeg -re "inputfile.ts" -y -f webm -vcodec libvpx -acodec libvorbis \ 
       -aq 90 -ac 2 -b:v 1300k -threads 2 "outputfile.webm"

ありがとうございました

4

1 に答える 1

1

これが役立つかどうかはわかりませんが、ウェブ上でストリーミングするために ffmpeg トランスコーディングをフラッシュに変換することで、あなたと同様のソリューションに取り組んできました。シーク先の位置を収集するためにプレーヤーで必要な JavaScript をシークするためのメソッド。これにより、プレーヤーの URL が変更され、バックエンドに新しい位置からストリーミングを再開するように指示されます。たとえば、次のようになります。

http://server/player.php?video=x.flv&pos=1838

バックエンドでは、ffmpeg コマンドは次のようになります。

ffmpeg -y -ss 1838 -i x.mpg -s 320x240 -g 30 -r 24 -f flv -deinterlace -ac 1 -ar 11025 -ab 64k -b 256k

ただし、私が遭遇した問題は、-ss により、シーク時に ffmpeg がビデオのスナップショットを取得することでした。したがって、ビデオがライブ録画 (まだ書き込み中) である場合、トランスコードされたストリームは、再生が「相対終了」(ストリーミングが開始されたときに終了した時点) に達すると終了します。私はまだこの問題の解決策を見つけていません。

ライブ録画を見ることに興味がない場合は、HTML5 プレーヤーに JavaScript を挿入する方法があれば、同様の方法が役立つと思います。

于 2012-08-25T19:59:43.270 に答える