PDA

Просмотр полной версии : Вопрос по подгрузке аудио..


dep
05.12.2008, 04:10
Доброе время суток!

Подскажите пожалуйста, что надо прописать в AS чтобы плеер подгружал и воспроизводил аудио (из папки на сервере) в потоковом режиме?
В каком формате должен быть аудиофайл И возможно ли организовать рандомную подгрузку (если в папке, допустим, файлов 5)?

scarbo
05.12.2008, 04:32
если на AS1/AS2 пишите,то формат mp3.
Рандомно можно,
Юзайте класс Sound,f1 в помощь...

arialix
05.12.2008, 11:26
s = new Sound();
function loading(){s.loadSound('./map/music'+random(5)+'.mp3' , true);}
loading();

s.onSoundComplete=loading();

scarbo
05.12.2008, 12:06
Вообще-то random(5),тогда уж.

arialix
05.12.2008, 12:26
Пасибо, не заметил - исправил :)

dep
05.12.2008, 18:14
спасибо за советы!

пишу на AS1/AS2.. до AS3 мне еще далеко=)

вот что получилось..
плеер имеет 4 кнопки play, stop, fw, rev, отображает название трека и группы, время воспроизведения, имеет возможность изменять громкость.
запускает файлы в рандомном порядке, но воспроизводит их по плейлисту..(

как нарушить эту идилию упорядочности воспроизведения на AS1\AS2 ??

stop();
playlist = new XML();
playlist.ignoreWhite = true;
playlist.onLoad = function(success) {
if (success) {
_global.songname = [];
_global.songband = [];
_global.songfile = [];
for (var i = 0; i<playlist.firstChild.childNodes.length; i++) {
_global.songname[i] = playlist.firstChild.childNodes[i].attributes.name;
_global.songband[i] = playlist.firstChild.childNodes[i].attributes.band;
_global.songfile[i] = playlist.firstChild.childNodes[i].attributes.file;
// trace(songname[i]+" "+songfile[i]+" "+songband[i]);
}
}
_root.createEmptyMovieClip("sound_mc", 1);
_global.song_nr = random(songfile.length);
_root.sound_mc.songStarter(songfile[song_nr], songname[song_nr], songband[song_nr]);
};
function timer(sound_obj) {
time = sound_obj.position/1000;
min = Math.floor(time/60);
min = (min<10) ? "0"+min : min;
sec = Math.floor(time%60);
sec = (sec<10) ? "0"+sec : sec;
timeDisplay_txt.text = min+":"+sec;
}
MovieClip.prototype.songStarter = function(file, name, band) {
if (this.sound_obj) {
this.sound_obj.stop();
delete this.sound_obj;
}
this.sound_obj = new Sound(this);
this.sound_obj.loadSound(file, true);
this.onEnterFrame = function() {
if (this.sound_obj.position>0) {
delete this.onEnterFrame;
this._parent.display_txt.text = name+" / "+band;
timeInterval = setInterval(timer, 1000, this.sound_obj);
} else {
this._parent.display_txt.text = "loading...";
}
};
this.sound_obj.onSoundComplete = function() {
clearInterval(timeInterval);
this._parent.timeDisplay_txt.text = "00:00";
(song_nr == songfile.length-1) ? _global.song_nr=0 : _global.song_nr++;
_root.sound_mc.songStarter(songfile[song_nr], songname[song_nr], songband[song_nr]);
};
this._parent.volume1.dragger.onPress = function() {
startDrag(this, true, 0, this._y, this._parent.volBG._width, this._y);
this.onEnterFrame = function() {
var p = (this._x/this._parent.volBG._width)*100;
this._parent._parent.sound_mc.sound_obj.setVolume(p);
};
};
this._parent.volume1.dragger.onRelease = function() {
delete this.onEnterFrame;
stopDrag();
};
this._parent.volume1.dragger.onReleaseOutside = function() {
stopDrag();
};
};
btn_play.onRelease = function() {
clearInterval(timeInterval);
this._parent.timeDisplay_txt.text = "00:00";
this._parent.sound_mc.songStarter(songfile[song_nr], songname[song_nr], songband[song_nr]);
};
btn_stop.onRelease = function() {
clearInterval(timeInterval);
this._parent.timeDisplay_txt.text = "00:00";
this._parent.sound_mc.sound_obj.stop();
};
btn_fw.onRelease = function() {
clearInterval(timeInterval);
this._parent.timeDisplay_txt.text = "00:00";
(song_nr == songfile.length-1) ? _global.song_nr=0 : _global.song_nr++;
_root.sound_mc.songStarter(songfile[song_nr], songname[song_nr], songband[song_nr]);
};
btn_rev.onRelease = function() {
clearInterval(timeInterval);
this._parent.timeDisplay_txt.text = "00:00";
(song_nr == 0) ? _global.song_nr=songfile.length-1 : _global.song_nr--;
_root.sound_mc.songStarter(songfile[song_nr], songname[song_nr], songband[song_nr]);
};
playlist.load("playlist.xml");

arialix
05.12.2008, 22:39
Можешь сделать чтобы Без плэйлиста, то есть чтоб он воспроизводил всё что есть в определеной папки, только минус в том что он не будет знать артиста, групу, но можно исправить это при помоши названия песни, если интересует - могу помоч...

darksranger
05.12.2008, 22:57
пишу на AS1/AS2.. до AS3 мне еще далеко=)
вы еще дальше себя загоняете от as3, копаясь в as2, если в перспективах есть изучение as3, то лучше начать сейчас, чем потом что то переучивать ,что то переосмысливать !

dep
05.12.2008, 23:07
изначально и задумывалось, чтобы в хаотичном порядке именно "все из папки"!
Но если плэйлист подгружать, то рандом не доведу до работоспособного состояния никак..

очень интересует твой вариант!

Добавлено через 5 минут
2 darksranger:

Спасибо за совет! учту! :)

Весь проект изначально пишется на AS1\AS2.. что-то слышал, что AS3 и AS1(2) не долюбливают друг друга..)

darksranger
05.12.2008, 23:24
ну я перешол на as3 взяв проэкт и изначально начав его на as3 ))))

по делу
а в чем проблема ? кто мешает получить список через php скрипт, с общим количеством и его подсунуть рэндому, я так делал ... удобно :)

dep
06.12.2008, 00:09
кто мешает получить список через php скрипт, с общим количеством и его подсунуть рэндому..

не доводилось с php скриптами работать..

если так, что в php файле прописывать нужно?

Добавлено через 15 часов 37 минут
playlist.php так должен выглядеть?

<?php

echo '<?xml version="1.0" encoding="UTF-8"?><songs>';

$songs = array (
1 => array('file://localhost/C:/WebServers/home/localhost/www/Tests/test1.ru/test1.mp3', 'Test Track 1'),
2 => array('file://localhost/C:/WebServers/home/localhost/www/Tests/test1.ru/test2.mp3', 'Test Track 2')
// N => array('URL', 'TITLE'),
);

shuffle($songs);
foreach ($songs as $song) {
echo '<song path="'.$song[1].'" title="'.$song[2].'" />';
}
echo '</songs>';
?>

не получается его подгрузить во flahs'ку..

playlist.load("playlist.php");


или так:

source_lv = new LoadVars();
source_lv.onData = function(src){
trace(src)
}
source_lv.load('file://localhost/C:/WebServers/home/localhost/www/Tests/test1.ru/playlist.php');


????

arialix
07.12.2008, 16:58
<?php

$sPath = './guest_foto/'; //папка с сервера содерж. музыку, относительно скрипта
$dDir = opendir($sPath); // открываем директорию, $dDir - дескриптор
$aFileList = array(); // массив в который будем записывать имена файлов

// цикл считывания директории
while ($sFileName=readdir($dDir))
{
if ($sFileName!='.' && $sFileName!='..')
{
$aFileList[]=$sFileName;
}
}
closedir ($dDir);

// подсчет количества файлов
$iNumFiles=count($aFileList);
sort($aFileList,SORT_STRING);
// вывод значения
//echo $iNumFiles;
echo '<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<images>';
foreach ($aFileList as $d => $den)
{
//$den1=explode('.mp3',$den);
echo '<pic>
<image>./guest_foto/'.$den.' </image>
<caption>Kresge</caption>
</pic>';

}
echo '</images>';
?>

, если не разберешся пиши