Streaming de mp4 com ffmpeg


16

Preciso criar um feed que tenha dois fluxos - webm e mp4 - para que ele seja compatível com todos os players de vídeo HTML5. O fluxo do webm funciona perfeitamente. No entanto, ao tentar acessar o fluxo mp4, o servidor cospe o seguinte erro:

Sat Mar  9 23:21:54 2013 muxer does not support non seekable output

Aqui está a parte do arquivo ffserver.conf que lida com o fluxo mp4:

<Stream channel1.mp4>       # Output stream URL definition
   Feed feed1.ffm              # Feed from which to receive video
   Format mp4

   # Audio settings
   AudioCodec libmp3lame
   AudioBitRate 64             # Audio bitrate

   # Video settings
   VideoCodec libx264
   VideoSize 560x320           # Video resolution
   VideoFrameRate 25           # Video FPS
   AVOptionVideo flags +global_header  # Parameters passed to encoder
                                       # (same as ffmpeg command-line parameters)
   AVOptionVideo cpu-used 0
   AVOptionVideo qmin 10
   AVOptionVideo qmax 42
   AVOptionVideo quality good
   AVOptionAudio flags +global_header
   PreRoll 15
   StartSendOnKey
   VideoBitRate 400            # Video bitrate
</Stream>

Pelo que pude encontrar, algumas pessoas estão dizendo que o mp4 simplesmente não pode ser transmitido. Não tenho anexo ao mp4, exceto pelo fato de ter a impressão de que você precisava do mp4 para transmitir vídeo para o iPhone com um player de vídeo HTML5. Se não for esse o caso, avise-me e mudarei de bom grado para algo que seja melhor com o streaming ffmpeg.


3
Você realmente não precisa transmitir MP4. Para vídeo HTML5 H.264 / MP4, deve ser suficiente codificar o arquivo de vídeo -movflags faststartou tratá-lo com qt-faststart, e aponte para o arquivo MP4 na <video>tag. Seu servidor precisa de um módulo de streaming H.264 para permitir que o cliente procure. Ou você tem comentários ao vivo?
slhck

Meu cliente está exigindo que isso seja transmitido - ele deseja desativar completamente a busca por clientes. Está sendo transmitido a partir de um arquivo (o arquivo no servidor está no formato webm, se isso faz diferença). Não posso simplesmente ocultar os controles, porque os iPhones forçam a exibição dos controles.
Fibericon

@slhck: estou transmitindo a entrada da webcam ao vivo com mp4, mas não consigo. Funciona quando eu uso flv. É possível usar o mp4 para transmissão ao vivo?
precisa

@ JohnQualis Não tenho certeza se é possível com o ffserver. Mas o contêiner não deve importar realmente - os codecs são os mesmos para FLV e MP4 (H.264 e AAC).
slhck

@sklhck: Eu consegui trabalhar com flv usando ffserver, mas não com mp4. A maioria dos navegadores da web suporta mp4. Eu preciso de uma coisa que funciona em iPhone, Android e e todos os navegadores famosos e que sua h264 :) E eu estou streaming de uma webcam ao vivo
John Qualis

Respostas:


6

O artigo HTML 5 e vídeo compatível com iPad do seu próprio site , atualizado em 12 de novembro de 2014, possui as seguintes informações:

imagem

O artigo recomenda o uso do MP4 como uma boa solução com uma versão recente o suficiente do ffmpeg, usando a codificação H.264 com o AAC.

Sugiro ler o artigo com atenção aos detalhes: ele contém um exemplo de arquivo HTML que funcionará em todos os principais navegadores, bem como um exemplo de comando FFmpeg usado para converter vídeos em arquivos .mp4 para que eles sejam transmitidos corretamente.


é sobre streaming "ao vivo"?
Markus Siebeneicher

@MarkusSiebeneicher: Sim, principalmente.
harrymc

Ainda tenho problemas "ao vivo" de streaming de mp4 com ffmpeg, pois parece não ser "procurável". Eu canalizo a saída do ffmpeg diretamente para o navegador, com o webm ele funciona imediatamente. Usando o formato mp4, meio que diz que não é procurável ... Então, eu realmente me pergunto o que fazer para tornar o mp4 "ao vivo" possível, onde nenhum vídeo é salvo como arquivo diretamente (o que o tornaria procurável).
Markus Siebeneicher

@ MarkusSiebeneicher: Sugiro fazer esta pergunta em um novo post com detalhes.
harrymc

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.