Ich möchte aus einem Eingang zwei Streams machen und einen HW-Encoder verwenden:
$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
Wie löse ich dieses Problem? Kann ich einen HW-Encoder für 2 Ausgänge verwenden, nachdem ich 1 Eingang zugeschnitten habe?
Antwort1
Wenn Sie einen Filter verwenden, dekodieren Sie im Wesentlichen zuerst das Video, arbeiten an den Rohpixeln und leiten die Pixel dann an einen Encoder weiter, bevor der Videostream ausgegeben werden kann.
Die Reihenfolge ist also:
Input --> Demux --> Decode --> Filter --> Encode --> Mux --> Output
Das bedeutet, dass Sie nicht zwei verschiedene Filter verwenden können und nur einen Encoder verwenden. Sie müssten Folgendes tun:
Input --> Demux --> Decode
\__ Filter 1 --> Encode --> Mux --> Output
|_ Filter 2 --> Encode --> Mux --> Output