원래 품질을 유지하면서 MKV를 MP4로 변환하는 핸드 브레이크 설정


44

MP4로 변환해야하는 수많은 MKV 파일이 있으며 선택한 소프트웨어는 수동 브레이크입니다.

전환에 가장 적합한 설정을 고수했습니다. 완전한 품질을 유지하고 싶습니다. 원래 설정으로 변환하고 변경하지 않거나 변경해야 할 특정 사항이 있습니까?


핸드 브레이크 설정 mattgadient.com/2013/06/12/…
janot

일부 파일에서 오류가 발생합니다 (mkv에서 mp4로, mp4에서 mkv로) : 출력 파일 # 0에 스트림이 없습니다. 이것이 무엇을 의미하는지 아는 사람이 있습니까?
PrimitiveNom

답변:


85

수동 브레이크의 문제점은 무엇입니까?

핸드 브레이크를 사용하여 한 컨테이너 형식에서 다른 컨테이너 형식으로 변환하는 경우 (예 : MKV에서 MP4로) 수동 브레이크는 비디오를 다시 인코딩합니다. 비디오 패스 스루를 활성화 한 각 기능 요청 을 참조하십시오 .

죄송합니다. 비디오 패스 스루 추가는 계획되어 있지 않습니다. HandBrake는 비디오 트랜스 코더로 설계되었습니다. 통과를 허용하도록 설계되지 않았습니다.

따라서 수동 브레이크로 컨테이너를 교체 할 때마다 비디오가 다시 인코딩되므로 a) 시간이 걸리고 b) 품질 손실이 발생할 수 있습니다.

다시 인코딩해야합니까? 컨테이너 만 교체 할 수 없습니까?

패스 스루가 불가능하기 때문에 스스로에게 묻습니다. 다시 인코딩해야합니까? 컨테이너를 MKV에서 MP4로만 변경 하려면 일반적으로 아무것도 인코딩 할 필요가 없으며 비디오 주위의 "래핑"만 변경하면됩니다. 이것은 품질을 잃지 않으며 훨씬 빠른 프로세스입니다.

FFmpeg를 사용 하여 컨테이너를 쉽게 교체 할 수 있습니다 . 비디오 및 오디오 스트림을 복사하도록 지시하면됩니다.

ffmpeg -i input.mkv -c copy -map 0 output.mp4

MP4 컨테이너를 생성 할 수있는 MP4Box 와 같은 도구 도 있습니다 . MKVtoolnix 를 사용하는 MKV 에서도 마찬가지 입니다.

그러나 큰 경고가 있습니다. 오디오 및 비디오 코덱이 대상 (MP4) 컨테이너에서 지원되는 경우에만 작동합니다. 예를 들어 H.264 / H.265 및 AAC의 경우에는 그렇지 않습니다. 또한 MP4에 대한 자막 형식 지원은 MKV와 다르며 실제로 상당히 제한되어 있으므로이 명령이 실패 할 수 있습니다.

이 명령이 작동하지 않고 입력이 출력 컨테이너에 대해 잘못된 코덱을 사용하는 경우을 다시 인코딩해야 합니다. 이 경우 코덱은 출력 컨테이너에 맞게 조정됩니다.

이것이 왜 필요한지 이해하려면 비디오 코덱과 컨테이너차이점 을 배우는 것이 중요합니다 . 이렇게하면 컨테이너 변경이 작동하는 이유와 컨테이너 MP4 및 MKV가 실제로 비디오 코덱과 관련이없는 이유를 이해할 수 있습니다.

어쨌든 다시 인코딩이 나쁜 이유는 무엇입니까?

당신은 (일반적으로) 전체 품질을 유지할 수없는 이미 인코딩 된 비디오를 인코딩 할 때. 정보를 버리고 원본을 이미 압축했기 때문에 다시 생성 하면 생성 손실발생하기 때문 입니다.

예를 들어, 크기가 변경 될 때 비디오를 다시 인코딩하려고하거나 비디오 스트림을 압축하기 위해 특정 비트 전송률이 필요하거나 원본 비디오가 어떤 이유로 든 재생할 수없는 코덱을 사용하는 경우가 있습니다.

따라서 MKV 비디오를 핸드 브레이크에로드하고 x264로 다시 인코딩하면 H.264 인코더 핸드 브레이크가 사용하고 MP4 컨테이너에 저장 하면 비트 전송률을 설정하거나 설정 하지 않으면 품질에 영향을 미치지 않습니다. 품질 요소가 너무 높아서 실제로 차이를 볼 수 없습니다. 그러나 파일 크기도 커집니다.

이상적인 경우 비디오를 압축되지 않은 비디오로 변환하면 품질이 떨어지지 않지만 몇 분간의 비디오 자료에서도 수십 기가 바이트 크기의 파일이 제공됩니다.

그래,하지만 난 다시 인코딩해야 해!

실제로 다시 인코딩해야하는 경우 평균 비트 전송률을 설정하지 말고 "일정한 품질"과 같은 Constant Rate Factor를 선택하십시오 . MP3의 "가변 비트 전송률"과 같이 : 비디오 파일에 필요한 비트를 비트 단위로 사용하여 동일한 파일 크기로 전체 품질을 향상시킵니다.

Sane CRF 값은 19에서 24 사이이며 낮은 값은 "더 나은"것을 의미합니다. 따라서 Rate Factor 19로 시도 할 수 있습니다. 또한 인코더가 모든 벨과 휘파람을 사용하고 지정된 비트 전송률에 대한 품질을 최적화 할 수 있도록 "높음"프로필을 설정해야합니다.


감사합니다! 당신 이이 질문에 관심이 있고 나를 도와주는 유일한 사람 인 것 같습니다. 나는 당신의 충고를 따랐으며 품질은 원래와 같습니다! :)
주황색

일부 mkv 파일의 경우 실패합니다 (출력 파일의 헤더를 쓸 수 없습니다 ... 잘못된 코덱). 사용 ffprobe -i file.mkv는 A / V 당신이 가능성 x264 비디오 및 AAC와 reecode 필요합니다,에 / AC3 오디오 형식을 확인하려면 다음을 참조하십시오
ski_squaw

U 100 % 파일을 다시 래핑해도 품질 손실이 발생하지 않습니까?
PrimitiveNom

1
@BallpointBen 불가능, 아니오 : github.com/HandBrake/HandBrake/issues/…
slhck

1
@Hashim 요청에 따라 게시물을 명확하게하려고했습니다. 귀하의 질문에 관해서는, 핸드 브레이크는 통과를 허용하지 않기 때문에 MP4에서 MKV로 변환 하면 품질 손실이 발생합니다. 그리고 시간이 많이 걸립니다. 그냥 ffmpeg -i input.mp4 -c copy output.mkv하고 당신은 괜찮을 것입니다.
slhck

4

이것은 나를 위해 아주 잘 작동합니다. 아래는 모든 .mkv를 Windows의 .mp4 파일로 변환하는 코드입니다.

  • 경로에 ffmpeg를 추가해야 할 수도 있습니다. ffmpeg 실행 파일 D : \ apps \ ffmpeg \ bin \ ffmpeg.exe의 전체 경로를 입력하면됩니다.
  • Windows 용 ffmpeg를 여기에서 다운로드하십시오.
  • 사용법 : .mkv 파일을 그 위에 놓으십시오. 전체 디렉토리를 수행합니다.

convert.bat 파일에 저장하십시오.

for %%a in ("*.mkv") do ffmpeg.exe -i "%%a" -vcodec copy -acodec copy "%%~na .mp4"
pause

매력처럼 작동합니다.
Kit Johnson

이 폴더에 ffmpeg.exe를 입력 한 다음 다음과 같이 변경했습니다.for %%a in ("*.mkv") do %~dp0ffmpeg.exe -i "%%a" -vcodec copy -acodec copy "%%~na .mp4"
davidtbernal
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.