Saya memiliki sekitar 3000 klip video pendek, masing-masing berdurasi sekitar 3 detik. Saya perlu memutar masing-masing 90 derajat. Apa cara terbaik untuk melakukan ini? Saya memiliki langganan Adobe Creative Cloud, serta akses ke mesin Windows dan Mac. Mencari solusi termudah untuk mengotomatisasi / proses batch rotasi begitu banyak video.
Jika Anda bertanya-tanya - video adalah bagian dari kursus e-learning tentang kayu. Pelajar melihat setiap video yang dipilih secara acak, yang hanya berupa klip pendek dari sepotong kayu yang berputar. Video direkam sehingga kayu (2x4d, dll) horisontal. Tetapi sekarang klien menginginkan kayu menjadi vertikal dalam klip.
Jawaban:
Gunakan
ffmpeg
dan filter "transpose" seperti yang disarankan "buruk" . Misalnya, jika file Anda mp4 dan berada di direktori saat ini:Nilai transpos dapat berupa "1" atau "jam" untuk rotasi searah jarum jam, "2" atau "cclock" untuk rotasi berlawanan arah jarum jam. Ada nilai-nilai lain yang juga akan berlaku flip.
Audio akan disalin streaming untuk menghindari pengkodean ulang yang tidak perlu.
Metadata rotasi aliran video dihapus dalam contoh ini. Kalau tidak,
ffmpeg
akan menyalinnya dari input ke output yang menghasilkan rotasi yang salah untuk pemain yang memperhatikan metadata ini (ada yang melakukannya, dan ada yang tidak).Contoh lain, lebih verbose dan fleksibel, dan yang menyimpan file yang diputar di direktori yang sama dengan nama baru:
sumber
Anda telah menentukan bahwa Anda tertarik untuk mengerjakan sejumlah besar video, jika Anda memiliki mesin multicore dan Anda akan menggunakan
for
loop normal yang disediakan oleh shell Anda, Anda akan memiliki salah satu core Anda menjadi panas, sementara yang lain tidak melakukan apa-apa . Ini tidak ideal.Apa yang harus Anda lakukan untuk pekerjaan seperti itu adalah menggunakan
parallel
, alat yang memungkinkan Anda untuk memulai beberapa pekerjaan sekaligus, dan itu bisa melakukan segala sesuatu yang bisa dilakukan oleh for-loop, tetapi lebih baik.Saya tidak akan menulis tentang semua fitur alat ini, tetapi akan berkonsentrasi pada tugas spesifik Anda.
Salah satu cara untuk memulai semua pekerjaan ini adalah:
Di sini
{}
menggantikan setiap nama file, dan{.}
mengganti nama file tanpa ekstensi.Saya akan menyarankan agar Anda memulai pekerjaan sebanyak yang Anda miliki, ambil satu. Alasannya adalah agar sistem operasi Anda akan tetap dapat digunakan, dan juga ini akan menyelamatkan Anda jika Anda menggunakan enkripsi harddisk (yang akan menggunakan daya pemrosesan untuk membaca / menulis data). Untuk melakukan ini cukup tambahkan
--jobs -1
ke baris perintah Anda, dan Anda akan membatasi jumlah pekerjaan.Harap diingat bahwa tidak ada output yang akan diberikan sampai setiap encoding selesai. Jadi Anda tidak akan melihat seberapa banyak dari setiap video Anda dilakukan.
sumber
Berdasarkan jawaban ini, Anda dapat menggunakan ffmpeg dengan perintah berikut untuk memutar video:
Untuk Batch memproses folder film Anda dapat menggunakan bahasa pemrograman pilihan Anda dan beralih melalui file. Saya sudah menggunakan linux dengan python 2.7+ di sini. Anda hanya perlu mengedit
folder_movies
jalur,path_to_ffmpeg
dan mengatur film Andaextension
:Setelah itu folder film Anda akan terlihat seperti:
Keuntungan menggunakan python adalah bahwa kode menjalankan lintas platform . Satu-satunya hal yang perlu Anda pertimbangkan adalah path ke direktori dan ffmpeg dapat dieksekusi. Untuk menjalankan ini pada mesin windows Anda hanya perlu mengganti path ke sesuatu seperti:
Catatan: Saya bukan ahli ffmpeg, mungkin ada cara untuk memprosesnya secara langsung.
sumber
mkdir -p rotated; for f in *.mp4; do ffmpeg -i "$f" -vf transpose=2 rotated/"$f"; done
(dengan asumsi file video Anda .mp4 dalam contoh ini).