ffmpeg에서 외부 자막을 사용하여 강제 출력 비디오 지속 시간

ffmpeg에서 외부 자막을 사용하여 강제 출력 비디오 지속 시간

다음 명령을 사용하여 처음부터 30분부터 시작하여 1분 길이의 비디오 파일 조각을 추출하고 외부 파일에서 자막을 추가합니다.

ffmpeg -ss 1800 -i input_video.m4v -ss 1800 -i input_subtitle.srt -map 1:0 -c:a aac -c:v libx264 -c:s mov_text -crf 35 -preset slow -t 60 -avoid_negative_ts 1 output_video.mp4

내가 얻는 문제는 트랜스코딩된 비디오의 지속 시간이 00:01:03.50예상과 다르다는 것입니다 00:01:00.00. 그리고 VLC로 이러한 비디오를 재생할 때 진행률 표시줄이 끝에 도달하기 전에 재생이 중지됩니다.

자막 입력을 제거해야만 재생 시간이 정확히 1분이 됩니다. 정의된 1분 범위 내에서 시작하는 자막의 마지막 문구에 맞게 출력 파일의 지속 시간이 확장된 것 같습니다.

출력 지속 시간을 플래그에 설정된 값과 정확하게 일치시키는 방법이 있습니까 -d?

답변1

ffmpeg가 자막 파일을 구문 분석하는 방식으로 인해 다음 두 가지 옵션을 사용할 수 있습니다.

MP4로 출력되지만 자막을 건너뛸 수도 있음:

ffmpeg -i input_video.m4v -i input_subtitle.srt -ss 1800 -c:a aac -c:v libx264 -c:s mov_text -crf 35 -preset slow -t 60 output_video.mp4

이렇게 하면 60초 파일이 생성되지만 1800년대 이전에 시작하지만 그 이상으로 확장되는 자막은 건너뜁니다.

MKV로 출력:

ffmpeg -i input_video.m4v -i input_subtitle.srt -ss 1800 -c:a aac -c:v libx264 -c:s ass -crf 35 -preset slow -t 60 output_video.mkv

여기에는 1800년대 이전에 시작하여 그 이후까지 확장되는 모든 자막이 표시되며 이에 상응하는 길이를 갖습니다. 즉, 자막이 1795에서 시작하여 1802에서 끝나는 경우 출력에서 ​​2초 동안 지속됩니다.

2단계 방식

ffmpeg -i subfile -ss 1800 -t 60 sub.ass

그리고

ffmpeg -ss 1800 -i video.mp4 -i sub.ass -c:s mov_text out.mp4

이를 통해 원하는 비디오 세그먼트에 해당하는 서브를 추출한 다음 비디오와 다중화합니다.

관련 정보