Colocando uma taxa de bits mais baixa do meu fluxo de vídeo no meu contêiner mp4 atual

1

O que eu tenho é um filme em MP4 com um fluxo de vídeo e um fluxo de áudio.

O que eu quero na saída é um arquivo MP4 contendo:

  • o mesmo fluxo de vídeo
  • o mesmo fluxo de áudio
  • o mesmo fluxo de vídeo com uma taxa de bits menor

Alguém pode me dizer o comando ffmpeg apropriado?

    
por Behnam 13.08.2014 / 08:40

1 resposta

3

Em princípio, é feito assim. Codifique para diminuir a taxa de bits sem áudio. Claro, isso pressupõe que você tenha vídeo H.264. Consulte o guia de codificação para obter mais informações.

ffmpeg -i input.mp4 -c:v libx264 -b:v 700k -an lower.mp4

Em seguida, mescle seus arquivos:

ffmpeg -i input.mp4 -i lower.mp4 -c copy -map 0:v -map 0:a -map 1:v output.mp4

Isso fará com que os primeiros fluxos de vídeo e áudio do primeiro arquivo e o primeiro fluxo de vídeo do segundo arquivo sejam copiados para o contêiner de saída.

Então, novamente, como @trikly menciona, não há vantagem real em fazer isso. Especialmente desde que você marcou sua pergunta com "streaming de vídeo", observe que, adicionando outro fluxo dentro de um contêiner, você aumenta o tamanho do arquivo que o cliente precisa baixar, em vez de oferecer apenas uma representação menor, que é o que você normalmente deseja fazer para ambientes com largura de banda restrita.

A solução real seria fazer algum tipo de streaming adaptativo , seja com MPEG-DASH ou HLS *. O ffmpeg pode criar arquivos segmentados que podem ser usados para fluxo de DASH e HLS, mas você também precisa gerar os arquivos de informações meta, etc. E você precisa de um cliente que seja habilitado para DASH ou HLS.

Se for muito para configurar, você deve simplesmente oferecer o vídeo em dois formatos diferentes, cada um com seu próprio link.

* Codificação de Vídeo Escalável também foi projetado com um objetivo semelhante, mas não é realmente usado por ninguém hoje em dia .

    
por 13.08.2014 / 11:48