Comment mettre en œuvre les spécifications en streaming Adobe HTTP sans utiliser leur serveur en streaming

StackOverflow https://stackoverflow.com/questions/4443146

Question

de Flash 10.1, ils ont ajouté la possibilité d'ajouter des octets dans l'objet NetStream via la méthode appendBytes (décrite ici http://www.bytearray.org/?p=1689 ). La principale raison de cet ajout est que Adobe enfin supporte le streaming HTTP de la vidéo. Cela tombe bien, mais il semble que vous devez utiliser le logiciel Adobe Media Streaming Server ( http: // www .adobe.com / produits / httpdynamicstreaming / ) pour créer les morceaux vidéo correct de votre vidéo existante pour permettre le streaming en douceur.

J'ai essayé de faire une version piratée de streaming HTTP dans le passé où j'échange les objets NetStream (comme ici http://video.leizhu.com/video.html ), mais il y a toujours une pause momentanée entre les morceaux. Avec les nouveaux appendBytes, j'ai essayé de faire une maquette rapide avec les deux sections de la vidéo à partir du site précédent, mais même alors, le saut reste encore.

Quelqu'un sait comment les deux fichiers consécutifs .FLV besoins formatté pour que la méthode appendBytes sur l'objet NetStream pour créer une belle vidéo lisse, sans un saut notable entre les segments?

Était-ce utile?

La solution

Je suis en mesure d'obtenir ce travail en utilisant le fichier Packager outil d'Adobe qui Samuel décrit. Je n'ai pas utilisé l'objet NetStream mais je le lecteur Sample OSMF que je suppose utilise ce interne. Voici comment faire avec sans utiliser FMS:

  1. Obtenir le fichier d'Adobe Packager pour Http Dynamic Streaming http://www.adobe.com/products/ httpdynamicstreaming /
  2. Exécutez le fichier Packager sur un fichier MP4 existant contenant H.264 / AAC comme ceci: C: \ Program Files \ Adobe \ Flash Media Server 4 \ tools \ f4fpackager> f4fpackager.exe --input-file = "MyFile.mp4" --segment durée = 30

Cela se traduira par 30 secondes fichiers long F4F, également F4X et un fichier F4M. Les fichiers sont F4F votre segmentés correctement (et fragmenté) des fichiers MP4 qui devraient jouer. Si vous voulez tester cela en utilisant le lecteur OSMF aussi faire ce qui suit:

  1. Obtenir serveur Apache
  2. Get Adobe Http Origin Module pour Apache de http://www.adobe.com/products/httpdynamicstreaming /
  3. Installer le module selon http: //help.adobe .com / fr / HTTPStreaming / 1.0 / Utilisation / WS8d6ed60bd880807c48597a9e1265edd6cc0-8000.html
  4. Mettez le F4F, F4X et le fichier F4M dans le répertoire vod sous httpdocs
  5. Obtenez le « OSMF Sample Player HTTP streaming dynamique » de http: //www.osmf. org / téléchargements / OSFMPlayer_zeri2.zip
  6. Mettez le Sample Player dans le répertoire httpdocs
  7. Chargez le fichier HTML à partir du Sample Player dans un navigateur, par exemple http: //localhost/OSMFPlayer.html
  8. Appuyez sur le bouton d'éjection et de mettre dans l'URL de votre fichier F4M, il devrait jouer

Donc, pour répondre à la question initiale fichier d'Adobe Packager est le séparateur de fichier à utiliser, vous n'avez pas besoin d'acheter FMS pour l'utiliser et il fonctionne pour les fichiers FLV et MP4 / F4V.

Autres conseils

Vous n'avez pas besoin d'utiliser leur serveur. Wowza prend en charge la version d'Adobe HTTP streaming et vous pouvez l'implémenter en segmentant les vidéos correctement et le chargement de tous les segments sur un serveur HTTP standard.

Liens vers toutes les spécifications de HTTP d'Adobe en streaming sont ici:

http://help.adobe.com/ en_US / HTTPStreaming / 1.0 / Utilisation / WS9463dbe8dbe45c4c-1ae425bf126054c4d3f-7fff.html

Essayer de pirater le client à faire un style personnalisé http le streaming sera beaucoup plus gênant.

Notez que Streaming HTTP ne prend pas en charge le streaming de plusieurs vidéos différentes, mais les flux d'un seul fichier qui a été brisée en segments séparés.

  

Fichier Packager

     

Un outil de ligne de commande qui se traduit par des fichiers multimédias sur la demande en fragments et écrit les fragments de fichiers F4F. Le fichier Packager est un outil hors ligne. Vous pouvez utiliser le fichier Packager pour Chiffrer les fichiers pour une utilisation avec Flash Access. Pour plus d'informations, consultez l'emballage des médias sur demande.

     

Le fichier Packager est disponible à partir adobe.com et est installé avec Adobe® Flash® Media Server à l'RépInstallation / tools / dossier f4fpackager.

Packager lien de téléchargement est ici: Télécharger le fichier Packager pour HTTP streaming dynamique

http://www.adobe.com/products/httpdynamicstreaming/

Vous pouvez utiliser F4Pack , il est une interface graphique autour de la ligne de commande outil d'Adobe, qui vous permet de traiter votre fichier flv / f4V afin qu'ils puissent être utilisés pour HTTP streaming dynamique.

L'endroit dans le code OSMF où cela se produit est la machine d'état tiré temporisateur à l'intérieur de la mise en œuvre de la classe HTTPNetStream ... peut-être une lecture instructive. Je pense que je mets même quelques commentaires utiles dans là quand je l'ai écrit.

En ce qui concerne la question générale:

Si vous lisez un fichier FLV entier dans un ByteArray et passez à appendBytes, il va jouer. Si vous cassez le fichier FLV en deux et passez la première moitié comme un tableau d'octets, puis la seconde moitié comme un tableau d'octets, qui jouer.

Si vous voulez être en mesure de basculer autour d'entre bitrates sans écart, vous devez diviser vos fichiers FLV à faire correspondre les points d'images clés ... et rappelez-vous que seul le premier appel à appendBytes a l'en-tête de fichier FLV initial ( » F », 'l', 'V', drapeaux, offset) ... le reste attendent juste une continuation de la séquence d'octets FLV.

J'ai récemment trouvé un projet similaire pour Node.js pour atteindre m3u8 transcoder (https://github.com/andrewschaaf/media-server) mais doivent encore entendre parler d'un en plus Wowza faire en dehors du module d'origine pour Apache. Étant donné que les charges utiles sont presque identiques, vous êtes mieux à la recherche d'une solution de bonne mp4 segmentant (de beaucoup là-bas) que la recherche de f4m segmentant. Le problème est particulièrement atomes sur Moov vidéo plus mp4 sont difficiles à gérer et à mettre à leur bon emplacement initial (près de début de fichier). Même en utilisant optimale ffmpeg paramètres et « qtfaststart » vous vous retrouvez avec la recherche nettement plus lente, l'utilisation inefficace de la bande passante (généralement gourmand), et quelques maux de tête mineurs liés à un lavage / temps que vous ne recevez pas flv / F4V lecture.

Dans mon lecteur, j'ai ou l'intention de basculer entre HTTP streaming dynamique (HDS) et MP4 en fonction de la charge et vous connecter en temps réel l'analyse syntaxique Apache en utilisant awk / Cron au lieu de licence de produit Access d'Adobe pour la protection des cours d'eau .. ont tous deux uniques « onMetaData » gestionnaires .. mais à la fin je reçois hash temps / octet séquencés pratiquement équivalent. Juste MP4 est plus lent. Alors mod_origin est juste un routeur synchroniseur / demande pour les clients Flash (sur http). Je cherche toujours des moyens pour accélérer la lecture en fonction mp4-conteneur. Une solution incroyable j'ai lu récemment et ce fut plutôt émerveillé par elle http: // zehfernando .com / 2011 / flash-vidéo-frame-temps maux / où un éditeur vidéo (type) et développeur flash est venu avec leur propre solution mp4 timecoding littéralement ajouté (via le script Adobe Premiere) environ 50 pixels le fond de chaque image vidéo avec un timbre visuel « binaire » comme un code-barres de cadre .. et ces valeurs binaires en valeurs de traduire timecode de haute précision. Donc, Flash ne peut analyser les images vidéo comme ils ont été peints (temps réel) et déterminer avec précision où le joueur était et ce que les octets ont besoin de tout type de serveur Web convivial segmentant octets mp4. La chose est (et peut-être que je me trompe) semble flash de choisir arbitrairement quand il arrive à MOOV données, en particulier sur de gros fichiers vidéo (.5-1.5gigs). Même si vous assurez-vous de lancer votre mp4 par MP4Box (à savoir MP4Box -frag 10000 -inter 0 movie.mp4) Je suppose que cela a été un problème OSMF et ont travaillé sur HDS bien maintenant, mais il est ennuyeux que vous avez besoin d'Apache et un module propriétaire source fermée pour l'utiliser imo. Son probablement juste une question de temps avant que les implémentations open source arrivent HDS est seulement 1-2 ans, et il a juste besoin d'un peu d'ingénierie inverse comme ce type Andrew Chaaf avec Node.js + mpegts en continu (en direct ou non). En fin de compte, je peux finir à l'aide OSMF exclusivement sous mon interface comme il semble avoir des vertus similaires à HDS sinon plus à savoir Strobe si vous avez besoin HDS extensible malades ou plate-forme MP4 lecteur ouvert à pirater de se rendre compte de votre propre lecteur personnalisé.

format de F4F d'Adobe est basée sur les fichiers MP4, êtes-vous capable d'utiliser F4V ou MP4 au lieu des fichiers FLV? Il y a beaucoup de séparateurs de fichiers MP4 autour, mais vous devez vous assurer que les horodateurs dans les fichiers sont continus, peut-être la pause arrive quand il voit un horodatage à zéro dans le flux audio ou vidéo dans le fichier.

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