Questão Original
Quero ser capaz de gerar um novo arquivo MP3 (totalmente válido) a partir de um arquivo MP3 existente para ser usado como uma amostra - no estilo experimente antes de comprar. O novo arquivo deve conter apenas os primeiros n segundos da faixa.
Agora, eu sei que poderia apenas "cortar o fluxo" em n segundos (calculando a partir da taxa de bits e do tamanho do cabeçalho) ao entregar o arquivo, mas isso é um pouco sujo e um verdadeiro PITA em uma trilha VBR. Eu gostaria de poder gerar um arquivo MP3 adequado.
Alguém tem alguma ideia?
Respostas
Ambos mp3split
e ffmpeg
são boas soluções. Eu escolhi o ffmpeg porque ele é comumente instalado em servidores Linux e também está facilmente disponível para Windows . Aqui estão mais alguns parâmetros de linha de comando bons para gerar visualizações com ffmpeg
-t <seconds>
cortar após determinado número de segundos-y
forçar sobrescrever arquivo-ab <bitrate>
definir taxa de bits, por exemplo -ab 96k-ar <rate Hz>
definir taxa de amostragem, por exemplo, -ar 22050 para 22,05 kHz-map_meta_data <outfile>:<infile>
copiar metadados de trilha de infile para outfile
em vez de definir -ab e -ar, você pode copiar as configurações originais da trilha, como sugere Tim Farley, com:
-acodec copy
Respostas:
Eu também recomendo ffmpeg, mas a linha de comando sugerida por John Boker tem um efeito colateral não intencional: ela recodifica o arquivo para a taxa de bits padrão (que é 64 kb / s na versão que tenho aqui, pelo menos). Isso pode dar a seus clientes uma falsa impressão sobre a qualidade de seus arquivos de som e também leva mais tempo para fazer.
Esta é uma linha de comando que divide em 30 segundos sem transcodificação:
A opção -acodec diz ao ffmpeg para usar o codec especial de "cópia" que não transcodifica. É rápido como um relâmpago.
NOTA: o comando foi atualizado com base no comentário de Oben Sonne
fonte
ffmpeg
versões recentes (pelo menos desde 0.10.6) interpretam as opções de maneira diferente com base na posição. As opções relacionadas à entrada devem aparecer antes-i ...
e as opções relacionadas à saída devem aparecer depois-i ...
. Isso significaffmpeg -t 30 -i inputfile.mp3 -acodec copy outputfile.mp3
que agora seria a resposta correta.-ss hh:mm:ss[.xxx]
. Exemplo:ffmpeg -t 30 -ss 00:00:15.500 -i inputfile.mp3 -acodec copy outputfile.mp3
cortará para 30 segundos a partir de 00h 00m 15s 500ms .ffmpeg -i inputfile.mp3 -t 30 -acodec copy outputfile.mp3
então está funcionando perfeitamenteSe você deseja REMOVER os primeiros 30 segundos (e manter o restante), use isto:
fonte
experimentar:
fonte
Este comando também funciona perfeitamente. Cortei meus arquivos de música de 20 para 40 segundos.
fonte
você pode usar mp3cut:
É no Ubuntu repo, então apenas:
sudo apt-get install cutmp3
.fonte
Você pode querer experimentar o Mp3Splt .
Já usei isso antes em um serviço C # que simplesmente envolvia o processo win32 de mp3splt.exe. Presumo que algo semelhante possa ser feito em seu cenário Linux / PHP.
fonte
Eu tenho um erro ao fazer o mesmo
A correção para mim foi:
fonte
medipack é um aplicativo de linha de comando muito simples como um wrapper
ffmpeg
.você pode conseguir cortar seu vídeo usando estes comandos:
você pode ver as opções do subcomando trim como:
você também pode explorar outras opções usando
medipack -h
você pode visitar https://github.com/srbcheema1/medipack e ver exemplos em README.
fonte
ffmpeg -i input -ss <start time> -to <end time> output
-t
que pode ser usada alternativamente, o-e
que significa suponha que eu deva cortar o próximo vídeo de 4min 36s, não preciso me preocupar em adicionar esses tempos manualmente, também forneci facilidade semelhante ao cortar os vídeos, veja os exemplos em README você entenderá porque sua CLI é mais fácil do que o simples ffmpeg. Eu concordo que não é tão poderoso, mas para uma pessoa normal é uma ferramenta útil.ffmpeg
tem a-to
opção que você-t
provavelmente faz.-vf "crop=iw*0.1:ih*0.1:0:0"