|
|
« Предыдущая тема | Следующая тема » |
Опции темы | Опции просмотра |
|
|
|||||
Регистрация: Nov 2008
Сообщений: 205
|
Прокрутка для локального flv - файла
Здравствуйте господа. У меня есть файл лежащий на диске. Я читаю из него байты и добавляю в нетстрим. Так вот, как мне сделать seek?
Если seek делается стриму с сервера все в порядке и работает, но в случае локального файла проигрывание останавливается. Что бы это такое значило и как бороться? |
|
|||||
Регистрация: Nov 2008
Сообщений: 205
|
package { import fl.controls.Button; import flash.display.Sprite; import flash.events.Event; import flash.events.MouseEvent; import flash.events.ProgressEvent; import flash.media.Video; import flash.net.NetConnection; import flash.net.NetStream; import flash.filesystem.File; import flash.filesystem.FileStream; import flash.filesystem.FileMode; import flash.utils.ByteArray; public class TestSeek extends Sprite { private var _video:Video var netStream:NetStream var connection:NetConnection public function TestSeek() { this.addEventListener(Event.ENTER_FRAME, firstEnterframeHandler); } public function firstEnterframeHandler(e:Event):void { this.removeEventListener(Event.ENTER_FRAME, firstEnterframeHandler); (this["seekLeft"] as Button).addEventListener(MouseEvent.MOUSE_UP, seekLeftHandler); (this["seekRight"] as Button).addEventListener(MouseEvent.MOUSE_UP, seekRightHandler); _video = new Video(); connection = new NetConnection(); connection.client = this; connection.connect(null); netStream = new NetStream(connection); netStream.client = this; netStream.play(null); var file:File = new File("c:/bikes.flv"); var f:FileStream = new FileStream(); f.addEventListener(ProgressEvent.PROGRESS, progressEventHandler); f.openAsync(file, FileMode.READ); _video.attachNetStream(netStream); this.addChild(_video); } public function onMetaData (info:Object):void { } public function onXMPData (info:Object):void { } private function progressEventHandler(e:ProgressEvent):void { var byteArray:ByteArray = new ByteArray(); (e.target as FileStream).readBytes(byteArray); netStream.appendBytes(byteArray); } private function seekRightHandler(e:MouseEvent):void { netStream.seek(netStream.time-3) } private function seekLeftHandler(e:MouseEvent):void { netStream.seek(netStream.time+3) } } } |
|
|||||
Кто то разобрался с проблемой?
|
|
|||||
__________________
Gamedev != Gaming (http://twitter.com/#!/GenzoDev). Don't forget to [+] if it works. |
|
|||||
Genzo, боюсь это не поможет!
Я сам давно бьюсь над этой проблемой, ...и в итоге получаю NetStatusEvent вида: и видео воспроизведение - замирает! ...на мой взгляд (теоретически) практика seeking`а буфера такова: нужно на низком уровне высчитывать в загруженном буфере (byteArray) начало байт по seekPoint позиции и скармливать эти байты опять в appendBytes. Получается что то вроде: Поправьте меня пожалуйста если я не прав. Последний раз редактировалось ERrorMAKros; 23.05.2012 в 00:48. |
Часовой пояс GMT +4, время: 13:03. |
|
« Предыдущая тема | Следующая тема » |
|
|