Tenho dificuldade em descobrir como cortar um arquivo com extensão avconv
. Aqui está o comando que eu uso:
avconv -ss 52:13:49 -t 01:13:52 -i RR119Accessibility.wav RR119Accessibility-2.wav
Mas não funciona. Como resultado, recebo o arquivo inteiro. Bem, quase todo o arquivo. De alguma forma, o arquivo resultante tem duração 1:16:31
em vez de 1:17:23
. Também acredito que executei este comando de todas as maneiras possíveis: with -ss
e -t
after -i
, -t
especificando o ponto final, com arquivos mp3, especificando o codec de áudio, with ffmpeg
. Estou fazendo errado?
AtualizaçãoGraças a bodhi.zazen
isso funciona (corrigi o deslocamento e a duração informados por mp3splt-gtk
, eles estavam errados por um motivo ou outro, e o objetivo era cortar o arquivo mp3)
avconv -i RR119Accessibility.mp3 -ss 00:52:08 -t 00:01:08 RR119Accessibility-2.mp3
Mas isso não acontece:
avconv -ss 00:52:08 -t 00:01:08 -i RR119Accessibility.mp3 RR119Accessibility-2.mp3
O arquivo resultante começa em 00:52:08 e vai até o final do arquivo original. Eu pensei -ss
e -t
estou relacionado ao arquivo de entrada se especificado antes -i
. E para gerar o arquivo de outra forma. Alguém poderia explicar isso?
Responder1
Acho que o problema original estava na formatação do seu carimbo de data/hora.
O formato é HH:MM:SS
Não tenho certeza se estou entendendo sua pergunta sobre a ordem das opções. Eu não acho que isso importe, desde que -i seja seguido pelo nome do arquivo de entrada e -ss HH:MM:SS siga meu -t HH:MM:SS
O -ss HH:MM:SS é o ponto de partida e -t HH:MM:SS é a duração
então -ss 00:01:00 -t 00:05:00 começaria na marca de um minuto e duraria 5 minutos.
No meu sistema, usando ffmpeg, a ordem não importa (você pode especificar a hora ou o arquivo de entrada em qualquer ordem, desde que -ss seja seguido pela duração (-t) )
Responder2
O problema vem do significado diferente de -ss
depender de onde ele está na linha de comando. É uma herança da época em que avconv
ainda fazia parte do ffmpeg
projeto e acredito que esteja sendo corrigido nas versões mais recentes.
Antigamente, se você dissesse algo como
ffmpeg -ss 5 -i input
O que você quis dizer foi "pular para a marca de 5 segundos no arquivo e começar a ler lá".
Mas se você disse
ffmpeg -i input -ss 5
Você quis dizer "abrir o arquivo de entrada e pular todos os dados até a marca de cinco segundos".
Como você pode entender, a primeira abordagem irá falhar com bastante frequência, porque você está pulando o arquivo sem lê-lo. Funciona bem apenas em arquivos que possuem carimbos de data e hora, permitindo que você leia o quadro e saiba se já foi longe demais ou não.
Basicamente, a maneira como funcionava no ffmpeg era "Adivinhe a taxa de bits no primeiro segundo e depois assuma que todos os outros segundos são iguais". Mas, claro, nem todos os segundos são iguais, e se estamos falando de 52 horas de “deriva” o erro pode ser bem grande.
Portanto, se você estiver usando a versão inicial pós-divisão do avconv, você deve sempre colocar -ss
depois do arquivo que está sendo lido. Mas nas versões mais recentes (até onde sei) esse bug foi corrigido.
Responder3
Tentar:
avconv -i RR119Accessibility.wav -ss 52:13:49 -t 01:13:52 RR119Accessibility-2.wav
As opções de ffmpeg e avconv são sensíveis à posição.
No seu exemplo, o ffmpeg começa a ler o arquivo e a gerar a saída de timestamp -ss
(que o ffmpeg funciona bem no meu sistema e o avconv não, chame-o de uma espécie de regressão).
No exemplo que dei aqui, avconv (ou ffmpeg) procura primeiro o deslocamento correto e depois inicia a leitura e a saída. Isso funciona para ambos.
Você pode encontrar mais documentação sobre avconv emhttp://libav.org esses caras criaram o ffmpeg e também são responsáveis pela versão extremamente antiga do ffmpeg no Ubuntu.
O REAL ffmpeg não está nos repositórios do Ubuntu, mas em um PPA:
ppa:jon-severinsson/ffmpeg
Você pode encontrar mais documentação sobre o ffmpeg emhttp://ffmpeg.org
Considere as páginas de manual desatualizadas