|
|
« Предыдущая тема | Следующая тема » |
Опции темы | Опции просмотра |
|
|
|||||
Регистрация: Nov 2012
Сообщений: 4
|
Проблема с перемоткой видео и переходами к ключевым кадрам / cuePoint'ам
Доброго времени суток!
Уже который час бьюсь с проблемой, не могу решить, решил наконец посоветоваться с гуру. Есть самописный видео плеер, нужно сделать так, чтобы можно было перематывать видео на "незабуферизованную" часть. Как я понял, перемотать видео к конкретной секунде можно только если видео стримится по rtmp://, либо если мы используем FLVPlayback (что не есть правда, или я совсем криворукий (оба варианта звучат не радужно) ) Собственно мой пост содержит 2 вопроса (выделил их подчеркиванием) Так вот. Что я пытаюсь сделать: * из исходного видео получить flv * заполнить его cuePoints * организовать навигацию по ним с помощью FLVPlayback или NETStream "Фашизм" с точки зрения размера файла, но "вещание" уж очень не хочется организовывать. Набросал простой батник: ffmpeg -i s_input.mp4 -ar 22050 -b:a 32k -b:v 700k -f flv -s 320x240 -r 25 -y i_ffmpeg.flv copy i_ffmpeg.flv i_flvtool2.flv flvtool2 -AUtP i_flvtool2.xml i_flvtool2.flv <tags> <metatag event="onCuePoint" overwrite="true"> <name>Cue Point 1</name> <timestamp>22000</timestamp> <parameters> <textinfo>This is some text 1</textinfo> <thumb></thumb> </parameters> <type>navigation</type> </metatag> <metatag event="onCuePoint" overwrite="true"> <name>Cue Point 2</name> <timestamp>44000</timestamp> <parameters> <textinfo>This is some text 2</textinfo> <thumb></thumb> </parameters> <type>navigation</type> </metatag> </tags> Metadata: audiosize -> 3001709 duration -> 673.12 audiosamplesize -> 16 lasttimestamp -> 673.08 datasize -> 61806104 videosize -> 58777869 videocodecid -> 2 metadatadate -> Thu Jan 24 16:59:42 GMT+0400 2013 metadatacreator -> inlet media FLVTool2 v1.0.6 - "http://www.inlet-media.de/flvtool2" target="_blank">http://www.inlet-media.de/flvtool2 audiosamplerate -> 22000 framerate -> 25 lastkeyframetimestamp -> 672.68 canSeekToEnd -> false hasAudio -> true filesize -> 61976517 stereo -> true cuePoints -> , hasMetadata -> true hasVideo -> true width -> 320 audiodatarate -> 32.308325904795865 keyframes -> [object Object] height -> 240 audiocodecid -> 2 videodatarate -> 696.413632851964 hasCuePoints -> true audiodelay -> 0 hasKeyframes -> true CuePoints: "Cue Point 1" 22 "Cue Point 2" 44 Keyframes : 0 1 2 ... 1401 1402 Но, например Вместо того, чтобы бросить к ближайшему ключевому кадру, выдаст: [NetStatusEvent type="netStatus" bubbles=false cancelable=false eventPhase=2 info=[object Object]] level -> error code -> NetStream.Seek.InvalidTime details -> 8.64 Если же использовать FLVPlayback, то он ведет себя как-то странно. var cuePount = _flvPlayback.findCuePoint("Cue Point 2"); _flvPlayback.seekToNavCuePoint(cuePount.name); Из за чего может быть такое поведение? Буду благодарен за советы! |
|
|||||
Регистрация: Jan 2009
Сообщений: 1,651
|
Перемотать видео к куску, который еще не закачан на клиента, можно только если есть сервер, который по запросу "отдай-ка мне видео с секунды N", выдаст файл с этой секунды. Без сервера сколько бы ты ключевых точек в видео не наставил, ничего тебе не поможет. Ключевые точки только облегчают поиск конкретного тайминга и перемотку к нему.
Стримить с перемоткой умеет Flash Media server, wowza, red5. Теперь еще nginx это умеет, я слышал. Есть еще понятие "pseudostreaming", когда с помощью пхп или модуля веб-сервера организуется система, когда при перемотке, сервер не использует rtmp, а просто на POST/GET запрос клиента "пришли мне с секунды N" отдает новый flv/mp4 файл, который создается из оригинального видео, но с конкретной секунды + стандартного заголовка flv/mp4. Так умеет, например, lighthttpd + flowplayer. Ну, а дальше гуглите себе решение. Куча постов в блогах и на хабре на ключевые слова red5, nginx video streaming, wowza, pseudo streaming flowplayer и т.д. При чем здесь компонент FLVPlayback к перемотке видео, я так и не понял.
__________________
мой пустой блог |
|
|||||
Регистрация: Nov 2012
Сообщений: 4
|
ок, спасибо.
Добавлено через 2 минуты Ввела в заблуждение фраза из документации: Во-первых, при последовательной загрузке можно перейти только к ключевому кадру, поэтому переход происходит к первому ближайшему ключевому кадру к заданному времени. При использовании потокового воспроизведения переход осуществляется точно в указанное время, даже если исходный FLV-файл не имеет ключевых кадров. |
Часовой пояс GMT +4, время: 03:31. |
|
« Предыдущая тема | Следующая тема » |
|
|