Bagaimana cara membuat overlay jittering dengan ffmpeg? [Tutup]

0

Saya baru saja menemukan video ini di YouTube, di mana ada layar terbagi dengan kisi bergerak. Saya ingin tahu cara membuat layar split bergerak seperti di video, menggunakan ffmpeg.

Tautan ke video

Inilah yang ingin saya capai:

masukkan deskripsi gambar di sini


Anda sepertinya salah paham, saya meneliti kode video yang satu ini. Masalah saya adalah saya tidak tahu png loop seperti video itu.

    ffmpeg -i video.mp4 -i nen.png  -filter_complex "overlay=x=0:y='if(gte(t,0), -w+(t)*800, 3)'" out.mp4

Ilustrasi

Saya sudah mencoba: loop -1 and overlay:shortest=1tetapi gagal

Bisakah Anda mengulangi overlay untuk saya?

Passionato
sumber
Anda ingin layar split 3 video? atau Anda ingin layar split bergerak? atau Anda ingin layar terbagi dengan batas? Pokoknya, mulailah menggunakan splitscreen di sini:
Harry
Saya ingin layar split bergerak seperti di video. Terima kasih. @ Harry
Passionato
Anda mungkin ingin mengedit pertanyaan Anda untuk menentukan persyaratan Anda. Butuh beberapa minggu untuk mengembangkan perintah ffmpeg yang melakukan ini. Layar split dalam video menunjukkan: 3 video, 2 di atas dan satu di bawah. Perpecahan tengah bergerak naik dan turun sekitar 5% dalam 3 detik. Border terdiri dari custom tetapi gambar statis dan batas sekitar 2% ukuran. Video tidak diubah ukurannya tetapi hanya area aktif yang berubah ketika garis tengah bergerak. Video menunjukkan lebih banyak persyaratan. Bisakah Anda membatasi itu untuk sebagian dari semua persyaratan itu?
Harry
Lalu saya ingin membuat split tengah bergerak naik dan turun sekitar 5% dalam 3 detik. Bisakah Anda melakukannya, @Harry? Saya mencoba menguji dengan ffmpeg dan tidak bisa membuat kode untuk membuatnya bergerak seperti itu
Passionato
@ Harry Tidak butuh berminggu-minggu, sungguh, tapi saya setuju bahwa pertanyaannya menunjukkan upaya nol. Hanya kisi yang bergerak, bukan titik perpecahan di antara video. Passionato, lain kali meminta sesuatu, tolong tunjukkan apa yang sudah Anda coba.
slhck

Jawaban:

3

Anda perlu menggunakan filter kompleks:

ffmpeg -f lavfi -i "\
movie=input-1.mp4,scale=960:540[v1]; \
movie=input-2.mp4,scale=960:540[v2]; \
movie=input-3.mp4,scale=1920:540[v3]; \
[v1][v2]hstack[hstack]; \
[hstack][v3]vstack[stack]; \
movie=grid.png[grid]; \
[stack][grid]overlay=y='5*sin(0.1*n)'[outv]" \
-map "[outv]" \
output.mp4

Ini mengasumsikan bahwa Anda memiliki tiga video input ( input-1.mp4melalui input-3.mp4), yang scaled dalam contoh ini hanya untuk mendapatkan mereka ke dimensi yang tepat untuk grid. Mereka kemudian horizontal dan vertikal stacked di atas satu sama lain untuk mendapatkan video 1920⨉1080 keluaran label sebagai stack.

Sekarang Anda memiliki grid.pngoverlay transparan yang ukurannya harus 1920⨉1080 juga. Tentu saja Anda harus membuat sendiri kisi ini dengan beberapa editor gambar.

Kotak ini akan overlaydiedit di atas tumpukan, tetapi ykoordinatnya akan bervariasi berdasarkan output dari fungsi sinus . Anda dapat mengatur kecepatan gerakan dengan mengubah parameter sebelumnya n(yang merupakan jumlah frame), dan amplitudo dengan mengubah parameter sebelum sinfungsi.

Tentu saja, jika Anda menginginkan gerakan yang lebih acak, Anda juga dapat memodifikasi posisi menggunakan randomfungsi, misalnya.

slhck
sumber
Ini tidak persis melakukan apa yang ada dalam referensi. Saat bingkai bergerak ke atas, semua area di bawah median akord harus ditutup sehingga tidak ada bagian dari dua video kuadran teratas yang muncul di bawah akor.
Gyan
@Mulvya Tapi mereka muncul di sana: i.stack.imgur.com/9KRZN.png
slhck
Ah, OP mengatakan mereka ingin " memindahkan layar terpisah ", tetapi sampel sebenarnya tidak membagi video yang mendasarinya. Membingungkan karena amplitudo puncak bervariasi.
Gyan