ffmpeg-기존 미디어 파일에서 인코딩 설정을 복사하는 방법?


19

나는 이것을 여러 번 할 수 있기를 원했기 때문에 묻습니다.

나는 기존의 비디오 또는 오디오 파일이있는 경우 ffmpeg, mplayer컨테이너처럼 적어도 코덱 그것의 "propreties"의 일부를 검색 할 수 및 사용 비트 레이트 및 기타 미디어 플레이어, 아마 다양한 품질 및 인코딩 관련 설정 등을

ffmpeg로 인코딩하기 위해 (직접적으로) 기존 파일에서 이러한 설정을 추출하려면 어떻게해야합니까?

예를 들어, 일부 설정으로 압축 mkv된 비디오와 x264압축되지 않은 다른 avi파일이 있습니다. avi를 동일한 설정 으로 트랜스 코딩하기 위해 x264 mkv 파일에 사용 된 인코딩 설정을 "복사"하고 싶습니다 .

참고 : 디코더에서 인코더로 설정을 "번역"하는 사람의 작업을 포함하지 않는 방법을 찾고 있습니다. 먼저 설정을 추출하여 어딘가에 저장해야한다면 괜찮습니다. 그러나 읽기 옵션을 ffmpeg에 대한 명령 행 또는 사전 설정 파일에 간단히 공급할 수 있기를 원합니다.


글쎄, 당신은 할 수 아마 종류의 출력을 통해 ffprobe(특히와 -show_streams-show_format옵션) 및 스크립트에 대한 정보를 중요한 재료 사용
evilsoup

1
비트 전송률과 같은 동일한 설정을 사용하는 경우 (정확한 비트 전송률을 복사하려는 시도가 사용자들 사이에서 인기가있는 것 같음) 최적의 품질을 얻지 못할 수 있습니다. 물론 나는 전형적인 입력이 무엇인지 전혀 알지 못하지만 x264를 사용하는 -crf것이 일반적으로 권장됩니다. 참고 항목 는 FFmpeg과 x264 인코딩 가이드 .
llogan

ffprobe의 출력에서 ​​인코딩 설정에 대한 내용을 찾을 수 없습니다 :(
thelolcat

Reframe의 수만 보여 주지만 mediainfo와 같은 다른 설정은 아닙니다
thelolcat

ffmpeg를 사용한 입력 구문은 메타 데이터 필드와 다릅니다. 예를 들어 channels:6비디오 파일을 읽을 수는 있지만 인코딩하려면 switch를 사용해야합니다 -ch:6. 일부 스위치는 1 글자를 사용하고 일부는 2 글자를 사용합니다.
jiggunjer

답변:


10

자동으로 할 수있는 방법은 없습니다. 원본 파일의 매개 변수를보고 출력 파일에 적용해야합니다.

대부분의 경우 다음과 같습니다.

  • 컨테이너 형식 (MP4, MKV,…)
  • 비디오 및 오디오 코덱 (H.264, H.265,…)
  • 오디오 별 :
    • 오디오 채널 수
    • 오디오 샘플링 속도
    • 오디오 비트 레이트
  • 비디오 별 :
    • 프로필 및 수준 (호환성을 보장하려면 여기 참조 )
    • 최대 비트 전송률 제한 (예 : H.264 )
    • 최대 비디오 해상도, -filter:v scale또는-s:v
    • 프레임 속도, 변경 -filter:v fps -r
    • 크로마 서브 샘플링, 변경 -pix_fmt(예 : -pix_fmt yuv420p최상의 호환성을 제공해야 함)
    • GOP 크기 (IDR 프레임 간 거리) -g
    • 다른 특정 인코딩 설정

그러나 모든 것을 알더라도 일부 장치에는 비트 스트림에 포함 된 특정 독점 정보가 필요할 수 있습니다.


를 사용하는 특정 작업에 관해서는 x264사소한 것이 아닙니다. 일반적으로 수동으로 수행되는 이러한 작업을 처리하는 단일 스크립트를 알지 못합니다. Unix / Linux 또는 OS X의 인코딩 설정에 대한 대부분의 정보는mediainfo Bash 트릭과 함께 .

예를 들어 MP4 파일의 x264로 인코딩 된 비디오의 경우 :

mediainfo input.mp4 | grep "Encoding settings" | cut -d':' -f2- | tr '/' '\n' | sed 's/ //'

x264 옵션 목록이 출력됩니다.

cabac=1
ref=3
deblock=1:-1:-1
analyse=0x3:0x113
me=hex
subme=7
psy=1
…

그런 다음이 옵션을 x264 바이너리에 수동으로 전달할 수 있습니다.

FFmpeg를 겪는다면 x264의 모든 옵션이 이와 같이 매핑 될 수 있거나 매핑되어야하는 것은 아니기 때문에 조금 더 복잡합니다. 간단한 사전 설정, 조정 및 프로파일 사양도 종종 수행됩니다 ( x264 인코딩 안내서x264 --fullhelp 및 참조). ) 및 CRF 레벨을 지정하는 것이 충분하다.

그리고 운 좋게도 옵션이 많지 않은 오디오는 고려하지 않습니다.


ffprobe 또는 ffmpeg로는 불가능합니까?
thelolcat

아니요, ffprobe / ffmpeg로 직접 수행 할 수는 없습니다 . x264로 인코딩 된 비디오의 경우 mediainfo출력을 사용 하여이 옵션을 ffmpeg로 매핑합니다 -x264-params. ( x264 인코딩 안내서 도 참조하십시오 ). 그러나 모든 종류의 코덱 / 인코더 또는 컨테이너 형식에 대한 일반적인 솔루션을 원할 경우 변환을 수행하는 약간 정교한 스크립트를 작성해야합니다.
slhck December
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.