So verwenden Sie einen Encoder für die Multi-Stream-Ausgabe

So verwenden Sie einen Encoder für die Multi-Stream-Ausgabe

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

verwandte Informationen