Streaming mp4 con ffmpeg


16

Devo creare un feed che abbia due stream - webm e mp4 - in modo che possa essere compatibile su tutti i lettori video HTML5. Il flusso webm funziona perfettamente. Tuttavia, quando si tenta di accedere al flusso mp4, il server genera il seguente errore:

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

Ecco la parte del file ffserver.conf che si occupa del flusso 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>

Da quello che posso trovare, alcune persone stanno dicendo che mp4 semplicemente non può essere trasmesso in streaming. Non ho alcun allegato a mp4, tranne per il fatto che avevo l'impressione che tu avessi bisogno di mp4 per trasmettere video su iPhone con un lettore video HTML5. Se questo non è il caso, fammi sapere e passerò volentieri a qualcosa che funziona meglio con lo streaming ffmpeg.


3
Non è necessario eseguire lo streaming di MP4. Per i video HTML5 H.264 / MP4 dovrebbe essere sufficiente codificare il file video -movflags faststarto trattarlo qt-faststart, quindi puntare al file MP4 nel <video>tag. Il tuo server ha quindi bisogno di un modulo di streaming H.264 per consentire al client di cercare. O hai input dal vivo?
slhck

Il mio client richiede che questo sia in streaming: vuole disabilitare completamente la ricerca dei client. È in streaming da un file (il file sul server è in formato webm, se fa la differenza). Non posso semplicemente nascondere i controlli, perché gli iPhone impongono la visualizzazione dei controlli.
Fibericon

@slhck: sto trasmettendo streaming webcam in diretta con mp4 ma non riesco a farlo. Funziona quando uso FLV. È possibile utilizzare mp4 per lo streaming live?
John Qualis,

@JohnQualis Non sono sicuro che sia fattibile con ffserver. Ma il contenitore non dovrebbe importare, davvero - i codec sono gli stessi con FLV e MP4 (H.264 e AAC).
slhck,

@sklhck: l'ho fatto funzionare con flv usando ffserver ma non con mp4. La maggior parte dei browser Web supporta mp4. Ho bisogno di qualcosa che funzioni su iPhone, Android e tutti i browser Web famosi e che sia h264 :) E sto trasmettendo una webcam in diretta
John Qualis

Risposte:


6

L'articolo HTML 5 e i video compatibili con iPad dal tuo sito Web , ultimo aggiornamento il 12 novembre 2014, contengono queste informazioni:

Immagine

L'articolo raccomanda di usare MP4 come una buona soluzione con una versione abbastanza recente di ffmpeg, usando la codifica H.264 con AAC.

Suggerisco di leggere l'articolo con attenzione ai dettagli: contiene un file HTML di esempio che funzionerà su tutti i principali browser, nonché un comando FFmpeg di esempio utilizzato per convertire i video in file .mp4 in modo che vengano trasmessi correttamente.


si tratta di streaming "live"?
Markus Siebeneicher,

@MarkusSiebeneicher: Sì, principalmente.
harrymc,

Ho ancora problemi "live" in streaming mp4 con ffmpeg, in quanto non sembra "ricercabile". Eseguo il pipe dell'output di ffmpeg direttamente nel browser, con webm funziona immediatamente. Usando il formato mp4 in un certo senso dice che non è cercabile ... Quindi mi chiedo davvero cosa fare per rendere mp4 "live" in streaming, dove nessun video viene salvato direttamente come file (il che lo renderebbe cercabile).
Markus Siebeneicher,

@MarkusSiebeneicher: suggerisco di porre questa domanda in un nuovo post con i dettagli.
harrymc,

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.