Обрезка MP3 до первых 30 секунд



Исходный Вопрос



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



теперь я знаю, что могу просто "рубить поток" в n секунд (вычисление из битрейта и размера заголовка) при доставке файла, но это немного грязно и настоящая Пита на a 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> скопировать отслеживать метаданные из файла в файл outfile


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




  • -acodec copy

557   10  

10 ответов:

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

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

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

переключатель-acodec сообщает ffmpeg использовать специальный "копировать" кодек, который не перекодирует. Это молниеносно.

Примечание: команда была обновлена на основе комментария от Oben Sonne

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

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

попробуй:

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

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

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

это в Ubuntu РЕПО, так просто: sudo apt-get install cutmp3.

вы можете попробовать Mp3Splt.

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

просто мысль: вы можете пропустить начало оригинальной песни. Скажем, вы можете использовать 30 секунд кусок начиная с третий песни.
В некоторых песнях первые 30 секунд не говорят вам много, так как это просто часть "настройка сцены" - например Pink Floyd ' s Блеск На Вас Сумасшедший Алмаз.

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

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

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

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

Так же, как обратите внимание, у меня было очень плохое время с ffmpeg, mptsplit и mp3cutter на CentOS, все они сообщали "заголовок отсутствует". Итак, мне пришлось пойти с классом MP3 и некоторыми математиками, чтобы сократить размер файла.

Я получил ошибку, делая то же самое

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

Comments

    Ничего не найдено.