
다음 명령을 사용하여 처음부터 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
이를 통해 원하는 비디오 세그먼트에 해당하는 서브를 추출한 다음 비디오와 다중화합니다.