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

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

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

O que 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 mais baixa

Alguém pode me dizer o comando ffmpeg apropriado?

Responder1

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. Verifica aguia de codificaçãopara 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 pegará os primeiros fluxos de vídeo e áudio do primeiro arquivo e o primeiro fluxo de vídeo do segundo arquivo e os copiará para o contêiner de saída.

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

A verdadeira solução seria fazer algum tipo destreaming adaptativo, com MPEG-DASH ou HLS*. ffmpeg pode criar arquivos segmentados que podem ser usados ​​para streaming DASH e HLS, mas você também precisa gerar os arquivos de metainformações, etc. E você precisa de um cliente que seja compatível com DASH ou HLS.

Se isso for muito difícil de 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áveltambém foi projetado com um objetivo semelhante, mas não é usado por ninguém atualmente.

informação relacionada