![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Здравствуйте.
Делаю видео плеер. За основу беру уроки с сайта gotoAndLearn.com. Есть небольшая проблема которую я пока не знаю как решить. Когда начинаешь перематывать видео ползунком то при его отпускании он немного смещается, а иногда даже сильно. Это можно видеть когда просто перетаскиваешь его по линие, а также это сильно видно когда его дотягиваешь до конца (и немного дальше протянуть, он останется у конца полосы а сама мышь уйдёт правее) - он не остаётся на необходимом месте, а двигается левее (иногда даже значительно левее). Это можно глянуть по ссылке http://webtok.ru/Art/vid/ Надеюсь проблема ясна, если кто-нибудь знает прошу подсказать решение. За ранее спасибо! Прилагаю исходник и код Stage.scaleMode = 'noScale'; setProperty('', _quality, 'BETS'); // var playControl:Boolean = true; var controll = player.controllPanel;// путь к панеле упревления видео потока // controll.loadStripe.loadBar.setMask(controll.loadStripe.masker);// маска для полосы загрузки var pl:NetConnection = new NetConnection(); pl.connect(null); var ns:NetStream = new NetStream(pl); player.videoStream.vid.attachVideo(ns); ns.play('vid10.flv'); //ns.play('http://webtok.ru/Art/vid/vid10.flv'); ns.pause(playControl); // загрузчик var loaderInterval = setInterval(loadStatus, 100); var persentLoaded:Number; var duration:Number; ns.onMetaData = function(obj) { duration = obj.duration; }; function loadStatus() { persentLoaded = ns.bytesLoaded / ns.bytesTotal; controll.loadStripe.masker._width = persentLoaded * 313; controll.loadStripe.drager._x = ns.time / duration * 313; //controll.loadStripe.drager._x = ns.time / duration * 298 + 7; controll.loadStripe.timeLine._x = controll.loadStripe.drager._x - 313; } // Полоса прокрутки var dragerInterval; player.controllPanel.loadStripe.drager.onPress = function() { clearInterval(loaderInterval); dragerInterval = setInterval(dragit, 10); startDrag(this, false, 0, this._y, 313, this._y); //startDrag(this, false, 7, this._y, 305, this._y); }; player.controllPanel.loadStripe.drager.onRelease = player.controllPanel.loadStripe.drager.onReleaseOutside = function () { clearInterval(dragerInterval); loaderInterval = setInterval(loadStatus, 100); this.stopDrag(); }; function dragit() { ns.seek((player.controllPanel.loadStripe.drager._x / 313) * duration); } // Кнопки //Play controll.pl_but.onRelease = function() { if (playControl) { this.gotoAndStop(2); playControl = false; ns.pause(playControl); } else { this.gotoAndStop(1); playControl = true; ns.pause(playControl); } }; Последний раз редактировалось Art_133; 19.01.2009 в 17:09. |
|
|||||
|
Регистрация: Aug 2008
Адрес: moscow
Сообщений: 137
|
хм. все нормально. ползунок двигается как надо. а сильно смещается в левую сторону, когда дотягиваешь до конца в том случае, если видео до конца не загружено (т.е. смещается до загруженного фрагмента). что-то проблемы я не вижу или я не понимаю вопроса
|
|
|||||
|
"а сильно смещается в левую сторону, когда дотягиваешь до конца в том случае, если видео до конца не загружено" когда полностью загружено тоже такое происходит.
Что бы точнее понять проблему нажмите пожалуйста паузу и по перетаскиваете ползунок. При отпускании его он не станет точно на то же место, а сместиться. Иногда совсем на немного иногда сильно. |
|
|||||
|
Регистрация: Aug 2008
Адрес: moscow
Сообщений: 137
|
насколько я поняла у вас проблема в том, что в функции loadStatus() вы перезадаете величину controll.loadStripe.drager._x
а там должна считаться величина ns.time вместо строчки пропишите в функции loadStatus() |
|
|||||
|
Я так понимаю что проблема из-за не соответствия вычислений
Этого и Когда отпускаешь ползунок (запускается функция loadStatus() в которой прописано Цифры координат не совпадают и происходит смещение. Ваш совет работает, но только ползунок теперь не двигается... Добавлено через 15 часов 59 минут Не ужели никто не сталкивался с подобным? Может у Вас есть другой метод реализации подобной функции с перемоткой? |
|
|||||
|
Регистрация: Nov 2008
Сообщений: 528
|
Сейчас тоже поставил себе задачу поработать с видео. Пока ничего не делал - собираю материал
, так что вполне могу сказать "не в тему", но... разве видео может проигрываться с любого кадра? Я думаю, что видео может начинаться только с определённых кадров. По-моему, на многих флешплеерах ползунок и видео играются несколько левее, чем то, что хочешь указать. |
|
|||||
|
Верно Stargazer, все зависит от колличества ключевых кадров. Если вы сконвертируете видео с 2-умя ключевыми кадрами то как бы вы не старались, видео перематываться будет, только на 2 этих ключевых кадра.
__________________
Убейте меня! |
|
|||||
|
Сегодня весь день сидел так и не нашел решения пока... Заметил что аналогичный глюк встречается часто в некоторых плеерах, а также в плеере на сайте Adobe (если найду дам ссылку позже).
Может кто глянет "свежим" взглядом и подскажет как решить проблему? Добавлено через 3 минуты Смещение ползунка при отпускание - чёрт с ним пусть будет. Но если резко протянуть бегунок к концу видео то ползунок вёрнётся на несколько пикселей левее и видео застопорится... |
|
|||||
|
Регистрация: May 2009
Сообщений: 6
|
Если известны: общее количество байт, кол-во загруженных байт и общее время воспроизведения, можно решить задачу по формуле:
ЗАГРУЖЕННЫЕ БАЙТЫ / (ОБЩЕЕ КОЛ-ВО БАЙТ / ОБЩЕЕ КОЛ-ВО СЕКУНД) отталкиваясь от полученного общедоступного количества секунд, можно правильно организовать seek в этом диапазоне |
|
|||||
|
попробуй вот так:
|
![]() |
![]() |
Часовой пояс GMT +4, время: 19:45. |
|
|
« Предыдущая тема | Следующая тема » |
|
|