ffmpeg를 사용하여 서로 다른 오디오 및 자막 스트림으로 여러 비디오를 연결합니다.

ffmpeg를 사용하여 서로 다른 오디오 및 자막 스트림으로 여러 비디오를 연결합니다.

(사용자가 업로드한) 비디오에 워터마크 로고를 추가하고 이를 인트로와 연결하고 싶습니다. 결과 비디오는 입력 비디오와 동일한 형식을 가져야 합니다.

문제는 업로드된 비디오에 둘 이상의 오디오 스트림이 있고 자막이 포함되어 있을 때 시작됩니다.

이 명령과 같은 것을 사용하여 오디오 문제를 해결했습니다.

ffmpeg -i intro.mp4 -i input.mkv -i logo.png -filter_complex "[0:v] scale=480:270,setdar=16/9 [a]; [1:v] scale=480:270,setdar=16/9 [b]; [2:0] scale=480:270 [wm]; [b][wm] overlay[ov]; [a][0:a:0][0:a:0] [ov][1:a:0][1:a:1] concat=n=2:v=1:a=2 [vd] [a0] [a1]" -map "[vd]" -map "[a0]" -map "[a1]" -y output.mkv

그러나 출력에는 자막이 포함되어 있지 않습니다.

누구든지 도와줄 수 있나요?

답변1

사용

ffmpeg -i intro.mp4 -i input.mkv -itsoffset 4.5 -i input.mkv -i logo.png
  -filter_complex
     "[0:v] scale=480:270,setdar=16/9 [a];
      [1:v] scale=480:270,setdar=16/9 [b];
      [3:0] scale=480:270 [wm];
      [b][wm] overlay[ov];
      [a][0:a:0][0:a:0] [ov][1:a:0][1:a:1] concat=n=2:v=1:a=2 [vd] [a0] [a1]"
  -map "[vd]" -map "[a0]" -map "[a1]" -map 2:s? -c:s copy -y output.mkv

맵 문을 지정하면 매핑된 스트림만 포함됩니다. 따라서 자막 스트림을 명시적으로 매핑해야 합니다. 하나도 없을 수 있으므로 ?조건부 할당을 나타내기 위해 후행을 추가했습니다.

이제 인트로가 비디오 앞에 오므로 출력에서 ​​자막 타임스탬프가 잘못되기 때문에 입력 비디오를 두 번 공급했습니다. 타임스탬프 오프셋이 두 번째 입력에 추가되고 해당 피드에서 자막이 매핑됩니다. 값 itsoffset은 인트로 길이(초)와 동일해야 합니다. 자막을 트랜스코딩할 필요가 없습니다.

관련 정보