멀티 스트림 출력에 하나의 인코더를 사용하는 방법

멀티 스트림 출력에 하나의 인코더를 사용하는 방법

하나의 입력에서 2개의 스트림을 만들고 하나의 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개의 입력을 크롭한 후 2개의 출력에 하나의 HW 인코더를 사용할 수 있나요?

답변1

필터를 사용하면 기본적으로 비디오를 먼저 디코딩하고 원시 픽셀에서 작업한 다음 비디오 스트림이 출력되기 전에 픽셀을 인코더로 전달하게 됩니다.

따라서 순서는 다음과 같습니다.

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

이는 두 개의 서로 다른 필터를 사용할 수 없고 하나의 인코더만 사용할 수 있음을 의미합니다. 당신은해야 할 것입니다 :

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

관련 정보