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-Key: 605375

Url: https://administrator.de/contentid/605375

Printed on: April 20, 2024 at 11:04 o'clock

Member: BirdyB
BirdyB Sep 17, 2020 at 09:38:26 (UTC)
Goto Top
Moin,
du kannst den Audio-Part doch einfach in ein div laden. Da musst du die Seite nicht komplett neu laden...
VG
Member: godlie
godlie Sep 17, 2020, updated at May 16, 2023 at 13:15:59 (UTC)
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; ?>
Mitglied: 145916
Solution 145916 Sep 17, 2020 updated at 12:06:34 (UTC)
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
}
?>
Member: Nurivan44
Nurivan44 Sep 17, 2020 updated at 17:03:39 (UTC)
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
Member: BirdyB
BirdyB Sep 17, 2020 at 17:45:08 (UTC)
Goto Top
Moin,
ja, du müsstest dann die Track-Auswahl in eine eigene Datei schreiben...
VG