Bagaimana saya bisa mengkonversi some.flv
atau some.avi
atau some.wmv
dengan FFmpeg untuk memastikan bahwa video ini akan dimainkan dan seekable di JW Player?
sumber
Bagaimana saya bisa mengkonversi some.flv
atau some.avi
atau some.wmv
dengan FFmpeg untuk memastikan bahwa video ini akan dimainkan dan seekable di JW Player?
Ini adalah jawaban untuk komentar terakhir oleh Anda @ abrahab.
Anda tidak perlu mp4box
sebuah file untuk dapat melakukan pseudo streaming melalui nginx. Modul streaming MP4 merawatnya terlepas dari posisi atom moov ( mp4box
menggeser atom moov ke awal file).
Sekarang untuk kesalahan 500 server, apakah Anda menggunakan opsi "-frag" dengan mp4box? Modul streaming MP4 tidak dapat membaca file MP4 terfragmentasi. Penggunaan mp4box
pseudo streaming yang baik adalah untuk menyisipkan video untuk pencarian yang lebih baik. Pergeseran atom Moov adalah keuntungan tambahan.
Saya selalu melakukan ini pada mp4box
file yang disandikan FFmpeg
MP4Box -add MyVideo.mp4 -isma Myvideo-box.mp4
Ini juga akan interleave file MP4 dalam 500 milidetik potongan secara default.
MP4Box -isma -inter 500 Myvideo.mp4
H.264 dalam MP4
Secara umum, Anda ingin membuat video x264 dalam wadah MP4. Opsi ini pada dasarnya didukung oleh semua perangkat dan browser.
Berikut ini harus cukup. Pastikan untuk mengganti nama input dan opsi CRF. Yang terakhir menentukan kualitas, di mana nilai waras berkisar antara 19 hingga 25 - lebih rendah berarti kualitas yang lebih baik, tetapi juga bitrate lebih tinggi:
Anda juga dapat menggunakan Handbrake untuk penyandian jika Anda menyukai cara GUI.
Menggunakan
faststart
opsiSekarang, apa yang perlu Anda lakukan adalah memindahkan atom MOOV penampung MP4 ke awal. Atom ini (pada dasarnya, satu unit data dalam wadah MP4) akan berisi metadata penting tentang aliran video / audio itu sendiri.
-movflags faststart
harus melakukan hal itu.Jika versi FFmpeg Anda tidak memiliki opsi ini, pertimbangkan untuk memutakhirkan. Jika Anda tidak dapat memutakhirkan, Anda dapat mencapai hal yang sama dengan alat di bawah ini:
QTIndexSwapper , aplikasi Adobe AIR
MP4Box , sumber bebas dan terbuka, menjalankan perintah yang mirip dengan yang berikut, tempat Anda dapat mengubah interval (di sini, 500):
qt-faststart in Python , yang bekerja di mana-mana di mana Python diinstal.
Itu saja.
Mengontrol bitrate / kualitas
Sekarang, tentu saja, untuk streaming, Anda mungkin sebenarnya ingin membatasi bitrate agar tetap dalam batas tertentu. Anda dapat membaca lebih lanjut tentang itu di posting blog saya tentang metode kontrol tingkat .
Misalnya, dengan menambahkan
-maxrate 2M -bufsize 2M
opsi pengkodean, Anda membatasi pengkodean menjadi 2 Mbit / dtk, yang mungkin cukup untuk video 720p. Kecepatan bit yang dibutuhkan akan tergantung, tentu saja, pada seberapa kompleks kontennya. Ini membutuhkan beberapa trial and error.sumber
ffmpeg -i 1.flv -vcodec libx264 -f mp4 -an -g 1 -f mp4 -g 30 -level 3 new.mp4
kemudianmp4box
dan mp4 tidak bisa mencari dan laporan nginx500 internal server error
untuk parameter awal yang lebih yang0
. saat video dikodekan tanpa-vcoded libx264
(default mp4 coder) semua berkas kerja (tapi kualitas! sakit!) :( (maaf, sekarang, tidak diizinkan untuk mengubah pendapat Anda)-movflags faststart
apa yang saya butuhkanAnda cukup mengonversi AVI atau MP4 yang tidak dapat di-stream, juga tanpa meng-enkode ulang semuanya, dengan melakukan ini:
Tidak perlu menyandikan ulang apa pun, karena hanya atom moov yang harus dipindahkan.
sumber
Anda dapat mencoba ini dengan ffmpeg:
sumber
-acodec pcm_s16le
(error:)Could not write header for output file #0 (incorrect codec parameters ?): Invalid argument
. Alasan yang bagus seperti draft IETF mengapa memilih persis parameter ini tampaknya juga tidak ada.