ffmpeg를 사용하여 미디어 파일을 다른 파일과 정확히 동일하게 다시 인코딩

ffmpeg를 사용하여 미디어 파일을 다른 파일과 정확히 동일하게 다시 인코딩

저는 긴 미디어 파일 중간에 매우 짧은 미디어 파일을 배치할 수 있어야 하는 프로그램을 작성하고 있습니다. 이를 위해 ffmpeg를 사용하고 싶습니다. 긴 파일을 반으로 분할한 다음 3개 파일을 함께 연결할 수 있다는 것을 알고 있습니다(긴 비디오의 전반부 > 짧은 비디오 > 긴 비디오의 후반부). concat 필터를 사용하여 이 작업을 시도했지만 관리형 kubernetes 공급자에 GPU 리소스에 대한 옵션이 없기 때문에 시간이 매우 오래 걸립니다.

나는 첫 번째와 마지막 클립이 항상 완전히 동일한 형식이기 때문에(동일한 소스 파일에서 분할되었기 때문에) 중간의 매우 짧은 클립만 두 부분과 일치하도록 변환할 수 있다는 것을 깨달았습니다. 그러면 3개의 클립이 모두 해당 형식에 포함되며 간단히 concat remuxer를 사용할 수 있습니다.

짧은 클립은 오디오 클립에 대해 동일한 단일 프레임을 반복해서 반복하여 ffmpeg로 생성되었습니다. 따라서 내 아이디어가 가능하다면 ffmpeg는 오디오와 단일 루핑 프레임만 트랜스코딩하면 됩니다. 전체 긴 클립과 짧은 클립을 처음부터 트랜스코딩하는 것이 훨씬 더 좋습니다.

ffmpeg가 다른 비디오와 일치하도록 비디오를 다시 인코딩하려면 어떻게 해야 합니까?정확히그래서 그것들을 함께 리먹싱할 수 있나요?

답변1

댓글에서 @Rotem이 언급한 대로 ffprobe적절한 스크립트를 사용하여 원본 비디오의 속성을 분석할 수 있지만 이것만으로는 충분하지 않습니다.

전체 스트림을 트랜스코딩하지 않고 임의의 타임스탬프에서 비디오 스트림을 적절하게 자르는 것은 불가능합니다(적어도 ffmpeg에서는). 키프레임 경계에서만 가능합니다. 따라서 키프레임의 위치도 분석하고 이에 따라 잘라낸 타임스탬프를 선택해야 합니다. 이에 대한 내용은 다음 항목을 참조하세요.FFmpeg를 사용하여 특정 타임스탬프 이전에 가장 가까운 키프레임의 타임스탬프를 얻는 방법은 무엇입니까?)

관련 정보