Esta pergunta já tem uma resposta aqui:
Atualmente, estou convertendo arquivos flash .flv para arquivos .webm e .mp4 para serem usados com um player de vídeo HTML5.
_
Eu uso esse comando ffmpeg para WEBM: ffmpeg -i filename.flv -vcodec libvpx -acodec libvorbis filename.webm
que funciona muito bem e o tamanho do arquivo permanece relativamente o mesmo (imporatante).
_
Para MP4, estou usando o seguinte: ffmpeg -i filename.flv -sameq -ar 22050 filename.mp4
Ele se converte em .mp4 e evita qualquer perda de qualidade, mas o tamanho do arquivo quase triplica.
Que fórmula ffmpeg poderia ser usada para converter para MP4 sem perder muita qualidade e impedir um tamanho de arquivo muito maior?
mpeg4
. De acordo com a saída daffmpeg --help muxer=mp4
minha máquina, o ffmpeg usa o h264 como codec de vídeo padrão do mp4.Este comando altera apenas o contêiner sem recodificar
fonte
for %%a in ("*.flv") do ffmpeg -i "%%a" -codec copy "%%~na.mp4"
, em seguida, executar CONVERT.BAT na pasta com arquivos * .flv-codec copy
para um arquivo .mp4 só funciona em casos muito raros, onde o áudio e o vídeo já estão codificados com H.264 e AAC. Consulte superuser.com/a/1009539/390946 e addpipe.com/blog/flv-to-mp4 .avconv
effmpeg
são essencialmente a mesma coisa. [recentemente, há ALGUMA DIVISÃO, mas não há muito o que escrever, se você compilar o seu próprioffmpeg
[o fornecido nos repositórios do Ubuntu, por exemplo, é VELHO e sofre com esse tamanho de vídeo não é um acordo blá blá blá [basicamente tenta para dizer a você que o vídeo tem proporções erradas], mas se você se incomodar em ler offmpeg
guia de compilação e compilá-lo no git, ele não terá nenhum dos problemas das versões mais antigas que aparecem na maioria dos sistemas operacionais. o aviso de depreciação a que se refereavconv
está dizendo que eles criaram um utilitário mais novo para tentar substituirffmpeg
, mas é tão amplamente usado que, mesmo que tentassem cortá-lo, todos estaríamos criando linksavconv
paraffmpeg
de qualquer maneira, para que eles não parem de trabalhar e o abandonem.]]Não é uma coisa ruim de usar
avconv
. Acabei de ver a resposta mencionando o aviso de depreciação, que é essencialmente uma mensagem vazia, deveria ser mais uma alternativa ao ffpmeg, você pode tentar o avconv, que é mais verdadeiro no caso aqui.é realmente o mesmo que
essencialmente no primeiro você está usando as opções de mãos mais curtas e no segundo é a variedade mais escrita.
TAMBÉM
-map 0
está se referindo às faixas de áudio; portanto, se estiver usando algo parecido com omp4a
que pode lidar com várias faixas de áudio, você pode deixar isso para copiar todos os fluxos de áudio no arquivo resultante. Isso é necessário apenas se você usar um codec que não suporta várias faixas de áudio no mesmo arquivo, então você deseja mapear o áudio necessário e não todos. É claro que se você tentar minimizar o espaço usado, poderá especificar apenas um para tentar extrair um pouco do tamanho do arquivo [o áudio é talvez um 1/3 do tamanho da faixa de vídeo [e isso é generoso]].-c:v = codec(video)
so:-c:v libx264
é o mesmo que usar:-vcodec libx264
FYI; mesmo com este exemplo:-c:v copy = -vcodec copy
além disso, para os FLVs, tenha cuidado, o arquivo flv é o mesmo que um avi, pois é um contêiner que pode conter qualquer número de codecs para vídeo ou áudio. Você deseja primeiro usar o utilitário de inspeção de mídia de sua escolha para ver o que é usado no próprio arquivo antes de optar por copiar o fluxo de vídeo e / ou áudio ou se você deseja transmiti-lo do que quer que seja para algo novo. Portanto, o comando que funciona melhor para um FLV pode não ser o mesmo para outro FLV [é claro que, geralmente, se você receber vários FLVs da mesma fonte, eles serão codificados da mesma maneira, mas isso nunca é uma garantia].
O fato de não tentar escolher nada funcionou na pesquisa na web e queria ajudar a esclarecer um pouco as coisas para as pessoas.
Novamente, como esta resposta indica a resposta abaixo, essa mensagem SIM, executando o ffmpeg, sempre postará essa mensagem, é essencialmente oca, pois esses dois utilitários ainda são realmente o mesmo utilitário com pouca diferença. Em quase todos os casos, você deve obter exatamente os mesmos resultados usando qualquer um dos comandos. Isso não necessariamente resultará em uma re-transcodificação completa, por quê? A, se não for necessário, poupa muito tempo e B, se você transcodificar um arquivo que já foi compactado em um codec de vídeo, está executando essencialmente uma rotina de compactação contra algo que já está compactado e sempre resultará em menos qualidade que a fonte. A maioria dos codecs mais novos são compatíveis entre si [nem todos], como por exemplo, um flv poderia tecnicamente ser um MP4 dentro de um wrapper FLV, já que FLVs como AVIs são apenas recipientes de outros codecs. Assim, depende do que a fonte flv possui para o codec de vídeo e ausio comparado com o que você está convertendo para saber se precisa ser transcodificado. Se, no FLV, eles usassem o vídeo H264 MP4 e o MP4a para áudio, você não precisaria recodificar novamente o que seria necessário copiá-lo e ajustar os cabeçalhos dos arquivos para que sejam lidos como um verdadeiro MP4 em vez de um vídeo MP4 dentro de um arquivo FLV.
fonte
De acordo com este guia , o comando adequado para converter FLV para MP4 sem qualquer recodificação AV é o seguinte:
Funcionou perfeitamente para mim em todos os casos com vídeo AVC e áudio AAC ou MP3.
fonte
Ao usar o ffmpeg, recebi um aviso de reprovação para usar o avconv. Usando o avconv, obtive bons resultados:
Leia
man avconv
para mais informações.fonte
ffmpeg
em si não é preterido . A razão pela qual parece bom é porque você especifica o codificador x264 que possui boas configurações padrão de qualidade.Sugiro que você crie um script de shell para o chamado
video_flv_to_mp4
com o seguinte conteúdo:Em seguida, execute-o assim:
Ele fornecerá um arquivo video.flv.mp4.
fonte
-sameq
não é mais uma opção válida para o ffmpeg. Também não significa "mesma qualidade". Veja também este post .