Исходный вопрос
Я хочу иметь возможность сгенерировать новый (полностью действующий) файл MP3 из существующего файла MP3, который будет использоваться в качестве предварительного просмотра - стиль «попробуйте перед покупкой». Новый файл должен содержать только первые n секунд трека.
Теперь я знаю, что могу просто «отрезать поток» за n секунд (вычисляя из битрейта и размера заголовка) при доставке файла, но это немного грязно и настоящий 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>
копировать метаданные трека из файла в файл Outfile
вместо -ab и -ar вы можете скопировать исходные настройки трека, как предлагает Тим Фарли, с помощью:
-acodec copy
Ответы:
Я также рекомендую ffmpeg, но командная строка, предложенная Джоном Бокером, имеет непреднамеренный побочный эффект: она перекодирует файл с битрейтом по умолчанию (который, по крайней мере, составляет 64 кб / с в версии, которая у меня здесь). Это может создать у ваших клиентов ложное впечатление о качестве ваших звуковых файлов, и это также займет больше времени.
Вот командная строка, которая будет сокращаться до 30 секунд без перекодирования:
Ключ -acodec указывает ffmpeg использовать специальный кодек «копирования», который не перекодирует. Это молниеносно.
ПРИМЕЧАНИЕ: команда была обновлена на основе комментария Обена Сонне.
источник
ffmpeg
версии (по крайней мере, начиная с 0.10.6) интерпретируют параметры по-разному в зависимости от позиции.-i ...
Параметры, связанные с вводом, должны появляться до, а параметры, связанные с выводом, должны появляться после-i ...
. Значитffmpeg -t 30 -i inputfile.mp3 -acodec copy outputfile.mp3
, теперь будет правильный ответ.-ss hh:mm:ss[.xxx]
. Пример:ffmpeg -t 30 -ss 00:00:15.500 -i inputfile.mp3 -acodec copy outputfile.mp3
будет обрезать до 30 секунд, начиная с 00ч 00м 15с 500мс .ffmpeg -i inputfile.mp3 -t 30 -acodec copy outputfile.mp3
Если вы хотите УДАЛИТЬ первые 30 секунд (и сохранить оставшиеся), используйте это:
источник
пытаться:
источник
Эта команда тоже отлично работает. Я обрезал свои музыкальные файлы от 20 до 40 секунд.
источник
вы можете использовать mp3cut:
Это в убунту репо, так просто:
sudo apt-get install cutmp3
.источник
Вы можете попробовать Mp3Splt .
Я использовал его раньше в сервисе C #, который просто обертывал процесс win32 mp3splt.exe. Я предполагаю, что нечто подобное можно было бы сделать в вашем сценарии Linux / PHP.
источник
У меня ошибка при том же
Исправление для меня было:
источник
medipack - это очень простое приложение командной строки, которое используется в качестве оболочки
ffmpeg
.вы можете обрезать видео с помощью этих команд:
вы можете просмотреть параметры подкоманды обрезки как:
вы также можете изучить другие варианты, используя
medipack -h
вы можете посетить https://github.com/srbcheema1/medipack и ознакомиться с примерами оформления заказа в README.
источник
ffmpeg -i input -ss <start time> -to <end time> output
-t
который может использоваться в качестве альтернативы,-e
что означает, что, предположим, я должен был обрезать следующее 4-минутное 36-секундное видео, мне не нужно беспокоиться о добавлении этого времени вручную, также я обеспечил аналогичную легкость при обрезке видео, см. Примеры в README вы поймете, почему его интерфейс командной строки проще простого ffmpeg. Я согласен, что он не такой мощный, но для нормального человека удобный инструмент.ffmpeg
есть-to
вариант, который вы,-t
вероятно, делаете .-vf "crop=iw*0.1:ih*0.1:0:0"