1 つの入力から 2 つのストリームを作成し、1 つの HW エンコーダーを使用します。
$ffmpeg -f v4l2 -s 1440x576 -i /dev/video1 -vcodec cedrus264 -filter:v 'crop=720:576:0:0' -f mpegts udp://192.168.1.120:1234 -vcodec cedrus264 -filter:v 'crop=720:576:720:0' -f mpegts udp://192.168.1.120:1235
Metadata:
encoder : Lavf57.82.101
Stream #0:0: Video: h264 (cedrus264), nv12, 736x576, q=2-31, 64 kb/s, 9 fps, 90k tbn, 9 tbc
Metadata:
encoder : Lavc57.106.101 cedrus264
[cedrus264 @ 0x1b65fc0] VE Open error.
Error initializing output stream 1:0 -- Error while opening encoder for output stream #1:0 - maybe incorrect parameters such as bit_rate, rate, width or height
この問題を解決するにはどうすればよいですか? 1 つの入力を切り取った後、1 つの HW エンコーダーを使用して 2 つの出力を作成できますか?
答え1
フィルターを使用する場合、基本的には最初にビデオをデコードし、生のピクセルを操作してから、ビデオ ストリームを出力する前にピクセルをエンコーダーに転送します。
順序は次のようになります。
Input --> Demux --> Decode --> Filter --> Encode --> Mux --> Output
つまり、2 つの異なるフィルターを使用し、1 つのエンコーダーのみを使用することはできません。次の操作を行う必要があります。
Input --> Demux --> Decode
\__ Filter 1 --> Encode --> Mux --> Output
|_ Filter 2 --> Encode --> Mux --> Output