2008-09-04 8 views
73

Оригинал ВопросОбрезка MP3 в первые 30 секунд

Я хочу, чтобы иметь возможность создать новый (полностью действительный) MP3-файл из существующего файла MP3, которые будут использоваться в качестве предварительного просмотра - попробуй перед вами -купить стиль. Новый файл должен содержать только первые n секунд дорожки.

Теперь, я знаю, что я мог бы просто «нарезать поток» в п секунд (счетных от битрейта и заголовка размера) при доставке файла, но это немного грязный и реальный PITA на VBR дорожке. Я хотел бы иметь возможность генерировать правильный MP3-файл.

У вас есть идеи?

Ответы

Оба mp3split и ffmpeg оба хорошие решения. Я выбрал ffmpeg, поскольку он обычно устанавливается на Linux-серверах, а также easily available for windows. Вот несколько хороших параметров командной строки для генерации превью с FFmpeg

  • -t <seconds> отбивная после заданного количества секунд
  • -y файл сила перезаписать
  • -ab <bitrate> набор битрейта, например, -ab 96k
  • -ar <rate Hz> Установленная частота дискретизации, например. -ar 22050 для 22.05kHz
  • -map_meta_data <outfile>:<infile> копия метаданных трека из INFILE в выходной_файл

вместо установки -ab и -ar, вы можете скопировать исходные параметры трека, как подсказывает Тим ​​Фарли, с :

  • -acodec copy
+0

Я не понимал, FFmpeg мог сделать это. Спасибо. – 2017-12-16 07:28:14

ответ

99

Я также рекомендую ffmpeg, но в командной строке, предложенной Джоном Бокером, есть непреднамеренный побочный эффект: он перекодирует файл в битрейт по умолчанию (который имеет 64 kb/s в версии, которую я имею здесь, по крайней мере). Это может дать вашим клиентам ложное представление о качестве ваших звуковых файлов, и это также занимает больше времени.

Вот командная строка, которая будет порезать на 30 секунд без перекодирования:

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

-acodec переключатель указывает FFmpeg использовать специальный «копировать» кодек, который не перекодировать. Он молниеносно.

Примечание: команда была обновлена ​​на основе комментарий от OBEN Sonne

2

Я не использовал его для этой конкретной цели, но я уверен, что ffmpeg может это сделать.

15

попробовать:

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

Вы могли бы хотеть попробовать Mp3Splt.

Я использовал его раньше в службе C#, которая просто завернула процесс get32 mp3splt.exe. Я предполагаю, что что-то подобное можно было бы сделать в вашем сценарии Linux/PHP.

+2

Используется MP3Split с успехом для mp3 cut – Freshblood 2014-04-10 19:20:36

5

только мысль: вы можете пропустить начало оригинальной песни. Скажем, вы можете использовать 30 секундную часть, начиная с третьего песни.
В некоторых песнях первые 30 секунд не говорят вам, так как это всего лишь часть «создания сцены», например Pink FloydShine On You Crazy Diamond.

+4

+1 отличная песня! – alex 2009-06-16 04:20:37

+0

up for pink floyd – 2016-02-01 13:01:35

42

Если вы хотите удалить первые 30 секунд (и держать остаток), а затем использовать это:

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

вы можете использовать mp3cut :

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

Это в Ubuntu репо, так просто: sudo apt-get install cutmp3.

1

Как и примечание, у меня было очень плохое время с ffmpeg, mptsplit и mp3cutter на CentOS, и все они сообщали «Header Missing». Итак, мне пришлось пойти с MP3-классом и некоторыми математиками, чтобы разрезать файлы.

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: а libmp3lame out.mp3

2

Эта команда также отлично работает. Я обрезал свою музыку с 20 секунд до 40 секунд.

-y: принудительно выводить файл для перезаписи.

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

 Смежные вопросы

  • Нет связанных вопросов^_^