Transmissão ao vivo com html5 - mais como o Youtube faz isso?

6

Então eu tenho um Wii U agora e testei a transmissão do Youtube Live ... e funcionou perfeitamente. Uau, eu pensei, eu tenho que descobrir que tipo de codec, formato de contêiner, protocolo, etc é usado, mas eu meio que falhei nessa tarefa.

Eu tentei usar o Chrome para acessar a versão do Youtube Live, mas antes que uma tag <video> me desse esse tipo de informação em seu parâmetro source poderia aparecer no DOM, ela me disse que o navegador não suporte a qualquer um dos formatos de vídeo disponíveis. Eu tentei o mesmo usando diferentes navegadores (Opera, FF, IE9). Desativando o Flash, forçando assim o player html5 a entrar. Eu sempre recebi a mesma mensagem.

Uau, então o fluxo de HTML5, até agora, só funciona no meu Wii U ... E provavelmente os dispositivos IOS, mas eu não tenho nenhum desses.

Ok, basicamente, o que eu gostaria de saber: como eles percebem o <video> de streaming ao vivo? Qual formato de contêiner, codecs, etc é usado? Eu não consigo acessar essa informação com o meu conhecimento.

E algumas dicas sobre como replicar o formato. Eu não estou tentando transmitir algo para o mundo inteiro - eu estou tentando apenas transmitir algo para o meu Wii U, qualquer coisa diferente não faria muito sentido nesta fase. Eu basicamente só preciso de qualquer coisa que aceite uma entrada do DirectShow no Windows.

    
por sinni800 30.11.2012 / 23:18

1 resposta

7

O Youtube usa o método HLS "Http Live Streaming" que a Apple inventou e está tentando padronizar.

Eu repliquei esse método usando uma linha de comando elaborada para o VLC e um servidor web HTTP e ele funcionou no Wii U.

Aqui está a linha de comando:

"c:\program files (x86)\videolan\vlc\vlc" -I rc dshow:// vdev="XSplitBroadcaster" adev="XSplitBroadcaster" size="1280x720" --sout=#transcode{width=1280,height=720,fps=25,vcodec=h264,vb=256,venc=x264{aud,profile=baseline,level=30,keyint=30,ref=1},acodec=mp3,ab=96,channels=2}:std{access=livehttp{seglen=10,delsegs=true,numsegs=5,index=C:\inetpub\wwwroot\stream\stream.m3u8,index-url=http://dennis/stream/stream-########.ts},mux=ts{use-key-frames},dst=C:\inetpub\wwwroot\stream\stream-########.ts}

Aqui, para uma configuração rápida, é o código html que acessa este fluxo:

<!doctype html>
<html>
<head></head>
<body>
<video width="320" height="240" controls="controls">
    <source src="/stream/stream.m3u8" type="application/x-mpegURL" />
</video>
</body>

</html>

Quem usar isso, você terá que alterar todas as variáveis lá. Ele usa "arquivos de fragmentos" que são colocados no wwwroot do servidor da Web, que podem ser transmitidos por um iDevice ou um Wii U.

Pessoalmente, acho que isso teria o melhor lugar em um ramdisk, porque os dados mudam rapidamente e não há muitos dados ao mesmo tempo.

    
por 02.12.2012 / 15:16