Résolu PHP fusionner deux sons .wav

Sgdu92

Nouveau membre
#1
Bonjour,
j'ai deux sons en .wav et j'aimerais les fusionnés afin qu'ils ne fassent qu'une seule musique en PHP:

$son1 = "son1.wav";
$son2 = "son2.wav";
$son_total = $son1 + $son2;
Lire $son_total //mais je sais pas comment on fait non plus !

comment puis-je faire ?
Merci d'avance pour votre aide !
Sg
 

Sgdu92

Nouveau membre
#3
merci mezigo !
j'avais vu ce site mais le code ne fonctionnais pas :

file_put_contents('combined.mp3',
file_get_contents('file1.mp3') .
file_get_contents('file2.mp3'));

dans mon code le combined.mp3 ne contient que file1.mp3 et non le file2.mp3
est-ce mon code qui est faux ou est-ce que cette fonction ne fontionne pas ?

merci
 

mezigo

Modérateur
Staff
#4
Salut,

Ça devrait marcher.
Est-ce que tes deux fichiers "file1.mp3" et "file2.mp3" existent bien et au bon endroit ?
A noter que les tags mp3 ne sont pas mis à jour avec cette méthode, ce qui fait que "combined.mp3" contient bien les deux fichiers mais n'affiche que les propriétés de "file1.mp3". Il faut le lire entièrement, ou vérifier son poids informatique pour savoir si la concaténation a bien fonctionné.
Tu dois avoir des possibilités de mettre à jour les tags mp3 d'un fichier avec php...
 

Sgdu92

Nouveau membre
#6
Salut à tous !
Merci pour vos aimables réponses.

Depuis 3 jours j'essaie de continuer avec la methode file_put_content parce que je ne comprends pas comment fonctionne les bibliothèques php (GitHub).

Du coup, j'en ai conclu qu'avec la méthode fil_put_content, la taille du fichier s'est bien augmenté, cependant lorsque je lis le fichier, il ne prend en compte que la durée du file_1. Je voudrais donc modifier cette durée. Savez vous comment faire ?

j'ai regarder ce site php sur les audio : https://www.php.net/manual/fr/refs.utilspec.audio.php
mais je ne comprends toujours pas comment cela fonctionne et qu'est-ce qu'il faut télécharger et où les placés ?

je serais ravi de pouvoir y arriver !!
PS : voici mon code pour le moment (je sais pas si ca vous est utile)
<html>
<head>
<?php
//Définition des audios :
$file_1 = "file_1.wav";
$file_2 = "file_2.wav";

//Fusion des audios :
file_put_contents('merged_song.wav',
file_get_contents($file_1) .
file_get_contents($file_2));
?>
</head>
<body>
<?php
//Affichage du lecteur :
echo'<figure><figcaption>Son fusionné :</figcaption><audio controls="controls"><source src="merged_song.wav" type="audio/wav">Your browser does not support the<code>audio</code> element.</audio>';
?>
</body>
</html>
 

mezigo

Modérateur
Staff
#7
Salut,
Ton fichier "mergé" fait il bien la taille des deux fichiers additionnés ?
Si c'est le cas, c'est que ça marche.
Il ne te reste plus qu'à modifier l'entête MP3 pour que ton lecteur ne s'arrête pas à la fin du premier morceau.
Ça doit se faire avec des bibliothèques d'outils MP3 pour PHP.
Enfin, il faut espérer que ton lecteur passe par dessus l'entête du 2e morceau sans bugguer.
Essaye peut-être un autre lecteur plus rudimentaire. Il est probable que les anciens lecteurs soient plus permissifs et lisent le fichier sans se poser de question. Et que des lecteurs plus modernes ou mis à jour l'interdisent pour éviter de glisser un code malicieux derrière un son anodin.
 

mdj de normandie

Grand Maître
#8
Bonjour, la méthode de concaténer les fichier ne peut pas marcher convenablement car au début de chaque fichier il y a une entete qui contient des information sur le son (dont sa durée) et un fichier ne peut avoir qu'une entete, de même il y a un "footer" au fichier qui contiens d'autres donnée (dont les fameux codec).

certes certain vieux lecteur ou lecteur rudimentaire ignore la deuxième entete, mais bug a la fin de la duré renseigné dans la première entete

c'est comme concaténer deux fichier HTML: la norme veut que les balise html, head et body soit unique, même si beaucoup de navigateur interpréteront tout, mettre deux head dans sa page HTML sa reste un code dégueulasse.

le mieux c'est d'utiliser les librairies spécialisé pour manipuler ces fichiers audio
 

Sgdu92

Nouveau membre
#9
Merci pour ces informations ! Mais du coup comment utilisent ont les librairies spécialisés ? Pour le moment j'ai juste compris qu'il fallait télécharger un dossier mais ou faut il le mettre et comment appeler cette librairie (je crois que c'est ID3 ?) ?
merci pour ton aide
 

mdj de normandie

Grand Maître
#10
Meilleure réponse
voici une capture de mon IDE (avec un peu de commentaire en espérant que ce soit compréhensible)
tom's guide importer une classe.png
 

Sgdu92

Nouveau membre
#11
Salut mdj !
j'ai essayé de faire pareil que toi. Voici en image le résultat (en sachant que je n'ai pas touché au code phpmp3.php) :
1568619650959.png
sinon voici l'emplacement du fichier dans le dossier :
1568619699578.png
et enfin voici mon code :
1568619745588.png
Que dois-je faire ?
 

mdj de normandie

Grand Maître
#12
Effectivement il y a une erreur dans le nom du fichier ligne 7 (".ph3" au lieu de ".mp3"...).
Pardon
 

Sgdu92

Nouveau membre
#13
Génial ! ca marche !! Merci à vous deux ! continuez de faire des personnes heureuses !!!! On vous aime !
 

mdj de normandie

Grand Maître
#14
De rien, n'oubliez pas d'attribuer la meilleur réponse pour clôturer la question.
 
Vous devez vous inscrire ou vous connecter pour répondre ici.
Staff en ligne
  • magellan
    Modérâleur
  • vince1053
    Modérateur
Membres en ligne
  • magellan
  • Titi-78340
  • philou21850
  • gilbert31
  • vince1053
Derniers messages publiés
Statistiques globales
Discussions
865 666
Messages
8 060 193
Membres
1 576 202
Dernier membre
buanya swikidisa
Partager cette page
Haut