ffmpeg가 이 비디오를 더 짧게 만들지 않는 이유는 무엇입니까?

ffmpeg가 이 비디오를 더 짧게 만들지 않는 이유는 무엇입니까?

동영상 속도를 두 배로 높이려고 합니다.

나는 다음 명령을 사용합니다.

ffmpeg -i output.mp4 -filter:v "setpts=0.5*PTS" output2.mp4

그리고

ffmpeg -i output.mp4 -vf "setpts=0.5*PTS" output3.mp4

나는 인터넷 전체에서 이것이 표준 방법이라고 생각합니다.

그러나 내 모든 파일의 길이는 동일합니다.

joe@joe-Amd-Am4-Home-Office:~$ for file in *.mp4; do duration=$(ffprobe -v error -show_entries format=duration -of default=noprint_wrappers=1:nokey=1 "$file"); echo "$file: $duration seconds"; done
output2.mp4: 373.014000 seconds
output3.mp4: 373.014000 seconds
output.mp4: 373.014000 seconds

무슨 일이 일어나고 있으며 비디오 속도를 적절하게 높이는 방법은 무엇입니까? 나는 우분투를 사용하고 있습니다.

답변1

내 첫 번째 추측은 PTS 접근 방식이 문서화되어 있다는 것입니다.여기, "각 비디오 프레임의 프레젠테이션 타임스탬프(PTS)를 변경하여" 작동합니다.플레이어존중하고 속도를 높일 것입니다. 하지만 아마도 그것이 상황을 바꾸지는 않을 것입니다.보고됨ffprobe본 영상의 길이입니다 .

그러나 내가 가지고 있는 임의의 테스트 mp4를 조작해 보면 비디오 속도가 빨라지는 반면 오디오는 그렇지 않다는 것을 알 수 있습니다. 그러면 나도 를 통해 각 동영상에 대해 동일한 타임스탬프가 표시되는 이유를 설명할 수 있습니다 ffprobe. 이는 위에 링크된 문서의 참고 사항과 일치합니다.

다음 예에서는 오디오 스트림이 변경되지 않으므로 이상적으로는 를 사용하여 비활성화해야 합니다 -an.

에 대한 또 다른 답변수퍼유저비디오와 오디오의 속도를 높이기 위해 다음과 같은 복잡한 필터를 제공합니다.

ffmpeg -i input.mkv -filter_complex "[0:v]setpts=0.5*PTS[v];[0:a]atempo=2.0[a]" -map "[v]" -map "[a]" output.mkv

그리고 그것은 나에게 효과적이며 를 통해 길이의 절반을 보여줍니다 ffprobe.

관련 정보