Apakah mungkin untuk menggunakan ffmpeg
membuat video dari serangkaian sekuens, di mana angkanya tidak dimulai dari nol?
Misalnya, saya punya beberapa gambar [test_100.jpg, test_101.jpg, test_102.jpg, ..., test_200.jpg], dan saya ingin mengonversinya menjadi video. Saya mencoba perintah berikut, tetapi tidak berhasil (sepertinya angkanya harus dimulai dari nol):
ffmpeg -i test_% d.jpg -vcodec mpeg4 test.avi
Adakah saran?
Jawaban:
Tidak perlu mengganti nama file jika menggunakan
-start_number
sakelar seperti ini:di mana
n
awal dari urutan stills.Catatan, ini akan berfungsi selama urutan tidak terputus begitu dimulai. Jika ada celah dan Anda ingin semua stills dimasukkan, maka penomoran ulang mungkin diperlukan untuk mengisi kesenjangan.
Ada beberapa sakelar lain yang mungkin berguna bagi Anda.
Saya menggunakan one-liner berikut untuk mendapatkan frame rate yang lebih lambat dan untuk mengompres gambar dan menghasilkan video yang lebih kecil:
The
-r 3
pilihan menetapkan framerate dari video yang dihasilkan dengan 3 frame per detik sehingga saya bisa melihat masing-masing masih untuk waktu singkat. The-s
pilihan rescales gambar untuk resolusi yang diinginkan untuk mengelola ukuran video yang dihasilkan.(Di shell Windows, ganti
-i Imgp%04d.jpg
dengan-i "Imgp%%04d.jpg"
. Kredit untuk ini ke Mike Fitzpatrick https://superuser.com/a/344178/153054 )sumber
Anda dapat menggunakan potongan kode di bawah ini:
sumber
Anda dapat menemukan contoh skrip dalam dokumentasi ffmpeg :
sumber
cp
jika tautan tidak berfungsi, jika sistem file Anda mendukungnyacp --reflink=auto
akan mencapai kecepatan / penggunaan ruang yang jauh lebih baik.Dari dokumen ffmpeg:
Menggunakan pola gumpalan
ffmpeg juga mendukung bash-style globbing (* mewakili sejumlah karakter apa pun).
Ini berguna jika gambar Anda berurutan tetapi tidak harus dalam urutan berurutan seperti pada contoh sebelumnya.
Jadi, selama file Anda diurutkan, menggunakan
-pattern_type glob
saklar harus bekerja untuk Anda.sumber
Sejauh yang saya tahu, Anda tidak dapat memulai urutan dalam angka acak (saya tidak ingat apakah Anda harus memulainya pada 0 atau 1), ditambah, itu tidak dapat memiliki celah, jika ya, ffmpeg akan menganggap urutannya sudah berakhir dan berhenti menambahkan lebih banyak gambar.
Juga, seperti yang dinyatakan dalam komentar untuk jawaban saya, ingat Anda harus menentukan lebar indeks Anda. Suka:
gambar% 03d.jpg
Dan jika Anda menggunakan tipe indeks% 03d, Anda harus mengisi nama file Anda dengan 0, seperti:
image001.jpg image002.jpg image003.jpg
dll.
sumber
Saya setuju dengan Francisco, tetapi sebagai solusi Anda hanya bisa menulis skrip cepat untuk memindahkan atau membuat tautan simbolis ke file dengan nomor urut yang dibutuhkan ffmpeg. Script kemudian dapat memanggil ffmpeg dan kemudian menghapus tautan atau memindahkan file kembali ke lokasi aslinya.
sumber
Lihatlah
sumber
Saya tahu ini adalah pertanyaan lama tetapi saya menemukan di Google sambil mencari jawaban yang sama. Tidak ada jawaban di sini yang memuaskan saya sepenuhnya sehingga saya melakukan lebih banyak pencarian dan membaca dan ini adalah perintah yang saya buat untuk masalah saya sendiri.
Alasan mengapa saya menggunakan perintah seperti ini adalah ...
sumber
-start_number
itulah yang dibutuhkan.Saya menggunakan flv encoder karena video saya menggunakan flash player (Jwplayer)
ffmpeg -i% d.jpg -vcodec flv test.flv
sumber
Dari dokumentasi , sepertinya Anda cukup menggunakan *
Sebagai catatan, untuk meningkatkan pengaruh kualitas, laju / fps mungkin penting (mis., Tentukan dulu frame rate sangat rendah / tinggi dan kemudian beralih dari filter kedua yang akan membuat video gerakan lambat menjadi normal?)
sumber
Dalam kasus saya, itu sedikit rumit karena angka dalam file. Begini tampilannya gambar saya:
dan inilah perintah yang saya gunakan:
sumber
Anda dapat melakukan ini dengan
convert -morph
:Jika Anda ingin menggunakan
ffmpeg
, saya menggunakandi mana
10*PTS
memberitahu ffmpeg untuk memperlambatnya 10 kali. Anda juga dapat memiliki pecahan di sana untuk mempercepatnya.sumber
-pattern_type glob
contoh nyata dengan audioOpsi ini disebutkan di: https://superuser.com/a/782520/128124 tetapi di sini ada beberapa contoh nyata penggunaannya, termasuk menambahkan audio ke video keluaran.
Video tayangan slide dengan satu gambar per detik
Tambahkan musik ke dalamnya, potong ketika audio ketika gambar berakhir:
Berikut adalah dua demo di YouTube:
Jadilah hippie dan gunakan format video Theora patent-unencumbered :
Gambar Anda tentu saja harus disortir berdasarkan abjad, biasanya sebagai:
dan seterusnya.
Lihat juga: http://unix.stackexchange.com/questions/68770/converting-png-frames-to-video-at-1-fps/339399#339399
Video kecepatan normal dengan satu gambar per bingkai pada 30 FPS
Begini tampilannya:
GIF dihasilkan dengan: https://askubuntu.com/questions/648603/how-to-create-an-animated-gif-from-mp4-video-via-command-line/837574#837574
Tambahkan beberapa audio ke dalamnya:
Hasil: https://www.youtube.com/watch?v=HG7c7lldhM4
Konversi satu file musik ke video dengan gambar tetap untuk unggahan YouTube
Dijawab di: Bagaimana cara mengkonversi format video yang diizinkan ke MP3?
Dapatkan beberapa gambar input uji sintetis
Ini adalah gambar uji yang telah saya gunakan dalam jawaban ini:
Gambar dibuat dengan: https://stackoverflow.com/questions/3191978/how-to-use-glut-opengl-to-render-to-a-file/14324292#14324292
Sangat keren untuk mengamati seberapa banyak video mengompres urutan urutan gambar lebih baik daripada ZIP karena mampu mengompresi seluruh frame dengan algoritma khusus:
opengl-rotating-triangle.mp4
: 340Kopengl-rotating-triangle.zip
: 7.3MTentang opsi CLI
Namun perlu dicatat bahwa terlepas dari namanya,
-glob
ini tidak umum seperti patters shell Glob, misalnya:-i '*'
gagal: https://trac.ffmpeg.org/ticket/3620 (tampaknya karena filetype disimpulkan dari ekstensi).-r 30
membuat-framerate 1
video 30 FPS untuk mengatasi bug pada pemain seperti VLC untuk framerates rendah: https://stackoverflow.com/questions/19267443/playback-issues-in-vlc-with-low-fps-video-from-images-using- menggunakan- ffmpeg / 41797724 # 41797724 Oleh karena itu ia mengulangi setiap frame 30 kali untuk menjaga efek 1 gambar per detik yang diinginkan.Langkah selanjutnya
Anda juga ingin:
potong beberapa audio agar sesuai dengan panjang video: https://stackoverflow.com/questions/18444194/cutting-the-videos-based-on-start-and-end-time-using-ffmpeg
tambahkan potongan audio: Cara menggabungkan file audio dan video di ffmpeg
TODO: belajar memotong dan menggabungkan beberapa file audio ke dalam video dari baris perintah:
Diuji pada
ffmpeg 3.4.4, vlc 3.0.3, Ubuntu 18.04.
Bibliografi
sumber