質問

私は、AIFFやWAVファイルの最初の30秒のMP3ファイルを作るプログラムを作成したいと思います。私はまた、午前2時12分2時42分との間の音声として、位置および長さを選択できるようにしたいです。私はこれを行うことができます任意のツールはありますか?

砲撃することはOKです。それはLinux上で動作するツールでなければならないであろうように、アプリケーションは、Linuxサーバ上で実行されます。

私は2つのステップでそれをやって気にしない - 。最初AIFF / WAVの切り欠き部を作成すること、すなわちツールを、そしてMP3エンコーダに渡す

役に立ちましたか?

解決 2

私は RubyAudio を使用して終了して

私は、できるだけ低レベルとして何かを使用していました、 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

他のヒント

SoX trim述語でこれを行うことができます。あなたのソックスは、MP3をサポートして構築されていないなら、あなたは後lameにパイプへの出力を持っている、またはあるものを見つけることができます。

使用 LAME の一部をコードするmp3ため。使用ファイルを分割するをshntplit。あなたはキューファイルにあなたのスプリットポイントを配置する必要がありますが、それは簡単です。

* .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

まず60秒。 3秒でフェードと3秒はフェードアウト。オリジナルwavファイルはそのままご利用いただけます。プレビューファイルは「preview-」接頭辞が付いています。あなたは、あなたのニーズに合わせて「0 60トリム」変更することにより、位置と長さを選択することができます。 必要なもの:SOX、ラメ

あなたは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は、SOX、ラメ

それは順番に変換を行うためにffmpegのを使用していますが、これは些細なります。

私が書いたA Pythonライブラリ、pydub に、より多くのフォーマットをサポートするために...

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")
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top