Frage

Wie von Flash 10.1, haben sie die Möglichkeit hinzugefügt, Bytes in das NetStream-Objekt über die appendBytes Methode hinzufügen (hier beschrieben http://www.bytearray.org/?p=1689 ). Der Hauptgrund für diesen Zusatz ist, dass Adobe schließlich HTTP unterstützt Streaming von Video. Das ist großartig, aber es scheint, dass Sie den Adobe Media Streaming Server ( http verwenden müssen: // www .adobe.com / products / httpdynamicstreaming / ) die richtigen Videostücke aus Ihrem bestehenden Video erstellen für einen reibungslosen Streaming zu ermöglichen.

Ich habe versucht, eine gehackte Version von HTTP-Streaming in der Vergangenheit zu tun, wo ich die NetStream-Objekte auslagern (ähnlich hier http://video.leizhu.com/video.html ), aber es gibt immer eine kurze Pause zwischen den Stücken. Mit dem neuen appendBytes, habe ich versucht, mit den beiden Abschnitten des Videos von der vorhergehenden Seite einer schnelle Mock zu tun, aber auch dann, überspringen die noch bleibt.

Wer weiß, wie die beide aufeinander folgenden .FLV Dateien benötigt, um für die appendBytes Methode auf dem NetStream-Objekt formatiert werden, um ein schönes glattes Video ohne einen spürbaren Sprung zwischen den Segmenten zu erstellen?

War es hilfreich?

Lösung

Ich konnte diese Arbeit bekommen mit Adobes Datei Packager Tool, Samuel beschrieben. Ich habe nicht das Objekt NetStream verwenden, aber ich verwenden, um den OSMF Sample Player, die ich verwenden diese intern übernehmen. Hier ist, wie mit ohne FMS zu tun:

  1. Get Adobe Datei-Packager für Http Dynamic Streaming von http://www.adobe.com/products/ httpdynamicstreaming /
  2. Führen Sie die Datei Packager auf einem vorhandenen MP4-Datei mit H.264 / AAC wie folgt aus: C: \ Programme \ Adobe \ Flash Media Server 4 \ tools \ f4fpackager> f4fpackager.exe --input-file = "MyFile.mp4" --segment-Dauer = 30

Dies wird in 30 Sekunden langen F4F-Dateien zur Folge hat, auch F4X und F4M-Datei. Die F4F-Dateien sind Ihre korrekt segmentiert (und fragmentiert) MP4-Dateien, die spielen. Wenn Sie dies mit dem OSMF-Player auch die folgenden testen mögen tun:

  1. Get Apache Server
  2. Get Adobe Http Origin-Modul für Apache von http://www.adobe.com/products/httpdynamicstreaming /
  3. Installieren Sie das Modul nach http: //help.adobe .com / en_US / HTTPStreaming / 1.0 / Verwenden / WS8d6ed60bd880807c48597a9e1265edd6cc0-8000.html
  4. Legen Sie die F4F, F4X und F4M-Datei in das Verzeichnis vod unter httpdocs-
  5. Holen Sie sich das „OSMF Sample-Player für HTTP Dynamic Streaming“ von http: //www.osmf. org / downloads / OSFMPlayer_zeri2.zip
  6. Setzen Sie den Sample-Player im Verzeichnis httpdocs
  7. Laden Sie die HTML-Datei aus dem Sample-Player in einem Browser zB http: //localhost/OSMFPlayer.html
  8. Drücken Sie die Auswurftaste und legte in der URL Ihrer F4M-Datei, sollte es
  9. spielen

So die ursprüngliche Frage Adobes Datei Packager ist der Datei-Splitter zur Nutzung zu beantworten, brauchen Sie nicht FMS zu kaufen, es zu benutzen und es funktioniert für FLV und MP4 / F4V-Dateien.

Andere Tipps

Sie müssen nicht ihre Server verwenden. Wowza unterstützt Adobe-Version von HTTP-Streaming und Sie können es selbst implementieren, indem Sie die Videos richtig segmentieren und auf einem Standard-HTTP-Server alle Segmente geladen werden.

Links zu allen Spezifikationen für Adobes HTTP Streaming sind hier:

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

Der Versuch, den Client zu hacken einig benutzerdefinierten Stil zu tun http-Streaming wird viel mehr lästig sein.

Beachten Sie, dass Streaming HTTP nicht mehr verschiedenen Streaming-Videos unterstützen, sondern Ströme eine einzelne Datei, die gebrochen wurde in einzelne Segmente aus.

Datei Packager

Ein Kommandozeilen-Tool, die On-Demand-Mediendateien in Fragmente und schreibt die Fragmente zu F4F Dateien übersetzt. Die Datei Packager ist ein Offline-Tool. Sie können die Datei Packager zu verschlüsseln Dateien für die Verwendung mit Flash Access verwenden. Weitere Informationen finden Sie On-Demand-Medien Verpackung.

Die Datei Packager ist von adobe.com zur Verfügung und ist mit Adobe® Flash® Media Server zum RootInstall / tools / f4fpackager Ordner installiert.

Packager Download-Link ist auf der rechten Seite hier: Datei herunterladen Packager for HTTP Dynamic Streaming

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

könnten Sie verwenden F4Pack , es ist eine GUI um das Kommandozeilen-Tool von Adobe, das können Sie verarbeiten Ihre fLV / F4V-Datei, so dass sie für HTTP Dynamic Streaming verwendet werden.

Der Platz in dem OSMF Code, wo dies geschieht, ist die Timer-fired Zustandsmaschine innerhalb der HTTPNetStream Klassenimplementierung ... könnte eine informative Lektüre sein. Ich glaube, ich auch ein paar hilfreiche Kommentare dort gestellt, als ich es geschrieben habe.

Was die allgemeine Frage:

Wenn Sie eine ganze FLV-Datei in ein ByteArray lesen und zu appendBytes passiert, wird es spielen. Wenn Sie brechen die FLV-Datei in der Hälfte, und die erste Hälfte als Byte-Array übergeben und dann die zweite Hälfte als Byte-Array, wird das auch spielen.

Wenn Sie ohne einen Spalt zwischen bitrates zu wechseln um in der Lage sein wollen, müssen Sie Ihre FLV-Dateien in passenden Keyframe Punkte aufzuspalten ... und denken Sie daran, dass nur der erste Aufruf von appendBytes die anfängliche FLV-Datei-Header hat (‘ F‘, 'L', 'V', Fahnen, Offset) ... der Rest ist nur eine Fortsetzung der FLV-Byte-Sequenz erwarten.

Vor kurzem fand ich ein ähnliches Projekt für node.js m3u8 Umcodierung (https://github.com/andrewschaaf/media-server) zu erreichen, aber noch von einem zu hören, haben neben Wowza es außerhalb der Origin-Modul für Apache zu tun. Da die Nutzlasten sind nahezu identisch sind Sie besser für eine gute mp4 Segmentierungslösung (viel da draußen) aus suchen als die Suche nach f4m Segmentierungs. Das Problem ist, moov Atome vor allem auf größerem mp4 video schwer und in dem richtigen Ausgang setzen zu verwalten (in der Nähe von Anfang der Datei) Lage. Auch mit optimalen Einstellungen ffmpeg und ‚qtfaststart‘ Sie mit deutlich langsamer zu suchen, ineffizienter Bandbreitennutzung (in der Regel gierig) enden, und ein paar kleinere Kopfschmerzen in Zusammenhang mit Scheuer- / Zeit, dass Sie nicht mit flv / f4v Wiedergabe.

In meinem Spieler, den ich haben oder beabsichtigen Schutz Schalter zwischen HTTP Dynamic Streaming (HDS) und MP4 basierend auf Last und Echtzeit-log Parsen Apache mit awk / cron statt Lizenzierung von Adobe Access-Produkt für Strom .. beide einzigartige haben ‚onMetaData‘ Handler .. aber am Ende erhalte ich sequenzierten Zeit / Byte-Hashes praktisch gleichwertig. Nur MP4 ist langsamer. So mod_origin ist nur ein Synchronizer / Request-Router für Flash-Clients (über http). Ich bin noch auf der Suche nach Möglichkeiten, mp4-Container-basierte Wiedergabe zu beschleunigen. Eine unglaubliche Lösung habe ich gelesen, das vor kurzem und war eher awestruck durch http: // zehfernando .com / 2011 / Flash-Video-Frame-Zeit-Leiden / wo kamen ein Video-Editor (Typ) und Flash-Entwickler mit ihrer eigenen mp4 timecoding Lösung, die (über Adobe Premiere-Skript) wörtlich hinzugefügt etwa 50 Pixel der Boden eines jeden Video-Frame mit einem visuellen Binärdienst Stempel wie ein Rahmen Barcode .. und diese binären Werte übersetzen in hochgenauen Timecode-Werte. So Blitz könnte die Videobilder analysiert, wie sie gemalt wurden (Realtime) und genau bestimmen, wo der Spieler war und was Bytes wurde von jeder Art von mp4-Byte-Segmentierungsfreundliche Webserver benötigt. Die Sache ist (und vielleicht bin ich hier falsch) Blitz scheint willkürlich zu wählen, wenn es erhält Daten Moov, vor allem auf große Videodateien (.5-1.5gigs). Auch wenn Sie sicher, dass Ihre mp4 durch MP4Box laufen zu machen (das heißt MP4Box -frag 10000 -Inter 0 movie.mp4) Ich denke, das ist ein Problem OSMF war und HDS auf ganz gut gearbeitet haben jetzt, wenn es ärgerlich ist, dass Sie Apache und ein proprietärer Closed-Source-Modul es imo zu verwenden. Es ist wahrscheinlich nur eine Frage der Zeit, bis Open-Source-Implementierungen als HDS ankommen ist nur 1-2 Jahre alt, und es braucht nur einen wenig Reverse Engineering, wie der Andrew Chaaf Kerl mit node.js + mpegts Streaming (live oder nicht). Am Ende kann ich am Ende nur OSMF mit unter meiner UI ausschließlich als es, wenn nicht mehr so ??heißt Strobe HDS ähnliche Tugenden zu haben scheint, wenn Sie krank erweiterbare HDS oder MP4 offen Spieler Plattform hacken müssen von Ihrem eigenen benutzerdefinierten Player zu realisieren.

Adobes F4F-Format auf MP4-Dateien basieren, sind Sie in der Lage F4V oder MP4 verwenden anstelle von FLV-Dateien? Es gibt viele MP4-Datei-Splitter ist rund, aber Sie möchten sicherstellen, dass die Zeitstempel in den Dateien vornehmen müssen kontinuierlich sind, vielleicht die Pause passiert, wenn es in der Datei einen Null-Zeitstempel in dem Audio- oder Video-Stream sieht.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top