ffmpeg를 사용하여 너비가 다른 비디오의 크기를 고정 높이로 고정


17

회사 웹 사이트에서 많은 비디오 파일을 플래시 비디오로 변환하고 싶습니다. 모든 비디오는 360p 형식이어야하므로 크기는 Nx360이어야합니다.

FFMpeg는 -s 인수를 사용하여 대상 해상도를 W x H 로 지정 합니다. 나도 몰라 W 는 소스 파일의 가로 세로 비율에 따라 달라집니다로, IDþ을. 소스가 640x480 인 경우 대상은 480x360입니다. 소스가 848x480 인 경우 대상은 636x360입니다.

ffmpeg 스위치로 어떻게 할 수 있습니까? 가로 세로 비율을 유지하고 대상 비디오의 높이 만 지정합니까?

ffprobe를 실행하여 소스 비디오 크기를 가져오고 종횡비를 계산 한 다음 새로운 너비를 계산하는 프로그램을 만들어서 쉽게 해결할 수 있습니다.

답변:


15

이 비디오 필터를 추가 할 수 있습니다.

-vf "scale=-1:360" 

-1 이 경우 가변 / 알 수 없음을 의미하므로이 필터는 비디오의 크기를 조정하여 입력의 종횡비를 유지하고 360을 높이로 유지합니다.

나에게 이것은 당신이 찾고있는 것과 같은 결과를 얻었습니다.



6

기존 답변에 대해서는 아직 언급 할 점이 충분하지 않지만 이는 user65600의 답변을 따르고 특정 코덱에 2로 나눌 수있는 너비 / 높이가 필요한 경우 계속 진행됩니다 (예 : libx264).

-1 (변수 / 알 수 없음)을 사용하면 홀수 #을 반환 할 수 있습니다. 짝수 #을 보장 trunc(ow/a/2)*2하려면와 같은 것을 사용해야합니다 . 가로 세로 비율을 유지하면서 가장 가까운 짝수 #를 자동으로 계산합니다.

-vf "scale=trunc(ow/a/2)*2:360"

출처 : https://ffmpeg.org/trac/ffmpeg/ticket/309


3

-vf "scale=trunc(ow/a/2)*2:360" "자기 참조"오류로 인해 작동하지 않습니다.

대신 다음이 작동합니다.

-vf "scale = -1 : 360, scale = trunc (iw / 2) * 2 : 360"

따라서 자기 참조는 두 번의 연속 스케일링으로 방지되며 반올림은 두 번째 단계에서 수행됩니다. 귀엽지 않습니까? :)


단순 필터 그래프 'scale = -1 : 480; scale = trunc (iw / 2) * 2 : 480 '에는 정확히 하나의 입력 및 출력이 없습니다. 필터를 여는 중 오류가 발생했습니다!
digitalPBK
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.