출력이 .avi 파일로 지정된 경우 .avi 파일의 일부를 자르는 것이 정확하지 않습니다(단, 출력을 .mp4 파일로 지정하면 정확함).

출력이 .avi 파일로 지정된 경우 .avi 파일의 일부를 자르는 것이 정확하지 않습니다(단, 출력을 .mp4 파일로 지정하면 정확함).

일부를 잘라내려고 합니다..avi명령을 사용하여 파일

ffmpeg -ss 346 -i input.avi -t 5 -c copy -y output.avi

출력 영상의 전체 길이는 약 13초로, 필요한 것보다 8초가 더 길어졌습니다. 그러나 출력 파일의 확장자가 다음과 같이 지정되면.mp4, 그러면 절단이 정확합니다. 왜 이런 일이 발생하는지 이해하고 싶습니다.

도움을 주시면 감사하겠습니다.

답변1

AVI 및 MP4는 데이터 스트림을 위한 컨테이너이며 MP4는 훨씬 더 많은 기능을 제공합니다.

MP4 컨테이너를 사용하면 내부적으로목록 편집.

예를 들어 소스 비디오에서 346초~351초(현재 수행 중인 작업)를 복사하려고 한다고 가정해 보겠습니다. 346초 이전의 가장 가까운 키프레임이 338초인 경우 ffmpeg는 실제로 338초에서 시작하는 비디오를 복사하지만 MP4의 편집 목록 매직을 사용하여 미디어 플레이어에게 처음 8초를 건너뛰도록 지시합니다.

같은 논리~할 것 같다컷의 끝 부분에도 적용됩니다(확실하지 않으며 테스트해야 함). 그렇다면 편집 목록은 미디어 플레이어에게 더 일찍 재생을 중지하도록 지시합니다.

AVI는 MP4처럼 편집 목록을 지원하지 않으므로 AVI 컨테이너를 사용하면 전체 13초 컷을 볼 수 있습니다.

이것이 의미가 있기를 바랍니다. 질문이 있는 경우 댓글을 남겨주시면 명확하게 설명하도록 노력하겠습니다.

편집하다ffmpeg가 수행하는 작업을 시각적으로 보여주기 위해 다이어그램을 만들었습니다.

다시 인코딩하지 않을 때 ffmpeg가 어떻게 자르나요?

관련 정보