Обріжте MP3 до перших 30 секунд


103

Оригінальне запитання

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

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

У когось є якісь ідеї?

Відповіді

І те, mp3splitі ffmpegінше є хорошими рішеннями. Я вибрав ffmpeg, оскільки він зазвичай встановлюється на серверах Linux і також легко доступний для Windows . Ось ще кілька хороших параметрів командного рядка для генерації попереднього перегляду за допомогою ffmpeg

  • -t <seconds> подрібнити після заданої кількості секунд
  • -y файл перезапису
  • -ab <bitrate>встановити бітрейт, наприклад -ab 96k
  • -ar <rate Hz>встановити частоту дискретизації, наприклад -ar 22050 для 22,05 кГц
  • -map_meta_data <outfile>:<infile> Скопіюйте метадані доріжки з infile у outfile

замість встановлення -ab і -ar, ви можете скопіювати початкові налаштування треку, як пропонує Тім Фарлі, за допомогою:

  • -acodec copy

Я не використовував його для цієї конкретної мети, але я думаю, що ffmpeg може це зробити.
грейпфрукт

Просто думка: можливо, ви захочете пропустити початок оригінальної пісні. Скажімо, ви можете використовувати 30-секундний твір, починаючи з третини пісні. У деяких піснях перші 30 секунд не так багато розповідають вам про те, що це лише частина "налаштування сцени" - наприклад, Pink Floyd 's Shine On You Crazy Diamond .
Томаш Седович

Як зауважте, мені було дуже погано проводити час із ffmpeg, mptsplit та mp3cutter на CentOS, всі вони повідомляли про "Пропущений заголовок". Отже, мені довелося піти з MP3 Class та деякою математикою, щоб скоротити їх за розміром файлів.
Гарднер

Я не розумів, що ffmpeg може це зробити. Дякую.
Шрідхар Сарнобат

Відповіді:


142

Я також рекомендую ffmpeg, але командний рядок, запропонований Джоном Бокером, має ненавмисний побічний ефект: він перекодує файл до бітрейта за замовчуванням (що становить 64 кбіт / с у принаймні тут маїй версії). Це може створити вашим клієнтам помилкове враження про якість ваших звукових файлів, а також потрібно більше часу.

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

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

Перемикач -acodec повідомляє ffmpeg використовувати спеціальний копіювач "копіювати", який не перекодує. Це блискавично.

ПРИМІТКА: команда була оновлена ​​на основі коментаря Обена Сонна


21
Останні ffmpegверсії (принаймні з 0.10.6) інтерпретують варіанти по-різному залежно від позиції. Параметри, пов’язані з введенням, повинні з’являтися раніше, -i ...а параметри, що зменшуються для виводу, повинні з’являтися після -i .... Це означає, ffmpeg -t 30 -i inputfile.mp3 -acodec copy outputfile.mp3що тепер буде правильною відповіддю.
Обен Сонне

Чи можу я витягнути 30-секундний аудіо з 15-секундного вхідного файлу, це означає, що якщо тертка файлів то 30 секунд, то витягнути 30 секунд, але якщо файл 15 секунд, то повторіть і витягніть повну 30 секунду.
Гіріш Патідар

6
Якщо ви хочете встановити час початку (зсув), ви можете використовувати -ss hh:mm:ss[.xxx]. Приклад: ffmpeg -t 30 -ss 00:00:15.500 -i inputfile.mp3 -acodec copy outputfile.mp3скоротитиметься до 30 секунд, починаючи з 00h 00m 15s 500ms .
patryk.beza

1
чомусь вище команда не працювала для мене, але якщо я змінив її на: ffmpeg -i inputfile.mp3 -t 30 -acodec copy outputfile.mp3тоді вона працює чудово
Krishnendu

Для мене параметри -t і -s повинні використовуватися окремо у двох командах. Але це працює, дякую!
Ян Кінг Інь

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

Це в Убунту репо, так просто: sudo apt-get install cutmp3.


6

Ви можете спробувати Mp3Splt .

Раніше я використовував це в сервісі C #, який просто завершив процес mp3splt.exe win32. Я припускаю, що щось подібне можна зробити у вашому сценарії Linux / PHP.


2
Використовували MP3Split з успіхом для вирізання mp3
Freshblood

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

Ви можете переглянути параметри обрізки підкоманди як:

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

Я також додав варіант, -tякий можна використовувати альтернативно, до -eчого, скажімо, я повинен був обрізати наступне 4 хв 36 сек відео, мені не потрібно турбуватися, додаючи ці часи вручну, також я забезпечив подібну легкість під час обрізання відео, дивіться приклади в README ви зрозумієте, чому його CLI легше простого ffmpeg. Я погоджуюся, що це не такий потужний, але для нормальної людини його зручний інструмент.
srbcheema1

2
ffmpegє -toваріант, який є вашим, -tймовірно, вашим .
llogan

як щодо варіанту обрізання% віку, згаданого в README під набором обрізання, це також є ?? Я щойно створив цей інструмент на вимогу того, хто заплатив мені кілька баксів, оскільки вони не хочуть турбуватися про великий список варіантів кліпів, просто вони хотіли інструмент, який міг би виконувати певні завдання легко, навіть якщо в ffmpeg є всі варіанти, але все-таки noob буде важко знайти їх у розділі довідки командного рядка. У цьому інструменті є простий довідковий розділ, легкий для
нооба,

Звичайно,-vf "crop=iw*0.1:ih*0.1:0:0"
логін
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.