FFMPEG에서 시간이 지남에 따라 규모를 변경할 수 있습니까?


11

오버레이 필터를 사용하면 "t"변수를 사용하여 비디오의 x / y 위치를 시간에 따라 변경할 수 있습니다. 예를 들어, overlay=x='if(gte(t,2), -w+(t-2)*20, NAN)':y=02 초가 지난 후 오버레이 된 요소를 왼쪽에서 오른쪽으로 슬라이딩하는 데 사용할 수 있습니다.

내가하고 싶은 것은 요소 스케일링에 비슷한 원리를 사용하는 것입니다. 식 (예 : scale=w=iw*t, 또는 그 줄을 따라)을 사용하여 시간에 따라 비디오의 규모를 변경할 수 있기를 원합니다.

이게 가능해?

-filter_complex를 통해 해당 표현식을 실행하면

'iw * t'표현식을 평가할 때 오류가 발생했습니다.

out_w : 'iw * t'또는 out_h : '-1'에 대한 표현은 자체 참조입니다.

이 기능을 사용하려면 FFMpeg를 패치해야 할 공정한 기회가 있다고 생각하지만, 누군가 이런 종류의 일에 대해 알고 있는지 먼저 물어볼 것이라고 생각했습니다!

아무도 그러한 작업이 어떻게 이루어질 수 있는지 알고 있습니까?

도와 주셔서 감사합니다!


지금은 구문 오류처럼 들리지만 불행히도 전에이 기능을 사용하지 않았으므로 실제로 여기에서 도울 수 없습니다.
PTS

1
t는 오버레이 필터와 관련하여 정의 된 것이 아닙니다.
v010dya

1
필터를 작성할 수 있습니다 . wiki.multimedia.cx/index.php?title=FFmpeg_filter_howto
denjello

1
@alexspeller 스케일 필터는 타임 라인 편집을 지원하지 않으므로 직접 가능하지 않습니다. 해결 방법이 있는지 확인하겠습니다.
Gyan

1
H.264 / 5 출력으로 기술적으로 가능합니다. 플레이어 / 편집자가 어떻게 처리 할 지 모르겠습니다.
Gyan

답변:


2

내가 이해하는 것에서 't'는 한 번 평가됩니다. 이것을 읽었습니까 : https://ffmpeg.org/ffmpeg-filters.html#zoompan ?

Ffmpeg 문서 :

9.170.1 예

  • 최대 1.5 배 확대하고 동시에 사진 중앙 부근의 특정 지점으로 이동 :

확대 / 축소 = z = '분 (확대 +0.0015,1.5)': d = 700 : x = 'if (gte (확대, 1.5), x, x + 1 / a)': y = 'if (gte (확대, 1.5), y, y + 1) ': s = 640x360

  • 최대 1.5 배 확대하고 항상 사진 중앙에서 이동 :

확대 / 축소 = z = '분 (확대 +0.0015,1.5)': d = 700 : x = 'iw / 2- (iw / zoom / 2)': y = 'ih / 2- (ih / zoom / 2)'

  • 위와 동일하지만 일시 중지하지 않음 :

zoompan = z = 'min (max (zoom, pzoom) +0.0015,1.5)': d = 1 : x = 'iw / 2- (iw / zoom / 2)': y = 'ih / 2- (ih / 줌 / 2) '

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