MP3を最初の30秒にトリミング


103

元の質問

プレビューとして使用する既存のMP3ファイルから新しい(完全に有効な)MP3ファイルを生成できるようにしたいと思います-試用前購入スタイル。新しいファイルには、トラックの最初のn秒のみを含める必要があります。

今、私はファイルを配信するときに(ビットレートとヘッダーサイズから計算して)n秒で「ストリームを切り取る」ことができることを知っていますが、これは少しダーティであり、VBRトラック上の実際のPITAです。適切なMP3ファイルを生成できるようにしたいのですが。

誰かアイデアはありますか?

答え

両方mp3splitffmpeg両方の良いソリューションです。私はffmpegを選択しました。これは、Linuxサーバーに一般的にインストールされ、Windowsでも簡単に利用できるためです。ffmpegでプレビューを生成するためのより良いコマンドラインパラメータをいくつか示します

  • -t <seconds> 指定した秒数後にチョップする
  • -y ファイルを強制的に上書きする
  • -ab <bitrate>ビットレートの設定例-ab 96k
  • -ar <rate Hz>サンプリングレートを設定します。例:22.05kHz-ar 22050
  • -map_meta_data <outfile>:<infile> infileからoutfileにトラックメタデータをコピーする

-abおよび-arを設定する代わりに、Tim Farleyが示唆するように、次のようにして元のトラック設定をコピーできます。

  • -acodec copy

この特定の目的には使用していませんが、ffmpegで実行できると思います。
グレープ

ただ考えてみてください。元の曲の最初をスキップすることもできます。たとえば、曲の3番目から30秒のピースを使用できます。一部の曲では、最初の30秒は「シーンのセットアップ」の部分であるため、あまりわかりません。たとえば、ピンクフロイドのシャインオンユークレイジーダイヤモンド」などです。
トーマスセドビッチ2008

ちょうど注意したように、私はCentOSでffmpeg、mptsplit、mp3cutterを使用して本当に悪い時間を過ごしました。したがって、私はMP3クラスといくつかの数学を使用して、ファイルサイズで削減する必要がありました。
ガードナー

私はffmpegがそれができるとは思いませんでした。ありがとうございました。
Sridhar Sarnobat

回答:


142

私はffmpegもお勧めしますが、John Bokerによって提案されたコマンドラインには意図しない副作用があります。ファイルをデフォルトのビットレート(少なくともここにあるバージョンでは64 kb / s)に再エンコードします。これは、顧客にサウンドファイルの品質について誤った印象を与える可能性があり、実行に時間がかかります。

以下は、トランスコードなしで30秒にスライスするコマンドラインです。

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

-acodecスイッチは、トランスコードしない特別な「コピー」コーデックを使用するようにffmpegに指示します。電光石火です。

注:コマンドは、Oben Sonneからのコメントに基づいて更新されました


21
最近のffmpegバージョン(少なくとも0.10.6以降)では、位置に基づいてオプションの解釈が異なります。入力関連オプションは前に-i ...、出力関連オプションは後に表示する必要があります-i ...。この手段はffmpeg -t 30 -i inputfile.mp3 -acodec copy outputfile.mp3なり正解します。
Oben Sonne

15秒の入力ファイルから30秒の音声を抽出できますか?つまり、ファイルの評価が30秒で30秒の場合は抽出しますが、ファイル15秒の場合は30秒を繰り返して完全に抽出します。
Girish Patidar

6
開始時刻(オフセット)を設定する場合は、を使用できます-ss hh:mm:ss[.xxx]。例:00h 00m 15s 500msから30秒にffmpeg -t 30 -ss 00:00:15.500 -i inputfile.mp3 -acodec copy outputfile.mp3スライスします。
patryk.beza

1
上記のコマンドは何らかの理由で機能しませんでしたが、次のように変更すると、ffmpeg -i inputfile.mp3 -t 30 -acodec copy outputfile.mp3完全に機能します
Krishnendu

私にとって、-tオプションと-sオプションは、2つのコマンドで別々に使用する必要があります。しかし、それは機能します、ありがとう!
Yan King Yin

57

最初の30秒を削除し、残りを残したい場合は、これを使用します。

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


12

このコマンドも完全に機能します。音楽ファイルを20秒から40秒にトリミングしました。

-y:出力ファイルを強制的に上書きします。

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

1
パーフェクト!これを共有してくれてありがとう。
HerrimanCoder

11

あなたはmp3cutを使うことができます:

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

これはubuntuリポジトリにあるため、次のようにしますsudo apt-get install cutmp3



0

同じことをしているときにエラーが発生しました

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

私のための修正は:

ffmpeg -ss 00:02:43.00 -t 00:00:10 -i input.mp3 -codec:a libmp3lame out.mp3

0

medipackは、ラッパーとしての非常にシンプルなコマンドラインアプリですffmpeg

次のコマンドを使用してビデオをトリミングできます。

medipack trim input.mp3 -s 00:00 -e 00:30 -o output.mp3
medipack trim input.mp3 -s 00:00 -t 00:30 -o output.mp3

次のように、trimサブコマンドのオプションを表示できます。

srb@srb-pc:$ medipack trim -h
usage: medipack trim [-h] [-s START] [-e END | -t TIME] [-o OUTPUT] [inp]

positional arguments:
  inp                   input video file ex: input.mp4

optional arguments:
  -h, --help            show this help message and exit
  -s START, --start START
                        start time for cuting in format hh:mm:ss or mm:ss
  -e END, --end END     end time for cuting in format hh:mm:ss or mm:ss
  -t TIME, --time TIME  clip duration in format hh:mm:ss or mm:ss
  -o OUTPUT, --output OUTPUT

を使用して他のオプションを探索することもできます medipack -h

srb@srb-pc:$ medipack --help
usage: medipack.py [-h] [-v] {trim,crop,resize,extract} ...

positional arguments:
  {trim,crop,resize,extract}

optional arguments:
  -h, --help            show this help message and exit
  -v, --version         Display version number

あなたが訪問するかもしれhttps://github.com/srbcheema1/medipack READMEにし、チェックアウトの例を。


1
このラッパーの利点は何ですか?それは何よりも単純に見えないためffmpeg -i input -ss <start time> -to <end time> output
llogan

私はまた、次の4分36秒のビデオをトリミングする-tこと-eを意味する代わりに使用できるオプションを追加しました。手動でそれらの時間を追加することを心配する必要はありません。また、ビデオのトリミング中に同様の簡単さを提供しました。例を参照してください。 READMEでは、CLIが単純なffmpegよりも簡単である理由を理解できます。それはそれほど強力ではないが、普通の人にとっては便利なツールであることに同意します。
srbcheema1

2
ffmpegおそらく-toあなたがすることであるオプションがあります-t
llogan

READMEの「作物サブオプション」に記載されている作物%ageオプションについてはどうですか?私は数ドルを支払った誰かがオンデマンドでそのツールを作成したところです。彼らは大きなcliオプションリストを気にしたくないので、ffmpegにすべてのオプションがある場合でも、特定のタスクを簡単に実行できるツールが欲しかっただけです。しかし、それでもnoobがコマンドラインのヘルプセクションでそれらすべてを見つけるのは難しいでしょう。このツールは、理解するのnoobのための簡単な簡単なヘルプセクションがある
srbcheema1

確かに、-vf "crop=iw*0.1:ih*0.1:0:0"
llogan
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.