
GoPro Hero10에서 가져온 30초짜리 240fps 동영상이 있습니다. 이제 1/4 속도가 되어야 하는 "슬로우 모션"을 만들고 싶습니다. 따라서 출력은 2분 @ 60fps가 됩니다. (사운드도 변환되어야 합니다. 이로 인해 음조가 낮아지는 것을 알고 있습니다. 괜찮습니다.)
약간의 연구 끝에 나는 다음과 같은 결론을 내렸습니다.
ffmpeg -i input.mp4 -filter_complex "[0:v]setpts=4.0*PTS[v];[0:a]atempo=0.5,atempo=0.5[a]" -map "[v]" -map "[a]" output-0.25.mp4
하지만 확인해 본 ffmpeg -i output-0.25.mp4
결과 fps는 여전히 240입니다(길이는 정확하고 슬로우모션이고 소리는 괜찮지만 파일 크기가 상당히 크고 앞서 말했듯이 대상 장치에서 재생하기에는 fps가 너무 많습니다).
그래서 다시 검색해서 추가해서 다음 -r 60
과 같이 결론을 내렸습니다.
ffmpeg -i input.mp4 -filter_complex "[0:v]setpts=4.0*PTS[v];[0:a]atempo=0.5,atempo=0.5[a]" -map "[v]" -map "[a]" -r 60 output-0.25.mp4
이제 검사 결과에도 올바른 fps가 표시되지만 "느린 슬로모션"인 것처럼 보이고 소리가 긁히는 듯한 느낌이 듭니다.
나는 무엇을 해야 합니까?
내가 원하는 건"모든 원본 프레임을 가져와서 '정상 속도'로 재생되는 파일에 넣습니다.".
답변1
setpts 모드와 raw 모드로 변환이 있습니다.
setpts를 사용하는 것은 다음과 같습니다:
ffmpeg input.mkv -map_metadata -1 -filter_complex "[0:v:0]setpts=PTS*4[v];[0:a:0]atempo=0.5,atempo=0.5[a]" -map [v] -map [a] -c:v libx265 -vtag hvc1 -c:a libmp3lame -shortest "output.mp4"
- H.265(libx265)와 같이 파일 크기를 줄이는 좋은 코덱을 사용하세요.
- 비디오 메타데이터가 원본 비디오에서 240FPS라고 말하고 변환 중에 메타데이터가 삭제되지 않기 때문에 출력 비디오도 240fps를 표시하지만 실제로는 60FPS인 것으로 의심됩니다. -map_metadata -1 옵션은 메타데이터를 제거합니다.
원시 모드로 변환을 사용하는 방법은 다음과 같습니다.
이 예에서는 원본 비디오가 H.264 코덱이라고 가정합니다.
ffmpeg -i input.mp4 -map 0:v -c:v copy -bsf:v h264_mp4toannexb raw.h264
ffmpeg -fflags +genpts -r 60 -i "raw.h264" -i input.mp4 -map 0:v -map 1:a -filter:a "atempo=0.5,atempo=0.5" -c:v libx265 -vtag hvc1 "output.mp4"
첫 번째 명령에서는 원본 비디오가 원시 비디오로 변환되고, 두 번째 명령에서는 새로운 타임스탬프가 생성되어 비디오 재생 속도가 4배 느려지고 원본 비디오의 오디오가 원시 비디오에 추가되며 오디오 속도가 4배 감소하고 마지막으로 원시 비디오가 변환됩니다. 더 작은 파일 크기를 위해 비디오를 H.265로 변환합니다.
답변2
비디오를 다시 인코딩하지 않고 해결하는 방법은 다음과 같습니다.
- 비디오 스트림을 HEVC(H.265) "원시" 비디오 스트림으로 추출합니다.
ffmpeg -y -an -i testfile.mp4 -c copy input_video.h265
- 비트스트림 필터를 사용하여 "초당 틱"
tick_rate
으로 수정합니다 .60
hevc_metadata
ffmpeg -y -i input_video.h265 -c copy -bsf:v hevc_metadata=tick_rate=60:num_ticks_poc_diff_one=1 input_video2.h265
input_video2.h265
"느린" 오디오와 병합 :
ffmpeg -y -i input_video2.h265 -vn -i testfile.mp4 -map_metadata -1 -af "atempo=0.5,atempo=0.5" -c:v copy -vtag hvc1 -c:a aac -shortest "output.mp4"
"느린" 오디오가 이상하게 들리지만 두 번 사용하는 것보다 더 나은 해결책을 찾을 수 없습니다 atempo
.