Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   Не могу заставить стримиться внешний аудиофайл (http://www.flasher.ru/forum/showthread.php?t=122885)

LanVision 20.03.2009 14:14

Не могу заставить стримиться внешний аудиофайл
 
Хело.

Вот код:

Код AS1/AS2:

var sound = new Sound();
sound.onLoad = function(success)
{
    if(success)
    {
        trace("Yup, loded");
        sound.start();
    }
    else trace("Sumtin went rong");
}
sound.loadSound("after_all.mp3", true);

По идее, должен начать стримиться и играть файл after_all.mp3, который находится рядом с исполняемым swf. Но не играет. Трейс выдает "Yup, loded", но звука то нет. Если заменить ("after_all.mp3", true); на ("after_all.mp3", false);, то файл загружается и играет, то есть путь к файлу нормальный, файл тоже нормальный, колонки включены (:quiet: ). Но мне то надо, чтобы он стримился... Не понимаю...

Спасибо!

dimarik 20.03.2009 17:00

Может, не хватает sound.start()?

LanVision 20.03.2009 17:50

а вот же он, прямо после trace("Yup, loded");. Должен срабатывать в том момент, когда будет скачано достаточно байт песни, чтобы запустить mp3 декомпрессор.
Код AS1/AS2:

    if(success)
    {
        trace("Yup, loded");
        sound.start();
    }


dimarik 20.03.2009 18:04

Цитата:

onLoad (Sound.onLoad handler)
onLoad = function(success:Boolean) {}

Invoked automatically when a sound loads.
А если так? =)
Код AS1/AS2:

sound.loadSound("after_all.mp3", true);
sound.start();

P.S. А трейс срабатывает после загрузки "достаточного байт песни"?

LanVision 20.03.2009 21:56

1) Не помогает. Как я понимаю, в вашем варианте, скрипт пытается воспроизвести файл сразу после начала загрузки, а это всего доля секунды (особенно, при 50 кадрах в секунду).
2) Да, трейс срабатывает, как ни странно.

Добавлено через 2 минуты
Всё, дошло, сам я дурак. Засунул это всё дело в onEnterFrame(); зачем-то. Сорри, недоглядел.

djyamato 08.04.2009 19:02

так при стримовом звуке начинается же проигрывание даже без start
И событие onLoad перебивает Ваш стримовость - об_ект Sound ждет пока не загрузится весь стрим и не запускает

Минус: Вы не сможете до окончания буфферизации узнать duration

Вот код (у меня работает)

Код AS1/AS2:

var mySound=new Sound();
mySound.onLoad=function(){
        trace("buffered OK");
}
mySound.loadSound("test.mp3",true);

А судя из Вашего кода стрим 2 раза начнет проигрываться с самого начала (1й раз при mySound.loadSound а второй раз при событии onLoad)

LanVision 09.04.2009 01:37

Спасибо, но, насколько я понимаю, onLoad() в случае со стримом срабатывает в тот момент, когда звуковой файл загрузился в том объеме, которого достаточно для запуска аудио-декомпрессора.

В любом случае проблема была в простой ошибке (случайно засунул это всё дело в onEnterFrame() ).

djyamato 11.04.2009 16:56

Цитата:

Сообщение от LanVision (Сообщение 811962)
...насколько я понимаю, onLoad() в случае со стримом срабатывает в тот момент, когда звуковой файл загрузился в том объеме, которого достаточно для запуска аудио-декомпрессора.

"Invoked automatically when a sound loads" (рид зэ факинг мануал)

То есть это событие возникнет в тот момент времени когда файл ПОЛНОСТЬЮ забуфферизируется (то есть загрузится)

В случае стримового звука он действительно стартует в тот момент когда загрузилась часть достаточная для декомпрессии(если Вы конечно ничего со звуком не делали: start stop)

Возможно событие onID может помочь со стартом но тэги могут быть записаны и в конце мп3шки

MyChemic 11.04.2009 17:40

sound.start(0, 9999);


Часовой пояс GMT +4, время: 16:00.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.