Bagaimana cara cepat mengkonversi mp4 ke webm menggunakan ffmpeg?

20

Saya harus mengonversi 76 mp4 file ke webm untuk tujuan situs web yang menggunakan video HTML5. Saya berbicara tentang 10 Gb file mp4 ... Saya tahu saya bisa meminta ffmpeg untuk melakukannya menggunakan:

ffmpeg -i input_file.mp4 output_file.webm

Tentu saja saya akan melakukannya secara rekursif dengan:

find ./ -name '*.mp4' -exec bash -c 'ffmpeg -i "$0" "${0%%.mp4}.webm"' {} \;

Saya bahkan mencoba sesuatu yang saya temukan di suatu tempat di internet:

ffmpeg -i input_file.mp4 -cpu-used 4 -threads 8 output_file.webm

Tetapi masalahnya adalah saya tidak perlu kurang dari seminggu !!! Apa yang saya lakukan salah? Apakah ada cara yang mungkin untuk mempercepat itu? Jika saya mengonversi ke ogg, apakah saya akan mendapatkan kecepatan? Tolong bantu!!!

pr.nizar
sumber
@ LordNeckbeard Anda harus menulis jawaban berdasarkan panduan itu. Juga, harus dicatat bahwa vpx encoder lambat seperti tetes tebu, bahkan dengan pengaturan waras dll, dibandingkan dengan x264 ... kecuali jika Anda bersedia untuk mengorbankan banyak kualitas, menyalakan tidak mungkin untuk mendapatkan encode yang sangat cepat dengannya.
evilsoup
Masalahnya adalah tentang kompatibilitas .. Ini adalah tabel kompatibilitas kecil: {x264: IE (+) Safari (+) Chrome (+) Firefox (-) Opera (-)} {webm: IE (-) Safari (-) Chrome (+) Firefox (+) Opera (+)} Saya tahu mereka mengatakan Safari dan IE memegang bagian terbesar dari pasar tetapi saya sangat meragukannya dan akan bertaruh pada Firefox dan Opera! ;)
pr.nizar
@ pr.nizar Berkat Cisco merilis OpenH264 di bawah BSD, firefox sekarang mendukung h.264.
Wyatt8740
Terkait: stackoverflow.com/questions/43612424/… | superuser.com/questions/1211786/…
Ciro Santilli 新疆 改造 中心 法轮功 六四 事件

Jawaban:

11

Transcoding video membutuhkan waktu. Ini juga membutuhkan lebih banyak pengetahuan tentang parameter pengkodean; Default ffmpeg sepertinya tidak cocok untuk Anda dan bahkan mungkin tidak membuat file output yang dapat digunakan.

Inilah awalnya:

http://blog.pcode.nl/2010/10/17/encoding-webm-using-ffmpeg/

Pengaturan tersebut akan dikodekan ke bitrate rata - rata tertentu (bitrate video 3900kbit), sehingga akan ada lonjakan dalam bitrate tersebut.

MP4 dan WebM menggunakan codec video yang berbeda, sehingga tidak ada jalan pintas; video harus ditranskode.

Kecepatan encoding, tentu saja, akan sangat bervariasi tergantung pada ukuran frame, kecepatan frame, dan pengaturan kualitas. Untuk encode 720p Anda mungkin berharap dapat menyandikan sekitar 1: 1 (yaitu 10 jam video dalam 10 jam) pada CPU dari beberapa tahun terakhir. Jika Anda melakukan pengkodean ABR dua lulus seperti dalam contoh yang diberikan dalam tautan, hampir dua kali lipat.

thomasrutter
sumber
8

Menggandakan atau memotong setengahnya? Jadi itu jalan buntu .. Saya tidak akan bermain dengan bitrate, saya tidak pernah tahu apa yang diharapkan dari kualitas atau ukuran .. Saya pikir saya akan tetap pada bitrate ini dan membuat klien bertahan sampai konversi berakhir ..

find ./ -name '*.mp4' -exec bash -c 'ffmpeg -i "$0" -vcodec libvpx -acodec libvorbis -cpu-used 5 -threads 8 "${0%%.mp4}.webm"' {} \;

Saya mempostingnya untuk pengguna masa depan, sebenarnya saya mendapatkan kecepatan tetapi CPU saya bekerja sangat keras: 60 hingga 80% pada setiap inti! Sekarang saya pikir itu akan memakan waktu lebih sedikit: 3 hari, bukan 6 atau 7 .. Saya harap itu tidak akan rusak .. ^ _ ^

Terima kasih, kawan!

Sunting: Menghapus switch -sameq setelah komentar dari LordNeckbeard dan neon_overload -sameq tidak berarti "kualitas" yang sama

pr.nizar
sumber
3
-sameqtidak berarti "kualitas yang sama" dan telah dihapus hulu. Jangan gunakan itu. Lihat tautan dalam komentar saya untuk pertanyaan Anda untuk instruksi enkode libvpx yang terperinci.
llogan
2
-sameq berarti quantizer yang sama, namun tidak mungkin untuk membandingkan quantizer antara h.264 dan VP8, jadi bahkan jika ini berhasil, Anda hampir pasti akan mendapatkan hasil yang rusak jika Anda menggunakannya - jadi jangan.
thomasrutter
2
Terima kasih, kawan, telah memperhatikan saya! Saya mengedit respons saya ..;) Sebenarnya saya tidak menggunakan saklar itu karena saya melihatnya semakin lambat .. Saya bahkan menjatuhkan ffmpeg dan menggunakan avconv: ITU JAUH CEPAT! Pekerjaan itu dilakukan dalam satu setengah hari dengan ini: find ./ -name '* .mp4' -exec bash -c 'avconv -i "$ 0" -vcodec libvpx -acodec libvorbis -cpu -digunakan 5 -bagi 8 " $ {0 %%. Mp4} .webm "'{} \; Saya tahu saya mengalihkan topik pembicaraan dengan komentar ini, tetapi saya pikir itu layak untuk dikatakan .. ^ _ ^ Semoga ini membantu seseorang! ;)
pr.nizar
Untuk kualitasnya, saya benar-benar tidak bisa membedakan antara file asli dan webm yang di-trancoded: kualitas audio dan videonya hampir sama!
pr.nizar
1
Masih disarankan agar Anda menetapkan nilai crf atau bitrate sebagai lawan dari menggunakan default ffmpeg / avconv, apa pun itu.
thomasrutter