如何使用一個編碼器進行多碼流輸出

如何使用一個編碼器進行多碼流輸出

我想從一個輸入產生 2 個串流並使用硬體編碼器:

$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 輸入後使用硬體編碼器進行 2 個輸出嗎?

答案1

當您使用濾鏡時,您實際上是先對影片進行解碼,處理原始像素,然後在輸出視訊串流之前將像素轉發到編碼器。

所以,順序是:

Input --> Demux --> Decode --> Filter --> Encode --> Mux --> Output

這意味著您不能使用兩個不同的過濾器而僅使用一個編碼器。你必須這樣做:

Input --> Demux --> Decode
                         \__ Filter 1 --> Encode --> Mux --> Output
                          |_ Filter 2 --> Encode --> Mux --> Output

相關內容