У меня есть куча mp3-файлов различной длины. Я хочу сократить его до 50% -60% длины. Говорит от 1 минуты до 30 секунд. Это должно быть тривиально, используя ffmpeg. Но я не знаю, как определить его исходную длину в качестве основы для обработки с использованием ffmpeg.
У кого-нибудь есть идея?
\n
для печати новую строку также.> mp3info -p "%S\n" sample.mp3
// общее время в секундахffmpeg
напечатает все, что он знает о файле, если вы не дадите ему никаких других аргументов. Используйте,grep
чтобы удалить все, кроме «Длительность»:Вы также можете использовать
mplayer
. Grep для строки "ID_LENGTH =":источник
TOTLENGTH=0; for f in *.mp3; do LENGTH=$(mplayer -ao null -identify -frames 0 "$f" 2>&1 | awk -F= '/ID_LENGTH/ {print $2}' | awk -F. '{print $1}'); TOTLENGTH=$(($TOTLENGTH + $LENGTH)); done; echo $TOTLENGTH
печати общей длины аудио во всех файлах в секундах. Возможно, это можно сделать более эффективно, но, поскольку я написал его как разовый, это было достаточно для моих нужд. (Второй вызов awk удаляет десятичные дроби, поэтому результат не на 100% точен, но, опять же, достаточно хорош для моих нужд.)Estimating duration from bitrate, this may be inaccurate
. Я думаю, что этот ответ действителен только с постоянным битрейтом MP3.Интересно, что приложение EXIFTool дает продолжительность MP3 в качестве последней строки!
источник
Просто еще один способ получить продолжительность, используя
ffmpeg
иgrep
:источник
Используемые решения
ffmpeg
кажутся мне немного хрупкими, поскольку они анализируют выходные данные, которые не совсем предназначены для интерфейса. Тем не менее, они, вероятно, будут продолжать работать в течение нескольких лет независимо.ffmpeg
поставляется с инструментомffprobe
для получения информации об аудиофайлах (множество форматов, в том числе mp3), и может выдавать машиночитаемый вывод. Следующая команда получает длительность песни.источник
ffprobe -show_entries stream=duration -of compact=p=0:nk=1 -v fatal song.mp3
Я лично использую Mplayer для извлечения информации, в основном потому, что у меня она уже установлена, и я не могу без необходимости устанавливать новое программное обеспечение. Преимущество этого заключается в том, что он не ограничивается, в частности, mp3-файлами, и должен работать с любым медиа-файлом, который может обрабатывать Mplayer. Следующая строка будет возвращать длину трека в секундах.
источник
Вы можете использовать ffmpeg, чтобы получить длительность файла. Просто используйте:
источник
У меня была та же проблема, и я обнаружил, что команда mplayer (goldPseudo) работает хорошо, но впоследствии я обнаружил, что если вы откроете альбом в RhythmBox, вы увидите, что в его строке состояния указано количество дорожек, общее время воспроизведения и размер диска.
источник
Вот мое простое использование выше.
Я отправляю это значение в переменную mp3_full_length
Спасибо выше людей! Я использую ваши идеи и знания Спасибо за чтение, Хорошего дня! ;)
источник