|
|
|||||
Регистрация: May 2010
Сообщений: 59
|
ffmpeg, flvtool2 и actionscript 3
Здравствуйте,
сорри если не в тот раздел, тут вот какая незадача, на сервере хочу сделать онлайн видео собственно конвертирую видео из wmv в flv вот такой коммандой далее заношу мета данные далее сам код actionscript package { import flash.display.MovieClip; import flash.events.*; import flash.media.Video; import flash.net.NetConnection; import flash.net.NetStream; public class Player extends MovieClip { private var nc:NetConnection; private var ns:NetStream; private var video:Video; public function Player() { video = new Video(); addChild(video); nc = new NetConnection(); nc.connect(null); ns = new NetStream(nc); ns.client = {}; ns.client.onMetaData = ns_onMetaData; ns.client.onCuePoint = ns_onCuePoint; ns.play("http://site.ru/out.flv"); video.attachNetStream(ns); function ns_onMetaData(item:Object):void { trace("metaData"); // Resize video instance. video.width = item.width; video.height = item.height; // Center video instance on Stage. video.x = (stage.stageWidth - video.width) / 2; video.y = (stage.stageHeight - video.height) / 2; } function ns_onCuePoint(item:Object):void { trace("cuePoint"); trace(item.name + "\t" + item.time); } } } } то все ок собственно вопросы, как правильно внести метаданные? надеюсь за помощь тех людей, кто на практике работал(ет) в онлайн видео спасибо. P.S. нужно все это для потокового воспроизвидения видео, с возможностью прокрутки не дожидаясь полной загрузки видео. Добавлено через 2 минуты забыл добавить, после комманды выдается статистика собственно как видно, тут hasCuePoints: false вот в этом месте проблема, но как я не пытался изменить параметры, все равно false... Добавлено через 9 минут накопал шелл скрипт, может кому пригодится #!/bin/bash # # /usr/local/bin/cuepoints # # Generate an XML file used by FLVTool2 to add cuepoints to a flash file # The XML file adds a cuepoint every ten seconds, to line up with timestamps # # Syntax: cuepoints [<seconds>] [<filename>] # cuepoints 1800 cuepoints-1800.xml # cuepoints 7200 # cuepoints # # Options for start time and interval could be added # # ----------------------------------------------------------------------------- # Add a help screen if [ "$1" = "-h" -o "$1" = "--help" -o "$1" = "help" ] then echo -e "\ncuepoints [<seconds>] [<filename>]" echo -e "\tThe cuepoints script creates an XML file used by FLVTool2 to add cuepoints to a flash file" echo -e "\nSyntax:" echo -e "\tcuepoints \t\t(defaults to 3600 seconds, or one hour, written to cuepoints.xml)" echo -e "\tcuepoints 1800 \t\t(create cuepoints for a half-hour file)" echo -e "\tcuepoints 1800 cuepoints-1800.xml\t(specify a filename)\n" exit fi echo -e "\nCreating cuepoints.xml, used by FLVTool2 to add cuepoints to a flash file \ (see \"cuepoints help\" for syntax and options)\n" # Check for length if [ "$1" = "" ] then LENGTH="3600" else LENGTH="$1" fi # Check for filename if [ "$2" = "" ] then FIL="cuepoints.xml" else FIL="$2" fi # Write the header echo "<?xml version=\"1.0\"?>" > $FIL echo "<tags>" >> $FIL echo " <!-- navigation cue points -->" >> $FIL # Write the body for N in $(seq 0 10 $LENGTH) do NAME="$( echo $(date -d "+$N seconds"\ 00:00:00 +%H:%M:%S) )" echo " <metatag event=\"onCuePoint\">" >> $FIL echo " <name>"$NAME"</name>" >> $FIL echo " <timestamp>"$N"000</timestamp>" >> $FIL echo " <type>navigation</type>" >> $FIL echo " </metatag>" >> $FIL done # Write the footer echo "</tags>" >> $FIL echo -e "An XML file specifying $LENGTH timestamps has been written to $FIL\n" echo -e "To create a flash file with these cuepoints, use \"flvtool2 -AUPt cuepoints.xml input.flv output.flv\"\n" Добавлено через 14 минут мде... чет все равно по точкам прыгать не получается я по выше указанному скрипту создал xml файлик собственно после этого код отлично работает в плане, выводит инфу: metaData cuePoint 00:00:00 0 metaData cuePoint 00:00:10 10 cuePoint 00:00:20 20 cuePoint 00:00:30 30 выдает ошибку Error #2044: Необработанный NetStatusEvent:. level=error, code=NetStream.Seek.InvalidTime at Player() cuePoint 00:00:00 0 metaData Добавлено через 17 минут забыл добавить, на сервере стоит бекэндом nginx собранный с --with-http_flv_module на нужный домен в конфиге nginx прописан flv |
|
|||||
CuePoints не при чём для такой навигации. Вам нужно посмотреть в сторону KeyFrames (должны лежать в MetaData, если конечно энкодер их туда положил). У них есть время и byte offset. При перемотке определяется, скачан ли нужный ключевой кадр, если до то перематывается на его время, иначе грузишь play(file.flv?параметрОткудаНачинать=время). Это всё http pseudo streaming.
и вот так полагаться нельзя, вдруг там нет размеров |
|
|||||
Регистрация: May 2010
Сообщений: 59
|
2fljot поподробней бы, где пример по конвертации посмотреть =) (строку параметров правильную)
насчет item.width, я конвертирую ролики сам, поэтому там размеры есть 100% но в целом согласен с Вами (брал из примера adobe) |
|
|||||
Я полагаю http://tinyurl.com/2bx248m
|
|
|||||
Регистрация: May 2010
Сообщений: 59
|
ну я бы не спрашивал, если бы не погуглил :-)
я уже все перерыл... поэтому и написал, именно кто на практике с этим сталкивался помочь.... Добавлено через 2 минуты для инфы: -sameq размер выходного flv будет в 4-5 раз больше исходника -g 1 качество будет ниже плинтуса :-) более того, это все равно не помогает для перемотки (она просто не работает) тут как-то иначе надо делать неужели никто не занимался видео онлайн и главное, смог сделать это грамотно? или жалко поделиться опытом для будущего поколения? :-) дык можно тогда и за деньги... Последний раз редактировалось DenverZ; 06.10.2010 в 13:55. |
Часовой пояс GMT +4, время: 08:17. |
|
« Предыдущая тема | Следующая тема » |
|
|