Question

Je voudrais créer un programme qui fait mp3s des 30 premières secondes d'un fichier AIFF ou WAV. Je voudrais aussi pouvoir choisir l'emplacement et la longueur, comme l'audio 2:12-2:42. Y a-t-il des outils qui me permet de le faire?

est OK Bombardements sur. L'application fonctionne sur un serveur linux, il devrait être un outil qui fonctionne sur Linux.

Je ne me dérange pas de faire en deux étapes - à savoir un outil qui crée d'abord la découpe du AIFF / wav, puis passer à un encodeur mp3

.
Était-ce utile?

La solution 2

Je voulais utiliser quelque chose d'aussi bas niveau possible, donc je fini par utiliser RubyAudio , une enveloppe pour libsndfile .

require "rubygems"
require "ruby-audio"

EXTRACT_BEGIN = 11.2
EXTRACT_LENGTH = 3.5

RubyAudio::Sound.open("/home/augustl/sandbox/test.aif") do |snd|
  info = snd.info
  ["channels", "format", "frames", "samplerate", "sections", "seekable"].each do |key|
    puts "#{key}: #{info.send(key)}"
  end

  # TODO: should we use a 1000 byte buffer? Does it matter? See RubyAudio::Sound rdocs.
  bytes_to_read = (info.samplerate * EXTRACT_LENGTH).to_i
  buffer = RubyAudio::Buffer.new("float", bytes_to_read, info.channels)

  snd.seek(info.samplerate * EXTRACT_BEGIN)
  snd.read(buffer, bytes_to_read)

  out = RubyAudio::Sound.open("/home/augustl/sandbox/out.aif", "w", info.clone)
  out.write(buffer)
end

Autres conseils

SoX avec le prédicat trim peut le faire. Si votre sox ne se construit pas avec le support MP3, vous devrez redirigez la sortie lame après, ou de trouver celui qui est.

Utilisez pour la BOITEUX partie de l'encodage mp3. Utilisez shntplit pour diviser le fichier. Vous aurez besoin de mettre vos points de division dans un fichier cue, mais qui est facile.

Exécuter ce Bash one-liner dans un répertoire avec les fichiers * .wav.

for wavfile in *.wav; do \
  sox "${wavfile}" "preview-${wavfile}" trim 0 60 fade 3 57 3; \
  lame --preset standard "preview-${wavfile}" \
    "preview-`basename ${wavfile} .wav`".mp3; \
  rm "preview-${wavfile}"; \
done

Les 60 premières secondes. 3 secondes fade-in et 3 secondes fade-out. Les fichiers originaux wav restent intacts. Les fichiers de prévisualisation sont livrés avec un préfixe « Preview- ». Vous serez en mesure de choisir l'emplacement et la longueur en changeant « trim 0 60 » pour répondre à vos besoins. Nécessite: sox, boiteux

Si vous avez un répertoire avec les fichiers mp3 et que vous devez créer des aperçus, exécutez ceci:

for mp3file in *.mp3; do \
  mpg123 -w "${mp3file}.wav" "${mp3file}"; \
  sox "${mp3file}.wav" "preview-${mp3file}.wav" trim 0 60 fade 3 57 3; \
  rm "${mp3file}.wav"; \
  lame --preset standard "preview-${mp3file}.wav" "preview-${mp3file}"; \
  rm -v "preview-${mp3file}.wav"; \
done

Nécessite: mpg123, sox, boiteux

J'ai écrit une bibliothèque Python , pydub , qui fait de ce trivial, bien qu'il utilise ffmpeg pour faire les conversions pour pour supporter d'autres formats ...

from pydub import AudioSegment

sound = AudioSegment.from_file("/input/file.aiff", format="aif")

# 2 min and 12 sec, them convert to milliseconds
start = (2*60 + 12) * 1000
end = start +  (30 * 1000)
snip = sound[start:end]

# add 3 second fade in and fade out
snip = snip.fadeIn(3000).fadeOut(3000)

# save as mp3
snip.export("/output/file.mp3", format="mp3")
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top