Streaming mp4 avec ffmpeg

16

J'ai besoin de créer un flux qui a deux flux - webm et mp4 - afin qu'il puisse être compatible avec tous les lecteurs vidéo HTML5. Le flux webm fonctionne parfaitement. Cependant, lors de la tentative d'accès au flux mp4, le serveur crache l'erreur suivante:

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

Voici la partie du fichier ffserver.conf qui traite du flux 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>

D'après ce que je peux trouver, certaines personnes disent que mp4 ne peut tout simplement pas être diffusé. Je n'ai aucun attachement à mp4, sauf que j'avais l'impression que vous aviez besoin de mp4 pour diffuser de la vidéo sur l'iPhone avec un lecteur vidéo HTML5. Si ce n'est pas le cas, faites le moi savoir et je serai ravi de passer à quelque chose qui fonctionne mieux avec le streaming ffmpeg.

Fibericon
la source
3
Vous n'avez pas vraiment besoin de diffuser MP4. Pour la vidéo HTML5 H.264 / MP4, il devrait suffire de coder le fichier vidéo -movflags faststartou de le traiter qt-faststart, puis de pointer vers le fichier MP4 dans la <video>balise. Votre serveur a alors besoin d'un module de streaming H.264 pour permettre au client de rechercher. Ou avez-vous une entrée en direct?
slhck
Mon client exige que ce soit en streaming - il veut désactiver complètement la recherche de clients. Il diffuse à partir d'un fichier (le fichier sur le serveur est au format webm, si cela fait une différence). Je ne peux pas simplement masquer les contrôles, car les iPhones forcent l'affichage des contrôles.
Fibericon
@slhck: Je diffuse des entrées de webcam en direct avec mp4 mais je ne peux pas le faire. Cela fonctionne lorsque j'utilise flv. Est-il possible d'utiliser mp4 pour la diffusion en direct?
John Qualis
@JohnQualis Je ne sais pas si c'est faisable avec ffserver. Mais le conteneur ne devrait pas avoir d'importance, vraiment - les codecs sont les mêmes avec FLV et MP4 (H.264 et AAC).
slhck
@sklhck: Je l'ai fait fonctionner avec flv en utilisant ffserver mais pas avec mp4. La plupart des navigateurs Web prennent en charge mp4. J'ai besoin de quelque chose qui fonctionne sur iPhone, Android et tous les navigateurs Web célèbres et que son h264 :) Et je diffuse une webcam en direct
John Qualis

Réponses:

6

L'article HTML 5 et la vidéo compatible iPad de votre propre site Web , mis à jour le 12 novembre 2014, contiennent les informations suivantes:

image

L'article recommande d'utiliser MP4 comme une bonne solution avec une version assez récente de ffmpeg, en utilisant le codage H.264 avec AAC.

Je suggère de lire l'article avec une attention aux détails: il contient un exemple de fichier HTML qui fonctionnera sur tous les principaux navigateurs, ainsi qu'un exemple de commande FFmpeg utilisé pour convertir des vidéos en fichiers .mp4 afin qu'elles soient diffusées correctement.

harrymc
la source
s'agit-il d'un streaming "en direct"?
Markus Siebeneicher
@MarkusSiebeneicher: Oui, surtout.
harrymc
J'ai toujours des problèmes de streaming mp4 "live" avec ffmpeg, car il ne semble pas "recherchable". Je redirige la sortie ffmpeg directement vers le navigateur, avec webm, cela fonctionne hors de la boîte. En utilisant le format mp4, cela dit en quelque sorte que ce n'est pas recherchable ... Je me demande donc vraiment quoi faire pour rendre mp4 "live" streamable, où aucune vidéo n'est enregistrée directement sous forme de fichier (ce qui le rendrait recherchable).
Markus Siebeneicher
@MarkusSiebeneicher: Je suggère de poser cette question dans un nouvel article avec des détails.
harrymc