FLV Metadata + AIR = RichFLV

Temat metatag’ów plików FLV był wałkowany z pewnością niejednokrotnie. Niektórzy na pewno pamiętają czasy pierwszych wersji FLV, kiedy trzeba było przy pomocy injector’ów MetaData typu FLVmdi, młodszego yamdi, czy szeregu innych, które pojawiały się jak grzyby po deszczu (zreszta sam swego czasu napisałem taki injector w Javie), zapisywac w plikach FLV metatagi. Chodziło między innymi o zawarcie w MetaData informacji na temat „duration” filmu, który pozwalał „przewijać”, czy chociażby stworzyć ładny pasek postępu odtwarzania filmu. Wraz z upowszechnieniem się formatu FLV, wypuszczeniu nowych Video Encoderów, sprawa MetaData była pokrywana automatycznie, stad injectory przestały być tak bardzo pomocne, jak wcześniej.
Niemniej jednak biorąc pod uwagę pojawienie się AIR’a oraz wzmożoną dyskusję na temat dostępności plików FLV temat powrócił, z pytaniem, czy można osadzać informację o cuePoint’ach (eventach, parametrach) bezpośrednio w strumieniu FLV. Zrozumiała sprawa chcemy “zaszyć” w FLV tzw. captiony, czyli napisy, które będą pojawiały się w trakcie odtwarzania strumienia FLV. Jak w większości przypadków z pomocą przychodzi specyfikacja FLV (szersza na Adobe) oraz niezawodny ByteArray, który pozwala manipulować danymi zawartymi w handlerach onMetaData oraz onCuePoint. Z pomocą AIR’a możemy w dosyć prosty sposób napisać choćby edytor cuePointów, który pozwala nie tylko na odczyt danych meta, ale i ich zapis w pliku FLV. Zamieszczam przerobioną wersję z AS2.0 (dzięki Shinder), programiku w AIR readMetaFLV pozwalającego odczytać kompletne dane meta z plików FLV (patrz specyfikacja).
Dosyć łatwo można rozbudować go do edytora cuePointów, czy innych danych w plikach FLV. Tropem tym poszedł Benjamin, który stworzył pokaźny kawał aplikacji stand-alone w AIR – RichFLV, pokazując tym samym, że AIR nadaje się nie tylko do aplikacji stricte desktopowych często łączących się z Internetem, ale i stand-alone. Za pomocą jego aplikacji można nie tylko edytować cuePointy, ale i łączyć strumienie FLV, eksportować do innych formatów. Niesamowite jest to, że chłopak szuka pracy w Berlinie, tym bardziej warto zaprezentować tu jego aplikację.
Tagi: AIR,Flex,Przykłady


FLEX
AIR
PLUGIN'y FLASH
RSS dla każdego








3 komentarzy
Rafał
Ciekawa strona i pomysł. Tak się fajnie składa, że wczorajszy dzień razem z kumplem ( pozdrowienia dla Damiana : ) ) studiowaliśmy specyfikację FLV oraz przykładowy plik – szukając info w sieci trafiliśmy właśnie na tę witrynę. Nie interesują nas jednak metadane – postawiliśmy sobie troszkę inny cel a mianowicie – chcemy przy pomocy ByteArray wczytać jak najmniejszą ilość danych potrzebną do wyciągnięcia ze strumienia informacji o pierwszym ujęciu filmu. Zajęliśmy się tym dla samej zabawy i sprawdzeniu “czy się uda” – jeśli tak, można wykorzystać ten mechanizm do pokazywania zaślepki dla danego filmu. Początkowy parser już praktycznie mamy, podział na FLVTagi i rozpoznawanie ich typów. Niestety, videoData, gdzie przechowywane są informacje o video, różni się troszkę w zależności od użytego kodeka ( H.243, On2 ). Jeśli coś się uda – damy znać :)
11 mar 2008
Paweł Cichoń
Muszę przyznać, że problem, o którym piszesz (wczytywania pierwszej klatki) za zwyczaj rozwiązywałem chyba jak większość, “przeliczając” klatki na sekundę, ustawiając odpowiedni (minimalny) bufferTime w NetStream, który jeżeli za pierwszym razem był pełny, zamykał NetStream – choć faktycznie nie zawsze gwarantuje to wczytanie możliwie najmniejszej porcji danych. Ale żeby szukać innego rozwiązania, trochę zabrakło mi chęci ;) tym bardziej, że jest trochę wariantów do rozpatrzenia w metodzie, o której wspominasz … ale kto jak kto, ale Sema da z pewnością radę ;)
11 mar 2008
Rafał
Nie wiem kiedy będę mógł wrócić do tego – właśnie zbiera mi się sporo pracy :(. Może Damian coś wcześniej znajdzie – jak pisałem, damy znać od razu :)
11 mar 2008
Skomentuj “FLV Metadata + AIR = RichFLV”