너비를 유지하면서 (ffmpeg를 사용하여) 프레임 크기를 어떻게 변경합니까?


21

이 StackExchange 사이트를 처음 사용하고 FFmpeg 인코더를 사용합니다. 720x480 (3 : 2) 인 비디오가 있는데 사이트에있는 다른 비디오와 일치하도록 720x406 (16 : 9)으로 변경하고 싶습니다. 다음을 포함하여 다양한 명령 조합을 시도했습니다.

ffmpeg -i myfile.mv4 -s 720x406 outfile.mp4
ffmpeg -i myfile.m4v -c copy -aspect 16:9 outfile.mp4

내가 끝내는 것은 지정된 높이로 축소되었지만 너비는 유지하지 않은 비디오입니다. 608x406 이상에서 끝납니다. 나는 오늘날 다양한 FFmpeg의 GUI 버전을 가지고 놀았으며 그들은 같은 일을하는 것처럼 보입니다.

원하는 프레임 크기를 달성하기 위해 전달할 적절한 옵션 / 파라미터는 무엇입니까 (명령 줄을 통해 더 많은 제어를 할 수 있다고 가정)?

답변:


36

스케일 필터를 사용하면 효과가 있지만 조금 더 있습니다.

ffmpeg -i input.mov -vf scale=720x406 output.mov 

필요한 픽셀 크기의 동영상을 만들지 만 출력을 보면 정사각형이 아닌 픽셀을 사용하여 원본과 동일한 종횡비로 재생되도록 정보를 메타 데이터에 추가한다는 것을 알 수 있습니다. 따라서 영화를 아나모픽으로 새로운 종횡비로 늘리려면 "샘플 종횡비"에 대해 SAR이라고하는 픽셀 종횡비를 수동으로 설정해야하므로 정사각형 픽셀의 경우 :

ffmpeg -i input.mov -vf scale=720x406,setsar=1:1 output.mov

또는 디스플레이 종횡비를 원하는대로 설정할 수 있습니다.

ffmpeg -i input.mov -vf scale=720x406,setdar=16:9 output.mov

-vf 명령과 x = y, z = a 식으로 수행하는 작업은 일련의 필터를 만드는 것입니다 . 필터는 매우 복잡 할 수 있지만 가장 간단한 사용법에서는 형식을 취하여 effect=parameter,nexteffect=anotherparameter사용자가 작성한 순서대로 처리됩니다.

코덱 등에 대한 추가 명령 (예 : -c:v libx264x264 mp4 인코더 사용) 및 -crf 20고정 속도 요소를 20으로 설정하는 등의 작업을 원할 수 있습니다 (일반적으로 크기와 품질 사이의 상당히 좋은 절충안). 따라서 합리적으로 완전한 명령은 다음과 같습니다.

ffmpeg -i input.mov -vf scale=720x406,setdar=16:9 -c:v libx264 -preset slow -profile:v main -crf 20 output.mov

메인 프로파일은 장치 호환성에 slow좋으며 libx264 인코더에 대한 사전 설정은 속도와 품질의 균형이 잘 맞기 때문에 일반적인 웹 인코딩 기술입니다. 당신은을 사용하여 빠르게 만들 수 있습니다 fast하거나 veryfast또는 느리게 veryslow하고 placebo만들 것입니다 그것을 지금 약간 더 나은 것보다 veryslow많은 희생보다 처리 시간 (따라서 이름)에서.

BTW -c 사본을 사용하지 마십시오 그들에게 아무것도하지 않고 수단이 바로 비디오 및 오디오 스트림을 복사하는 것이, 모든의를 당신이 어떤 영향을 미칠 것입니다 크기, 코덱, 비트 레이트 등의 측면에서 할 아무것도 그래서.


1
최신 버전의 ffmpeg를 사용하는 경우 x264를 더 이상 코덱으로 지정할 필요는 없지만 여전히 원하는 설정을 살펴볼 가치가 있습니다.
stib

1
메타 데이터에는 DAR 필드 만 있다고 생각합니다. 그렇다면 사용 setsar은 DAR을 간접적으로 설정하는 것입니까?
jiggunjer

"-c copy"를 사용해야하지만 다른 쪽에서는 화면 크기를 조정하고 싶습니다. 어떻게하면 되나요?
Dr.jacky

1
@ Mr.Hyde 당신은 의견을 묻는 대신 새로운 질문으로 질문해야합니다
stib
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.