Como posso converter some.flv
ou some.avi
ou some.wmv
com FFmpeg para ter a certeza que este vídeo será reproduzido e pesquisável no JW Player?
fonte
Como posso converter some.flv
ou some.avi
ou some.wmv
com FFmpeg para ter a certeza que este vídeo será reproduzido e pesquisável no JW Player?
Esta é uma resposta para o último comentário feito por você @abrahab.
Você não precisa de mp4box
um arquivo para poder transmiti-lo via nginx. O módulo de streaming MP4 cuida dele independentemente do posicionamento dos átomos de moov ( mp4box
muda o átomo de moov para o início do arquivo).
Agora, para o erro do servidor 500, você está usando a opção "-frag" no mp4box? O módulo de streaming MP4 não pode ler arquivos MP4 fragmentados. Um bom uso mp4box
para pseudo streaming é intercalar os vídeos para uma melhor busca. A mudança de átomos de Moov é uma vantagem adicional.
Eu sempre faço isso em mp4box
um arquivo codificado em FFmpeg
MP4Box -add MyVideo.mp4 -isma Myvideo-box.mp4
Isso também intercalará o arquivo MP4 em 500 milissegundos de pedaços por padrão.
MP4Box -isma -inter 500 Myvideo.mp4
H.264 em MP4
Geralmente, você deseja criar um vídeo x264 em um contêiner MP4. Esta opção é suportada por basicamente qualquer dispositivo e navegador.
O seguinte deve ser suficiente. Certifique-se de substituir o nome da entrada e as opções de CRF. O último define a qualidade, onde os valores sãos variam de 19 a 25 - menor significa melhor qualidade, mas também maior taxa de bits:
Você também pode usar o Handbrake para codificação, se desejar da GUI.
Usando a
faststart
opçãoAgora, o que você precisa fazer é mover o átomo MOOV do contêiner MP4 para o início. Esse átomo (em essência, uma unidade de dados no contêiner MP4) contém metadados importantes sobre os próprios fluxos de vídeo / áudio.
-movflags faststart
deve fazer exatamente isso.Se sua versão do FFmpeg não tiver essa opção, considere a atualização. Se você não pode atualizar, você pode conseguir o mesmo com qualquer uma das ferramentas abaixo:
QTIndexSwapper , um aplicativo Adobe AIR
MP4Box , de código aberto e gratuito, executando um comando semelhante ao seguinte, onde você pode alterar o intervalo (aqui, 500):
qt-faststart no Python , que funciona em qualquer lugar onde o Python está instalado.
É sobre isso.
Controle de taxa de bits / qualidade
Agora, é claro, para o streaming, você pode realmente restringir a taxa de bits para permanecer dentro de certos limites. Você pode ler mais sobre isso no meu post sobre métodos de controle de taxas .
Por exemplo, adicionando
-maxrate 2M -bufsize 2M
às opções de codificação, você limita a codificação a 2 Mbit / s, o que pode ser suficiente para vídeo 720p. A taxa de bits necessária dependerá, é claro, de quão complexo é o conteúdo. Isso leva algumas tentativas e erros.fonte
ffmpeg -i 1.flv -vcodec libx264 -f mp4 -an -g 1 -f mp4 -g 30 -level 3 new.mp4
issomp4box
e o mp4 não pode procurar e o relatório nginx500 internal server error
para o parâmetro start mais que0
. quando o vídeo é codificado sem-vcoded libx264
(codificador padrão do mp4) todo o arquivo de trabalho (mas quality! sick!) :( (desculpe, agora, não é permitido que você responda com um-movflags faststart
exatamente o que eu precisavaVocê pode simplesmente converter um AVI ou MP4 não streamable, também sem recodificar tudo, fazendo o seguinte:
Não há necessidade de recodificar nada, porque apenas o átomo moov precisa ser movido.
fonte
Você pode tentar isso com ffmpeg:
fonte
-acodec pcm_s16le
(erroCould not write header for output file #0 (incorrect codec parameters ?): Invalid argument
:). Um bom motivo, como um rascunho da IETF, para a escolha exata desses parâmetros também parece estar ausente.