Question

Je dois créer quelque chose qui commence à servir une vidéo encodée en H.264 à un lecteur flash à mi-parcours du fichier (pour permettre le passage à un point de la vidéo qui n'a pas encore été mis en mémoire tampon).

Actuellement, les vidéos sont au format conteneur FLV, mais le transcodage est une option. J'ai réussi à réécrire l'en-tête du fichier et les informations de métadonnées pour un décalage d'octet donné. Cela fonctionne pour les vidéos plus anciennes, mais pas pour les fichiers encodés H.264. Je suppose que cela est dû au fait que les balises vidéo contenues dans le fichier doivent également être modifiées, ce qui n’est pas réalisable (cela prendrait trop de puissance de traitement).

Quel est le " bon " façon de le faire?

Était-ce utile?

La solution

Le lecteur flash ne peut commencer à lire la vidéo H.264 qu’une fois l’atome MOOV téléchargé. Les fournisseurs de pseudo-streaming existants vous donnent simplement un en-tête FLV - soit les 13 premiers octets du fichier, soit un codé en dur - puis servent le fichier à partir de l'offset donné. Si vous souhaitez créer un pseudo-streamer H.264, vous devez lui faire générer l'en-tête FLV, puis un atome MOOV, puis servir le reste du fichier à partir de l'offset donné. Si vous n'utilisez pas de conteneur FLV, vous n'aurez pas besoin de l'en-tête FLV, mais vous aurez toujours besoin de l'atome MOOV.

Malheureusement, je ne pense pas que vous puissiez utiliser l’atome MOOV à partir du fichier sur le disque; les informations qu'il contient ne conviendront pas pour le fragment de fichier que vous servez. Vous devez donc analyser l’atome existant et générer l’un de vos propres qui convient à la partie servie du fichier.

S'il existe des structures compliquées dans le fichier H.264, le pseudo-flux pourrait s'avérer encore plus compliqué. Si l'analyse du fichier n'est pas réalisable, j'ai bien peur que vous ne puissiez pas pseudo-diffuser votre contenu multimédia.

Autres conseils

@yoavf - Je pense que l'OP s'intéresse aux aspects côté serveur du streaming h.264 à la demande à l'intérieur de fichiers FLV. La réutilisation des joueurs existants serait bien pour lui, je pense. Ou peut-être est-ce que mes propres besoins sont exprimés? <: S

Le deuxième lien de yoavf contient un autre lien vers celui de Tinic Uro Qu'est-ce qui vient de se passer avec la vidéo sur le Web? . Une citation pertinente:

  

Sera-t-il possible de placer des flux H.264 dans la structure de fichier FLV traditionnelle? Ce sera le cas, mais nous encourageons vivement tout le monde à adopter le nouveau format de fichier standard. Il existe des limites fonctionnelles avec la structure FLV lors de la diffusion H.264 que nous ne pourrions pas surmonter sans une nouvelle conception du format de fichier. C'est l'une des raisons pour lesquelles nous nous éloignons de la structure de fichier FLV traditionnelle. Utiliser spécifiquement les en-têtes et les fins de séquence est délicat avec les flux FLV.

Donc, il semble que l’on puisse soit bricoler avec l’encodage ffmpeg (si c’est ainsi que vous obtenez vos fichiers FLV, comme je le suis) ou bien entrer dans le nouveau format. Hmmmm ....

Vous pouvez faire deux choses:

1) utilisez lighttpd et son plug-in de diffusion en continu mp4 qui générera le conteneur de diffusion requis à la volée

2) créez un fichier FLV avec images clés et utilisez un script de diffusion en continu (tel que XMOOV) pour diffuser votre fichier.

si vous avez besoin de mp4 / aac, vous pouvez simplement les insérer dans le conteneur FLV, au grand dam de Adobe, mais cela fonctionne.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top