106 votes

Recadrer MP3 aux 30 premières secondes

Question d'origine

Je veux être capable de générer un nouveau fichier MP3 (entièrement valide) à partir d'un fichier MP3 existant à utiliser comme prévisualisation -- style essai avant achat. Le nouveau fichier ne devrait contenir que les premières n secondes de la piste.

Maintenant, je sais que je pourrais simplement "couper le flux" à n secondes (en calculant à partir du débit binaire et de la taille de l'en-tête) lors de la livraison du fichier, mais c'est un peu sale et une vraie PITA sur une piste VBR. Je voudrais être capable de générer un fichier MP3 correct.

Des idées?

Réponses

Les deux solutions mp3split et ffmpeg sont bonnes. J'ai choisi ffmpeg car il est communément installé sur les serveurs linux et est également facilement disponible pour Windows. Voici quelques autres bons paramètres en ligne de commande pour générer des prévisualisations avec ffmpeg

  • -t couper après un nombre spécifié de secondes
  • -y forcer l'écrasement du fichier
  • -ab définir le débit binaire ex. -ab 96k
  • -ar définir le taux d'échantillonnage ex. -ar 22050 pour 22.05kHz
  • -map_meta_data : copier les métadonnées de piste de l'infile vers l'outfile

au lieu de définir -ab et -ar, vous pouvez copier les paramètres de piste originaux, comme le suggère Tim Farley, avec:

  • -acodec copy

0 votes

Je ne l'ai pas utilisé à cette fin spécifique, mais je parie que ffmpeg peut le faire.

0 votes

Juste une pensée : vous voudrez peut-être sauter le début de la chanson originale. Dites, vous pouvez utiliser un morceau de 30 secondes à partir du troisième de la chanson. Dans certaines chansons, les 30 premières secondes ne vous disent pas grand-chose car c'est juste une partie de "mise en place de la scène" - par exemple Pink Floyd's Shine On You Crazy Diamond.

0 votes

Juste pour information, j'ai eu un très mauvais moment avec ffmpeg, mptsplit et mp3cutter sur CentOS, tous signalant "Header Missing". Donc, j'ai dû utiliser MP3 Class et faire quelques calculs pour couper par taille de fichier.

146voto

Tim Farley Points 5809

Je recommande également ffmpeg, mais la ligne de commande suggérée par John Boker a un effet secondaire non voulu : elle réencode le fichier au débit binaire par défaut (qui est de 64 kb/s dans la version que j'ai ici au moins). Cela pourrait donner à vos clients une fausse impression de la qualité de vos fichiers audio, et cela prend aussi plus de temps.

Voici une ligne de commande qui permet de découper les fichiers en 30 secondes sans transcodage :

ffmpeg -t 30 -i fichierentree.mp3 -acodec copy fichiersortie.mp3

L'option -acodec indique à ffmpeg d'utiliser le codec spécial "copy" qui ne transcode pas. C'est extrêmement rapide.

REMARQUE : la commande a été mise à jour en fonction du commentaire d'Oben Sonne

22 votes

Les versions récentes de ffmpeg (au moins depuis 0.10.6) interprètent les options différemment en fonction de leur position. Les options liées à l'entrée doivent apparaître avant -i ... et les options liées à la sortie doivent apparaître après -i .... Cela signifie que ffmpeg -t 30 -i inputfile.mp3 -acodec copy outputfile.mp3 serait la réponse correcte maintenant.

0 votes

Est-ce que je peux extraire 30 secondes audio à partir d'un fichier d'entrée de 15 secondes, cela signifie que si le fichier est supérieur à 30 secondes, alors extraire 30 secondes, mais s'il est de 15 secondes, alors répéter et extraire les 30 secondes complètes.

8 votes

Si vous voulez définir l'heure de début (décalage), vous pouvez utiliser -ss hh:mm:ss[.xxx]. Exemple: ffmpeg -t 30 -ss 00:00:15.500 -i inputfile.mp3 -acodec copy outputfile.mp3 permettra de découper 30 secondes à partir de 00h 00m 15s 500ms.

57voto

the.jxc Points 1671

Si vous souhaitez SUPPRIMER les 30 premières secondes (et conserver le reste) alors utilisez ceci :

ffmpeg -ss 30 -i inputfile.mp3 -acodec copy outputfile.mp3

18voto

John Boker Points 36308

Essayez:

ffmpeg -t 30 -i inputfile.mp3 outputfile.mp3

11voto

Michał Šrajer Points 9487

Vous pouvez utiliser mp3cut:

cutmp3 -i foo.mp3 -O 30s.mp3 -a 0:00.0 -b 0:30.0

C'est dans le dépôt ubuntu, donc juste: sudo apt-get install cutmp3.

6voto

Ryan Duffield Points 7602

Vous voudrez peut-être essayer Mp3Splt.

Je l'ai utilisé auparavant dans un service C# qui enveloppait simplement le processus win32 de mp3splt.exe. Je suppose qu'une chose similaire pourrait être faite dans votre scénario Linux/PHP.

2 votes

Utilisé MP3Split avec succès pour découper des fichiers MP3

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X