PDA

Просмотр полной версии : Глюк с аудио-потоком


eYeweb
02.05.2008, 19:38
Добрый день.
Никак не могу разобраться с такой странностью

var s:Sound = new Sound(new URLRequest('http://scfire-ntc-aa03.stream.aol.com:80/stream/1025'));
s.play();


var s:Sound = new Sound(new URLRequest('http://66.135.35.144:8000'));
s.play();


Первый вариант работает. Второй нет.
Путем эксперементов выяснил что воспроизводятся те потоки что находятся не в корне. То есть от того IP или domain указан не зависит. От порта вроде тоже.
Это какая то фишка? И как это обойти?

Сайлас
03.05.2008, 00:53
Я честно говоря в звуках не разбираюсь, т.к. максимум что нужно было - это подгрузить звук со своего же сервака, но:
Это нормально, что при заходе в верхнее выдается aplication/octet stream, а во второе обычный хтмл?

etc
03.05.2008, 08:29
var s:Sound = new Sound(new URLRequest('http://66.135.35.144:8000/;stream.nsv'));
s.play();

eYeweb
03.05.2008, 11:53
Спасибо __etc. Это какая то особенность SHOUTcast? Я не особо в этом разбираюсь, мне казалось что например если WinAMP может проигрывать поток, значит и AS с ходу должен.

Сайлас
03.05.2008, 14:19
Спасибо __etc. Это какая то особенность SHOUTcast? Я не особо в этом разбираюсь, мне казалось что например если WinAMP может проигрывать поток, значит и AS с ходу должен.
Ну по-моему это очень логичная особенность: у винампа есть единственная задача - проигрывать потоковый звук, а у флэша помимо звука есть еще обработка всего подряд.

etc
03.05.2008, 14:32
Дело в User-Agent, который Flash не изменяет.

Сайлас
03.05.2008, 15:15
Дело в User-Agent, который Flash не изменяет.
А, действительно, простое объяснение :)
Буду знать...

eYeweb
03.05.2008, 15:44
Да действительно работет.
var req:URLRequest=new URLRequest('http://66.135.35.144:8000/');
req.requestHeaders=new Array(new URLRequestHeader('User-Agent','WinAmp'));
var s:Sound = new Sound(req);
s.play();

etc
03.05.2008, 17:35
User-Agent запрещен к изменению, код неработоспособен.

ArgumentError: Error #2096: The HTTP request header User-Agent cannot be set via ActionScript.
at flash.media::Sound/_load()
at flash.media::Sound/load()
at flash.media::Sound()
at Untitled_fla::MainTimeline/frame1()

eYeweb
03.05.2008, 17:44
Я использую AIR. Там все ок.

etc
03.05.2008, 17:48
Если бы вопрос был по AIR, то он бы располагался в соответствующем разделе.