HTML5 uyumlu “Herkes için Video” almak için hangi grup ffmpeg komut dosyasına ihtiyacım var?


12

Herkes için Video'yu kullanmak üzere tüm doğru biçimlerde bir video almak için ffmpeg / mencoder / some_other_CLI_app içinde hangi komutları yapmalıyım ?

Yani mekanik bir öğretici olmasını engelleyen bir incelik var mı

VIDEO=video.mp4
TYPE=$(ffmpeg --find-information-about-the-video ... )
ffmpeg ... > video.mov
ffmpeg ... > video.flv
ffmpeg ... > video.webm
ffmpeg ... > video.h.264
...

Sonra Herkes İçin Video kodunu kopyalayıp sayfanıza yapıştırın.

Amacım, kişisel web sayfamda barındırdığım bir video yerleştirmek. Flash yedekli HTML5 tercih edilir, bu nedenle en basit yol Herkes için Video gibi görünür. Ancak bu sayfa, video formatları hakkında uzun ve eksiksiz bir makale okuyarak videoyu tüm farklı formatlara kodlayan en karmaşık kısmı okuyucusuna bırakır . Elbette bu gerekli değildir. Bir kullanıcının bir ses dosyasını körü körüne farklı formatlara dönüştürmesi için komutların bir listesini sağlayabilirim. Umarım bir ffmpeg gurusu aynı şeyi video için de yapabilir.


1
Sahte kod örneklerinize küçük bir açıklama: .movHTML5 videosu için bir h.264uzantı yoktur ve uzantı da yoktur . Orada olan .264 NAL birimleri için ham Ek B Bytestream olan. Video kodlaması roket bilimi değildir, ancak kavramları tanımak için biraz zaman ayırmanız gerekir.
slhck

Yanıtlar:


21

Not: Bu yanıt, orijinal gönderisinden bu yana yoğun bir şekilde düzenlendi. Şimdi 2017; akış, eskisinden farklı çalışır. Bu kılavuz, bir video akışının belirli bir çözünürlükte basit aşamalı indirilmesini varsayar - uyarlanabilir akış yok.

Gereksinimler

Öncelikle, son ffmpegsürümü indirdiğinizden emin olun (statik bir yapı indirin; arama apt-get install ffmpegveya benzeri bir şey yapma ). İdeal olarak, kendiniz derleyin . Çok uzun sürmez.

Çoğu tarayıcı tarafından desteklenen videolar oluşturmak için her zaman en son uyumluluk tablosunu kontrol edin . Her tarayıcıda çalışan tek bir kodek / biçim yoktur, ancak WebM'de MP4 ve VP9'da ilgili ses kodekiyle H.264 oluşturursanız, Chrome, Firefox, Safari ve bazı IE sürümleri için desteğiniz olur.

WebM (VP9 / Vorbis)

FFmpeg VP9 kılavuzundaki önerileri izleyin ve hız kısıtlamaları olan iki geçişli kodlama yaklaşımını kullanın:

ffmpeg -y -i input-c:v libvpx-vp9 -b:v 2000k -minrate 500k -maxrate 2500k -c:a libvorbis -pass 1 -f webm /dev/null && \
ffmpeg -i input-c:v libvpx-vp9 -b:v 2000k -minrate 500k -maxrate 2500k -c:a libvorbis -pass 2 output.webm

Hedef bit hızı çözünürlüğünüze, kare hızınıza, içerik türüne ve istediğiniz kaliteye bağlıdır. 2,5 MBit / sn, 30 fps'de HD video için iyi bir uzlaşma olmalıdır. Bazı öneriler için bu Google kılavuzuna bakın .

MP4 (H.264 / AAC)

FFmpeg H.264 kılavuzundaki önerileri izleyin ve hız kısıtlamaları olan iki geçişli kodlama yaklaşımını kullanın:

ffmpeg -y -i input -c:v libx264 -b:v 5000k -minrate 1000k -maxrate 8000k -pass 1 -c:a aac -f mp4 /dev/null && \
ffmpeg -i input -c:v libx264 -b:v 5000k -minrate 1000k -maxrate 8000k -pass 2 -c:a aac -movflags faststart output.mp4

H.264 o kadar verimli olmadığından, burada hedef bit hızı VP9 videodan yaklaşık% 50 daha yüksek olmalıdır. -movflags faststartVideonun ilk yüklemesini daha hızlı yapmak için ikinci geçişe seçeneği ekleyin .

Ses seçeneklerini ayarlamak için AAC kodlama kılavuzuna bakın .


1
Paragraflarınızdan birinin 2013-12-19 sürümü cümlenin ortasında kesiliyor. "Ses varsayılan olarak tekrar 128 kBit / s'dir, ancak değişken bit hızı için q: a değerini ayarlayabilirsiniz; burada değerler 0 ila 500 arasında değişir. 100 varsayılan ve daha yüksek demektir."
Alan De Smet

@slhck çok mantıklı, ancak iki sentim, tüm iOS cihazlarını veya HLS'yi kabul edenleri desteklemek için Ogg'i bırakıp mpegts / m3u8 ile değiştirmeniz. .Mp4 dosyalarını yeniden kullanabilir ve mpeg-ts işlemesini ffmpeg'e ekleyebilirsiniz.
Paul Gregoire

@Mondain Gerçekten, ancak MPEG-TS / .m3u8 genellikle HTML5 uyumlu bir video değildir. Bir HLS sunucusuna ihtiyacınız var ve gerçek zamanlı olarak bu soru kapsamında olmayan akış hakkında biraz daha fazla bilgi sahibi olmanız gerekiyor.
slhck

İyi puan, ama şimdiye kadar deneyimlerime göre basit bir http sunucusu m3u8'i bir video etiketine sunabilir. Normalde yapılması gereken tek şey m3u8 ve ts için mime türlerini ilgili sunucu yapılandırmasına eklemektir.
Paul Gregoire
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.