nurivan44
Goto Top

Mehrere zufällige Audios in Dauerschleife aus einem Ordner abspielen ( Verbesserungsvorschläge gesucht )

Hallo zusammen,

ich habe mal eine Frage zum Thema Webentwicklung an euch. Ich benutze das nachfolgende Script um aus einem Ordner quasi in Dauerschleife zufällige Audiofiles wiederzugeben. Leider muss auf meine Art aber die Seite immer wieder neugeladen werden, was natürlich einige ungewollte Nebenerscheinungen mit sich bringt. Gibt es da eine elegantere Art das zu lösen ? Also irgendwie in einer Schleife oder ähnlichem ? Hat da jemand eventuell einen Vorschlag / Ansatz ?

Güße Sebastian

<?php
$dir = "audiofiles/";  
$scan = scandir($dir);
$random = rand(2, sizeof($scan)-1);
?>

<html>
<body>

<audio controls autoplay id="audios" src="audiofiles/<?php echo $scan[$random]; ?>"></audio>  

<script type='text/javascript'>  
    document.getElementById('audios').addEventListener('ended',myHandler,false);  
    function myHandler(e) {
        document.write('<meta http-equiv="refresh" content="0; URL=demo.php">');  
    }
</script>

</body>
</html>

Content-ID: 605375

Url: https://administrator.de/forum/mehrere-zufaellige-audios-in-dauerschleife-aus-einem-ordner-abspielen-verbesserungsvorschlaege-gesucht-605375.html

Ausgedruckt am: 13.03.2025 um 19:03 Uhr

BirdyB
BirdyB 17.09.2020 um 11:38:26 Uhr
Goto Top
Moin,
du kannst den Audio-Part doch einfach in ein div laden. Da musst du die Seite nicht komplett neu laden...
VG
godlie
godlie 17.09.2020, aktualisiert am 16.05.2023 um 15:15:59 Uhr
Goto Top
Hallo,

geh das ganze doch anders herum an, lies dir mit php alle files aus und randomize das ganze dann mit javascript.

https://stackoverflow.com/questions/37635281/playing-random-sounds-conti ...

Deine "PlayList" kannst dir ja einfach so in definieren:

<?php
$t = glob('audiofiles/*.mp3');  
$tracks = ;
foreach($t as $track){
        var_dump($track);
        array_push($tracks,"'".$track."'");  
}
$playList = "var playList = [".implode(',',$tracks)."];";   
?>

<script type="text/javascript">  

<?php echo $playList; ?>
145916
Lösung 145916 17.09.2020 aktualisiert um 14:06:34 Uhr
Goto Top
Und wenns a bisl Ajax sein soll, z.B. ...
<?php
if (isset($_GET['randomfiles'])){  
        header("Content-Type: application/json");  
	$dir = "./audiofiles/";  
	$filter ="*.mp3";  
 	$sounds = glob($dir . $filter);
	$num = is_numeric($_GET['randomfiles']) ? $_GET['randomfiles'] : 1;  
	$result = ;
	for($i = 0;$i < $num;$i++){
		$result = $sounds[rand(0,count($sounds)-1)];
	}
	echo json_encode($result);
}else{
?>

<!doctype html>
<html>
<head>
<meta charset="utf-8">  
<title>RandomAudio</title>
</head>
<script src="https://code.jquery.com/jquery-3.5.1.min.js"></script>  
<script>
function PlayRandomFile(){
	$.getJSON("<?php echo $_SERVER['PHP_SELF'];?>",{"randomfiles" : 1},function(data){  
		$('#audios').attr("src",data);  
	});
}
$(document).ready(function(e) {
	$('#audios').on("ended",function(){  
		PlayRandomFile();
	});
	PlayRandomFile();
});
</script>
<body>
	<audio controls autoplay="true" id="audios" src="" />  
</body>
</html>
<?php
}
?>
Nurivan44
Nurivan44 17.09.2020 aktualisiert um 19:03:39 Uhr
Goto Top
Zunächst mal Vielen Dank an alle für die diversen Lösungsansätze, ich hätte allerdings noch eine kurze Rückfrage bezugnehmend auf die Antwort von BirdyB.

"du kannst den Audio-Part doch einfach in ein div laden. Da musst du die Seite nicht komplett neu laden..."

Würde das nicht dazu führen, dass der Player neu geladen wird, der Audiotrack aber der selbe bleibt ?
Güße Sebastian
BirdyB
BirdyB 17.09.2020 um 19:45:08 Uhr
Goto Top
Moin,
ja, du müsstest dann die Track-Auswahl in eine eigene Datei schreiben...
VG