동일한 품질의 FFMPEG 분할 MP4


51

하나의 큰 MP4 파일이 있습니다. 작은 파일로 나누려고합니다.

ffmpeg -i largefile.mp4 -sameq -ss 00:00:00 -t 00:50:00 smallfile.mp4

-sameq를 사용하면 동일한 품질 설정을 유지할 것이라고 생각했습니다. 그러나 나는 그것이 무엇을하는지 이해해서는 안됩니다.

분할 파일과 동일한 품질 (오디오 / 비디오) 및 압축을 유지하려고합니다. 그러나이 설정은 분할 파일을 훨씬 더 크게 만듭니다.

동일한 품질 대 크기 비율을 유지하면서 분할 파일에서 동일한 품질과 속성을 유지하려면 어떤 플래그를 설정해야합니까?

예를 들어 원본 파일이 약 12GB이고 비트 전송률이 10617kbps이고 프레임 속도가 23 프레임 / 초이고 6 채널 오디오가 317kbps 인 1920x1080 인 경우 분할 파일은이 크기의 3 분의 1에 불과합니다 ( 내가 세 조각으로 나누면).


3
참고로이 글을 읽는 사람은 사용하지 마십시오 . -sameq"동일한 품질"을 의미하지는 않습니다 .
Zaz

답변:


81

비디오를 다시 인코딩하지 않고 비디오를 분할하려면 copy오디오 및 비디오 코덱을 사용하십시오 . 이 시도:

ffmpeg -ss 00:00:00 -t 00:50:00 -i largefile.mp4 -acodec copy \
-vcodec copy smallfile.mp4

이것은 첫 번째 스플릿 만 만듭니다. 다음은로 시작하는 명령으로 수행 할 수 있습니다 ffmpeg -ss 00:50:00.

단일 명령으로 수행 할 수 있습니다.

ffmpeg -i largefile.mp4 -t 00:50:00 -c copy smallfile1.mp4 -ss 00:50:00 -c copy smallfile2.mp4

이렇게하면 smallfile1.mp4가 만들어지고 50 분에 largefile.mp4 및 smallfile2.mp4의 비디오가 50 분에서 끝나고 largefile.mp4의 끝에서 끝납니다.


2
mp4 파일 에서이 방법을 사용하면 생성 된 모든 파일의 처음 2 초가 고정 프레임으로 나타납니다 (오디오가 정상적으로 재생 됨). 알려진 이유가 있습니까?
Ron Harlev

버그처럼 들립니다. 최신 ffmpeg로 업데이트하십시오.
Robert

@Robert 2010 년 이후 여러 차례 업데이트되었습니다. 감사합니다.
fideli

@RonHarlev 이것은 현재 예상되는 동작입니다. 다시 인코딩하지 않으면 "키 프레임"에서만 비디오를자를 수 있습니다. 키 프레임 사이의 프레임은 완전한 이미지를 만들기에 충분한 정보를 자체적으로 전달하지 않습니다. 참조 : trac.ffmpeg.org/wiki/Seeking#Seekingwhiledoingacodeccopy
Philip Thrasher

3

대체 그것을하는 방법이다 :

// create a 2-min clip
ffmpeg -i input.mp4 -ss 00:10:00 -to 00:12:00 -c copy output.mp4

/**
* -i  input file
* -ss start time in seconds or in hh:mm:ss
* -to end time in seconds or in hh:mm:ss
* -c codec to use 
*/

파일의 품질은 -c copy원본 오디오 + 비디오 스트림을 출력으로 복사하는 데 사용되므로 동일하게 유지됩니다 .

참조, 일반적으로 사용되는 FFmpeg 명령 목록 : DigitalFortress

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.