ffmpeg에 입력한 프레임 범위 집합에 따라 더 큰 비디오를 분할하려고 합니다. -f 세그먼트 -segment_frames 옵션과 예상/생성 사항에 관한 몇 가지 질문입니다. 내가 실행 중인 내용은 다음과 같습니다.
ffmpeg -i full_movie.mov -f segment -segment_frames 123 -reset_timestamps 1 -c:a copy -map 0 "/Users/sjan/Desktop/%03d_test.mov"
ffmpeg -i full_movie.mov -f segment -segment_frames 124, 163 -reset_timestamps 1 -c:a copy -map 0 "/Users/sjan/Desktop/%03d_test.mov"
첫 번째 ffmpeg 명령은 0에서 123으로 또는 1에서 123으로 이동합니까?
QT 영화를 읽을 때 -segment_frames 옵션이 0에서 시작하는 ffmpeg인가요? QT에서 열 때 이 영화가 0에서 시작한다는 점을 고려하면 되나요? 0에서 시작하는 경우 1을 빼서 이를 설명하기 위해 내 프레임 범위에 피드를 제공해야 합니까? 적절한 범위에서 일관되지 않은 결과가 나타나는데 이는 아마도 이로 인한 것일 수 있습니다.
답변1
예, 세그먼트_프레임은 0부터 시작합니다. 경험상 ffmpeg의 거의 모든 인덱스 카운터는 0부터 시작합니다.
따라서 -segment_times 124,163
ffmpeg에 프레임 0-123, 124-162 및 163-END에 대해 각각 세그먼트를 생성하도록 지시합니다. 그러나 이러한 시작 프레임이 키프레임이 아닌 경우 ffmpeg는 해당 프레임 다음에 발견된 첫 번째 키프레임으로 세그먼트를 시작합니다.
-break_non_keyframes 1
지정된 프레임에 강제 분할을 적용하려면 추가하세요 . 그러나 세그먼트가 독립형으로 재생되는 경우 키프레임을 찾을 때까지 초기 프레임이 올바르게 디코딩되지 않을 수 있습니다. 비디오를 인코딩하고 있으므로 다음을 추가하여 세그먼트 지점에서 키프레임을 강제로 설정할 수 있습니다.-force_key_frames expr:eq(n\,124)+eq(n\,163)