ffmpeg는 JPEG로 인코딩된 MOV 비디오를 다시 인코딩하지 않고 프레임으로 분할합니다.

ffmpeg는 JPEG로 인코딩된 MOV 비디오를 다시 인코딩하지 않고 프레임으로 분할합니다.

비디오 스트림이 일련의 JPEG인 오래된 디지털 카메라의 MOV 비디오 파일이 있습니다. JPEG를 다시 인코딩하지 않고(또는 최소한 원본에 최대한 가깝게) 추출하려고 하지만 ffmpeg를 사용하면 추출된 JPEG가 예상보다 작습니다.

작업에 더 좋은 도구가 있다면 ffmpeg 이외의 다른 도구를 사용해도 됩니다.

프레임 분할을 시도하는 데 사용한 명령은 다음과 같습니다.

ffmpeg -i original.mov -f jpeg img%04d.jpg

원본 비디오의 프레임 파일 크기 확인:

# ffprobe -show_frames original.mov | grep pkt_size
pkt_size=25600
pkt_size=25600
...

(Total size ~944 KB)

그러나 추출된 JPEG는 상당히 작습니다.

# ffprobe -show_frames img%04d.jpg | grep pkt_size
pkt_size=10554
pkt_size=15362
...

(Total size ~220 KB)

# du -ch *.jpg | grep total
220K    total

또한 해시가 다른지 확인했습니다.

# ffmpeg -i original.mov -f framehash -

0,          0,          0,        1,   153600, 7ca21c4c396d15a4b4b4ebfbf70e9dc36ef8fb3ae12409822e34a25d0c9d5918
0,          1,          1,        1,   153600, e2ee2497513c032dab785d5ec65c9c96da47b6afa562b96a8b56b9c9169af4e0
...

# ffmpeg -i img%04d.jpg -f framehash -

0,          0,          0,        1,   153600, 09d39759af66c7d83bee706bd60d9e76e8e57925a49a8e2b07ff7a4eb811f986
0,          1,          1,        1,   153600, 96678aad212668c496944050b9d451c306edc09c5eaad0e14ce0dabbfba5ab3e
...

해시가 일치하도록 완벽하게 추출하는 것이 불가능할 수도 있다는 것을 이해하지만 파일 크기가 너무 커서 ffmpeg가 일종의 재엔코딩을 수행하고 있다는 것을 알고 있습니다.

답변1

-c copy활성화하려면 추가하세요 .스트림 복사방법:

ffmpeg -i original.mov -c copy img%04d.jpg

관련 정보