Question

Question originale

Je souhaite pouvoir générer un nouveau fichier MP3 (entièrement valide) à partir d'un fichier MP3 existant pour l'utiliser comme aperçu - style essayer avant d'acheter.Le nouveau fichier ne doit contenir que le premier n secondes de la piste.

Maintenant, je sais que je pourrais simplement "couper le flux" à n secondes (calcul à partir du débit et de la taille de l'en-tête) lors de la livraison du fichier, mais c'est un peu sale et un vrai PITA sur une piste VBR.J'aimerais pouvoir générer un fichier MP3 approprié.

Quelqu'un a des idées ?

Réponses

Les deux mp3split et ffmpeg sont deux bonnes solutions.J'ai choisi ffmpeg car il est couramment installé sur les serveurs Linux et est également facilement disponible pour Windows.Voici quelques autres bons paramètres de ligne de commande pour générer des aperçus avec ffmpeg

  • -t <seconds> hacher après un nombre de secondes spécifié
  • -y forcer l'écrasement du fichier
  • -ab <bitrate> définir le débit, par ex. -ab 96k
  • -ar <rate Hz> définir le taux d'échantillonnage, par ex. -ar 22050 pour 22,05 kHz
  • -map_meta_data <outfile>:<infile> copier les métadonnées de la piste d'un fichier entrant à un fichier sortant

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

  • -acodec copy
Était-ce utile?

La solution

Je recommande également ffmpeg, mais la ligne de commande suggérée par John Boker a un effet secondaire involontaire :il 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 également plus de temps.

Voici une ligne de commande qui sera découpée en 30 secondes sans transcodage :

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

Le commutateur -acodec indique à ffmpeg d'utiliser le codec spécial "copie" qui ne transcode pas.C'est rapide comme l'éclair.

NOTE:la commande a été mise à jour sur la base du commentaire d'Oben Sonne

Autres conseils

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

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

essayer:

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

tu peux 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, alors juste : sudo apt-get install cutmp3.

Cette commande fonctionne également parfaitement.J'ai recadré mes fichiers musicaux de 20 à 40 secondes.

-y :forcer le fichier de sortie à écraser.

ffmpeg -i test.mp3 -ss 00:00:20 -to 00:00:40 -c copy -y temp.mp3

Vous voudrez peut-être essayer Mp3Splt.

Je l'ai déjà utilisé dans un service C# qui encapsulait simplement le processus win32 mp3splt.exe.Je suppose que quelque chose de similaire pourrait être fait dans votre scénario Linux/PHP.

Je ne l'ai pas utilisé dans ce but précis, mais je parie ffmpeg peut le faire.

J'ai une erreur en faisant la même chose

Invalid audio stream. Exactly one MP3 audio stream is required.
Could not write header for output file #0 (incorrect codec parameters     ?): Invalid argumentStream mapping:

La solution pour moi était :

ffmpeg -ss 00:02:43.00 -t 00:00:10 -i input.mp3 -codec:a libmp3lame out.mp3
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top