1

私は Java サーブレット API を持っています。これは、要求されると、ffmpeg を使用してビデオ ファイルのライブ変換を開始し、それを mediastreamsegmenter にパイプして、http ライブ ストリーミング用にセグメント化します。私が望むのは、Java サーブレットがインデックス ファイルの URL を生成するとすぐに (4 番目のトランスポート ストリーム ファイルが書き込まれた後) 返すようにすることで、ユーザーは変換が完全に完了するのを待たずにビデオの視聴を開始できます。

これを実現する方法として、mediastreamsegmenter の -file-complete-command 引数にコマンドを渡し、最後に完了したファイルがインデックスファイル。

私が思いついたもう 1 つのアイデアは、ビデオの最初の 30 秒ほどをセグメント化してから応答を返し、残りのビデオをサーブレットの何らかのバックグラウンド タスクに追加することでした。ただし、これがどのように行われるかはわかりません。サーブレットが返された後も引き続き実行されるこの変換を行う別のスレッドを作成できますか? これを行うためのより良い方法があるに違いないと確信しています。任意の考えをいただければ幸いです。

4

2 に答える 2

1

そのようなタスクには別のスレッドが絶対に必要だと思います。なぜ「なければならない」より良い方法なのですか?

于 2011-01-02T23:55:33.533 に答える
0

私はビデオストリーミングにはあまり興味がありませんが、解析を実行するスレッド(PARSE_THREADと呼ばれる)を開始し、サーブレット(SERVLET_THREADに存在する)に妥当な時間待機するように指示できますか?ffmpeg変換は最初の30秒を解析するのにほぼ同じ時間かかると思うので、PARSE_THREADを開始し、その時間SERVLET_THREADをスリープしてから、サーブレットにストリーミングを開始させます。

別のスレッドを使用することは、その問題の良い解決策です。

于 2011-09-20T10:27:06.587 に答える