Streaming mp4 dengan ffmpeg

16

Saya perlu membuat umpan yang memiliki dua aliran - webm dan mp4 - sehingga dapat kompatibel di semua pemutar video HTML5. Aliran webm bekerja dengan sempurna. Namun, ketika mencoba mengakses aliran mp4, server memuntahkan kesalahan berikut:

Sat Mar  9 23:21:54 2013 muxer does not support non seekable output

Inilah bagian dari file ffserver.conf yang berkaitan dengan aliran mp4:

<Stream channel1.mp4>       # Output stream URL definition
   Feed feed1.ffm              # Feed from which to receive video
   Format mp4

   # Audio settings
   AudioCodec libmp3lame
   AudioBitRate 64             # Audio bitrate

   # Video settings
   VideoCodec libx264
   VideoSize 560x320           # Video resolution
   VideoFrameRate 25           # Video FPS
   AVOptionVideo flags +global_header  # Parameters passed to encoder
                                       # (same as ffmpeg command-line parameters)
   AVOptionVideo cpu-used 0
   AVOptionVideo qmin 10
   AVOptionVideo qmax 42
   AVOptionVideo quality good
   AVOptionAudio flags +global_header
   PreRoll 15
   StartSendOnKey
   VideoBitRate 400            # Video bitrate
</Stream>

Dari apa yang dapat saya temukan, beberapa orang mengatakan bahwa mp4 tidak dapat dialirkan. Saya tidak memiliki lampiran ke mp4, kecuali kenyataan bahwa saya mendapat kesan bahwa Anda perlu mp4 untuk melakukan streaming video ke iPhone dengan pemutar video HTML5. Jika ini bukan masalahnya, beri tahu saya dan saya akan dengan senang hati beralih ke sesuatu yang lebih bagus dengan streaming ffmpeg.

Fibericon
sumber
3
Anda tidak perlu melakukan streaming MP4. Untuk video HTML5 H.264 / MP4 harus cukup untuk menyandikan file video dengan -movflags faststart, atau memperlakukannya dengan qt-faststart, lalu arahkan ke file MP4 di <video>tag. Server Anda kemudian membutuhkan modul streaming H.264 untuk memungkinkan klien mencari. Atau apakah Anda memiliki input langsung?
slhck
Klien saya mengharuskan ini streaming - ia ingin menonaktifkan pencarian klien sepenuhnya. Ini mengalir dari file (file di server dalam format webm, jika ada bedanya). Saya tidak bisa begitu saja menyembunyikan kontrol, karena iPhone memaksa kontrol ditampilkan.
Fibericon
@ slhck: Saya streaming input webcam langsung dengan mp4 tetapi tidak dapat melakukannya. Ini bekerja ketika saya menggunakan flv. Apakah mungkin menggunakan mp4 untuk streaming langsung?
John Qualis
@JohnQualis Tidak yakin apakah itu bisa dilakukan dengan ffserver. Tapi wadah seharusnya tidak masalah, sungguh - codec sama dengan FLV dan MP4 (H.264 dan AAC).
slhck
@ sklhck: Saya membuatnya bekerja dengan flv menggunakan ffserver tetapi tidak dengan mp4. Sebagian besar browser web mendukung mp4. Saya memerlukan sesuatu yang berfungsi di iphone, android, dan semua browser web terkenal dan h264 :) Dan saya streaming langsung webcam
John Qualis

Jawaban:

6

Artikel HTML 5 dan Video ramah iPad dari Situs Web Anda sendiri , terakhir diperbarui 12 November 2014, memiliki informasi ini:

gambar

Artikel ini merekomendasikan penggunaan MP4 sebagai solusi yang bagus dengan versi ffmpeg yang cukup baru, menggunakan pengodean H.264 dengan AAC.

Saya sarankan membaca artikel dengan memperhatikan detail: Ini berisi contoh file HTML yang akan bekerja pada semua browser utama, serta contoh perintah FFmpeg yang digunakan untuk mengkonversi video ke file .mp4 sehingga mereka akan streaming dengan benar.

harrymc
sumber
apakah ini tentang streaming "langsung"?
Markus Siebeneicher
@MarkusSiebeneicher: Ya, sebagian besar.
harrymc
Saya masih memiliki masalah "live" streaming mp4 dengan ffmpeg, karena sepertinya tidak "dapat dicari". Saya menyalurkan output ffmpeg langsung ke browser, dengan webm berfungsi di luar kotak. Menggunakan format mp4 itu semacam mengatakan itu tidak dapat dicari ... Jadi saya benar-benar bertanya-tanya apa yang harus dilakukan untuk membuat mp4 "live" dapat di-stream, di mana tidak ada video yang disimpan sebagai file secara langsung (yang akan membuatnya dicari).
Markus Siebeneicher
@MarkusSiebeneicher: Saya sarankan menanyakan pertanyaan ini dalam posting baru dengan detail.
harrymc