ffmpeg로 h.264 프로필 수준을 설정하려면 어떻게해야합니까?


16

Mac에서 잘 재생되는 영화 (m4v / h.264 / AAC)가 있지만 최근에 Apple TV3에서 재생되지 않는 것을 발견했습니다. 이 영화 파일의 속성을 살펴본 후 프로필에는 High@4.1 프로파일이 있지만 Apple TV3는 High@4.0까지만 지원됩니다. 이 비디오를 호환되지 않는 유일한 속성은 최대 비디오 비트 전송률이라고 생각합니다. 다른 모든 속성은 High@4.0에서 지원되는 것처럼 보입니다.

ffmpeg를 사용하여이 비디오를 High@4.0으로 다운 그레이드하려면 어떻게해야합니까?

아니면이 비디오를 4.0 대신 4.1로 만드는 실제 속성 (최대 비트 전송률)을 대신 변경해야합니까? 비트 전송률을 변경하면 파일이 High@4.0과 호환되지만 High@4.1로 '태그'되어 여전히 Apple TV3에서 재생되지 않을까 걱정됩니다.

답변:


22

로 인코딩 할 때 libx264다음을 사용하여 H.264 프로필 및 레벨을 설정할 수 있습니다.

  • -profile:v- 하나 high, main또는 baseline(그리고 다른 사람은, 그러나 이것은 여기에 무관)
  • -level:v– H.264 표준의 부록 A에 정의 된대로 4.0.

예를 들면 다음과 같습니다.

ffmpeg -i input.mp4 -c:v libx264 -profile:v high -level:v 4.0 -c:a copy output.mp4

여기에서는 영향을받지 않기 때문에 오디오 스트림을 복사했습니다.

출력에는 메타 데이터에 올바른 프로파일 및 레벨이 설정됩니다. 인코딩하는 동안 이것을 확인할 수 있습니다 x264.

[libx264 @ 0x7fb26103a000] profile High, level 4.0

MediaInfo 는 컨테이너 및 코덱 세부 정보를 분석하는데도 도움이됩니다.

물론 다시 변환을 적용하면 비디오를 다시 인코딩하면 화질이 어느 정도 저하됩니다. -crf일정한 품질 매개 변수에 영향을 미치 도록 옵션을 설정하십시오 . 여기서 기본값은 23이며 18과 28 사이의 값은 제정신으로 간주됩니다. 낮을수록 품질이 좋아집니다. 입력의 비트 전송률이 최대 65,000 kBit / s 인 경우 변환 후에도 여전히 좋아 보일 수 있습니다.


1
잘 작동했습니다. 불행히도 일부 메타 데이터가 손실되었지만 실제 비디오의 품질에는 눈에 띄는 변화가 없었습니다. 관심이 없다면 다음 명령이 같은 것을 달성했을까요? ffmpeg -i input.mp4 -vcodec x264 -vprofile high -vlevel 4.0 -acodec copy output.mp4
Sam

예, -v옵션은 별명 :v입니다. 어떤 메타 데이터가 손실 되었습니까?
slhck

나는 그것이 잃어버린 작품 일뿐이라고 생각합니다. 기술적으로 메타 데이터로 간주되는지 잘 모르겠습니다. 아트 워크가 실제로 파일에 포함되어 있습니까? 전체를 다시 추가하기 전에 다른 모든 것을 확인하지 않았습니다.
Sam

이제 비슷한 문제가있는 다른 파일이 있습니다. 잘못된 프로필 수준이지만 나머지 사양은 필 요한 수준 (4.0)과 호환되는 것 같습니다. 위에서 제공 한 명령을 사용하면 입력 한 프로필 수준과 호환되지 않는 한 데이터를 그대로 유지합니까? 기본적으로 ffmpeg가 어떤 프로파일과 레벨인지 알려주는 태그 이외의 데이터를 건드리고 싶지 않습니다. 가능합니까? 아니면 모든 값 (질산염, 프레임 속도 등)을 사전 설정 값으로 설정합니까?
Sam

2
나는 이것을 달성하는 길을 우연히 발견했다. Subler에는 실제로 비디오 스트림을 선택할 때 특정 장치와 호환되도록 프로파일과 레벨을 변경하는 옵션이 있습니다. 그것은 당신이 설정하는 프로파일과 비디오가 호환되는지 확인하도록 지시합니다. 그래서 다시 인코딩하지 않는다고 생각합니다. 메타 데이터를 변경해야합니다.
Sam

1

귀하의 의견 과 관련하여 다음 명령을 시도하십시오.

ffmpeg -i input.mp4 -map 1 -c:v libx264 -profile:v high -level:v 4.0 -c:a copy \
# copies all global metadata from input.mp4 to output.mp4
-map_metadata 0 \
# copies video stream metadata from input.mp4 to output.mp4
-map_metadata:s:v 0:s:v \
# copies audio stream metadata from input.mp4 to output.mp4
-map_metadata:s:a 0:s:a \
output.mp4

건배

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