4

aiffまたはwavファイルの最初の30秒のmp3を作成するプログラムを作成したいと思います。また、2:12から2:42までの音声など、場所と長さも選択できるようにしたいと思います。これを可能にするツールはありますか?

砲撃はOKです。アプリケーションはLinuxサーバー上で実行されるため、Linux上で動作するツールである必要があります。

私はそれを2つのステップで行ってもかまいません。つまり、最初にaiff / wavのカットアウトを作成し、次にそれをmp3エンコーダーに渡すツールです。

4

5 に答える 5

3

SoXtrim述語でこれを行うことができます。sox が MP3 サポート付きで構築されていない場合は、出力をlameafter にパイプするか、サポートされているものを見つける必要があります。

于 2010-03-30T23:23:34.760 に答える
2

できるだけ低レベルのものを使用したかったので、 libsndfileRubyAudioのラッパーであるを使用することになりました。

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
于 2010-03-31T12:57:06.813 に答える
1

mp3 エンコード部分にはLAMEを使用します。shntplitを使用してファイルを分割します。スプリットポイントをキューファイルに入れる必要がありますが、それは簡単です。

于 2010-03-30T23:26:05.593 に答える
1

より多くのフォーマットをサポートするために変換を行うために ffmpeg を使用しますが、これを簡単にするPython ライブラリ pydubを作成しました…</p>

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")
于 2012-11-14T17:34:31.737 に答える
1

*.wav ファイルのあるディレクトリで、この Bash ワンライナーを実行します。

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

最初の60秒。フェードイン3秒、フェードアウト3秒。元の wav ファイルは変更されません。プレビュー ファイルには「preview-」プレフィックスが付いています。ニーズに合わせて「トリム 0 60」を変更することで、場所と長さを選択できます。必要なもの: ソックス、ラメ

mp3 ファイルを含むディレクトリがあり、プレビューを作成する必要がある場合は、次を実行します。

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

必須: mpg123、ソックス、ラメ

于 2011-06-08T21:46:07.193 に答える