web-dev-qa-db-ja.com

複数のffserverストリームをリアルタイムでグリッドに結合するにはどうすればよいですか?

Ffmpeg/ffserver/zoneminderを使用してCCTVシステムをセットアップしようとしていますが、すべてのJavaアプレットの境界線とウィンドウドングルがなく、フルスクリーンの4x4グリッドだけで見栄えの良い4x4グリッドが必要です。 .ffserverでブラウザ用のwebmとzoneminder用のmpgをストリーミングできましたが、16個のwebmビデオが埋め込まれたページを作成すると、一度に約5個をロードすると停止します。16個のライブを取得する方法を探しています。ストリームを作成し、それらを組み合わせて、グリッドに配置された幅と高さの4倍の単一のライブストリームにします。

私はffmpegを使用して、以下を使用して/etc/ffserver.confの適切な設定でこれを処理しようとしました。

/usr/local/bin/ffmpeg -i http://localhost:8090/0.webm -i http://localhost:8090/1.webm -i http://localhost:8090/2.webm -i http://localhost:8090/3.webm -i http://localhost:8090/4.webm -i http://localhost:8090/5.webm -i http://localhost:8090/6.webm -i http://localhost:8090/7.webm -i http://localhost:8090/8.webm -i http://localhost:8090/9.webm -i http://localhost:8090/10.webm -i http://localhost:8090/11.webm -i http://localhost:8090/12.webm -i http://localhost:8090/13.webm -i http://localhost:8090/14.webm -i http://localhost:8090/15.webm -filter_complex "
nullsrc=size=1280x960 [bg];
[0:v] setpts=PTS-STARTPTS, scale=320x240 [v0];
[1:v] setpts=PTS-STARTPTS, scale=320x240 [v1];
[2:v] setpts=PTS-STARTPTS, scale=320x240 [v2];
[3:v] setpts=PTS-STARTPTS, scale=320x240 [v3];
[4:v] setpts=PTS-STARTPTS, scale=320x240 [v4];
[5:v] setpts=PTS-STARTPTS, scale=320x240 [v5];
[6:v] setpts=PTS-STARTPTS, scale=320x240 [v6];
[7:v] setpts=PTS-STARTPTS, scale=320x240 [v7];
[8:v] setpts=PTS-STARTPTS, scale=320x240 [v8];
[9:v] setpts=PTS-STARTPTS, scale=320x240 [v9];
[10:v] setpts=PTS-STARTPTS, scale=320x240 [v10];
[11:v] setpts=PTS-STARTPTS, scale=320x240 [v11];
[12:v] setpts=PTS-STARTPTS, scale=320x240 [v12];
[13:v] setpts=PTS-STARTPTS, scale=320x240 [v13];
[14:v] setpts=PTS-STARTPTS, scale=320x240 [v14];
[15:v] setpts=PTS-STARTPTS, scale=320x240 [v15];
[bg][v0] overlay=shortest=1 [bg];
[bg][v1] overlay=shortest=1:x=320 [bg];
[bg][v2] overlay=shortest=1:x=640 [bg];
[bg][v3] overlay=shortest=1:x=960 [bg];
[bg][v4] overlay=shortest=1:y=240 [bg];
[bg][v5] overlay=shortest=1:x=320:y=240 [bg];
[bg][v6] overlay=shortest=1:x=640:y=240 [bg];
[bg][v7] overlay=shortest=1:x=960:y=240 [bg];
[bg][v8] overlay=shortest=1:y=480 [bg];
[bg][v9] overlay=shortest=1:x=320:y=480 [bg];
[bg][v10] overlay=shortest=1:x=640:y=480 [bg];
[bg][v11] overlay=shortest=1:x=960:y=480 [bg];
[bg][v12] overlay=shortest=1:y=720 [bg];
[bg][v13] overlay=shortest=1:x=320:y=720 [bg];
[bg][v14] overlay=shortest=1:x=640:y=720 [bg];
[bg][v15] overlay=shortest=1:x=960:y=720" http://localhost:8090/all_webm.ffm

ただし、FPSはわずかであり、ライブストリーミングには適していません。

誰かがffmpegでこれを行う方法を知っていますか、またはffserverにプラグインするそれを行うことができるプログラムがありますか?

3
CoryG

あなたは16のストリームを処理しているので、CPUは変換するのに苦労しています。そのすべてのデータを処理するのに十分なCPUパワーが真剣に必要です。

また、各動画を拡大縮小しているようです。スケーリングは、CPUで非常に時間のかかるプロセスです。おそらく、スケーリングされたビデオを提供するようにカメラストリームを設定できるので、CPUはそれらをまとめるだけで済みます。

一部のエンコーダーは他のエンコーダーよりも10倍高速であるため、エンコード/デコードの他のオプションを探すこともできます。

1