Apakah mungkin dalam FFMPEG untuk mengubah skala dari waktu ke waktu?

11

Oke, jadi menggunakan filter hamparan, orang dapat mengubah lokasi x / y dari video seiring waktu dengan menggunakan variabel "t". Sebagai contoh, overlay=x='if(gte(t,2), -w+(t-2)*20, NAN)':y=0dapat digunakan untuk mulai menggeser elemen overlay dari kiri atas ke kanan atas, setelah 2 detik berlalu.

Yang ingin saya lakukan adalah menggunakan prinsip yang sama untuk elemen penskalaan. Saya ingin dapat mengubah skala video dari waktu ke waktu dengan menggunakan ekspresi (seperti scale=w=iw*t,, atau sesuatu di sepanjang garis itu).

Apakah ini mungkin?

ketika saya menjalankan ekspresi itu melalui -filter_complex, saya mengerti

Kesalahan saat mengevaluasi ungkapan 'iw * t'.

Mungkin ungkapan untuk out_w: 'iw * t' atau untuk out_h: '- 1' adalah referensi-sendiri.

Saya merasa seperti ada kesempatan yang adil saya perlu menambal FFMpeg jika saya ingin mendapatkan fungsi ini, tapi saya pikir saya akan bertanya dulu, untuk melihat apakah ada orang yang tahu tentang hal semacam ini!

Adakah yang tahu bagaimana tugas seperti itu dapat diselesaikan?

Terima kasih untuk bantuannya!

theophilus777
sumber
Kedengarannya lebih seperti kesalahan sintaksis sekarang tapi saya belum pernah menggunakan fitur itu sebelumnya, sayangnya saya tidak bisa membantu di sini.
PTS
1
t bukan hal yang pasti ketika datang ke filter overlay.
v010dya
1
Anda bisa saja menulis filter. wiki.multimedia.cx/index.php?title=FFmpeg_filter_howto
denjello
1
@alexspeller filter skala tidak mendukung pengeditan garis waktu, jadi tidak mungkin secara langsung. Saya akan memeriksa apakah ada solusi.
Gyan
1
Secara teknis memungkinkan dengan output H.264 / 5. Tidak tahu bagaimana pemain / editor akan menanganinya.
Gyan

Jawaban:

2

Dari apa yang saya mengerti 't' dievaluasi sekali. Sudahkah Anda membaca ini: https://ffmpeg.org/ffmpeg-filters.html#zoompan ?

Ffmpeg Documents:

9.170.1 Contoh

  • Memperbesar hingga 1,5 dan menggeser secara bersamaan ke beberapa tempat di dekat pusat gambar:

zoompan = z = 'min (zoom + 0,0015,1.5)': d = 700: x = 'if (gte (zoom, 1.5), x, x + 1 / a)': y = 'if (gte (zoom, 1.5), y, y +1) ': s = 640x360

  • Perbesar hingga 1,5 dan geser selalu di tengah gambar:

zoompan = z = 'min (zoom + 0,0015,1.5)': d = 700: x = 'iw / 2- (iw / zoom / 2)': y = 'ih / 2- (ih / zoom / 2)'

  • Sama seperti di atas tetapi tanpa jeda:

zoompan = z = 'min (maks (zoom, pzoom) +0.0015.1.5)': d = 1: x = 'iw / 2- (iw / zoom / 2)': y = 'ih / 2- (ih / zoom / 2) '

rampok
sumber