GPU acelerou a decodificação de vídeo em um navegador. É possível?

8

Digamos que eu tenho um Rpi (B +) e quero que ele atue como Kiosk, onde um vídeo será reproduzido em um loop em tela cheia. O vídeo mudará programaticamente, por isso preciso de uma API para controlá-lo. Já fiz isso antes, em máquinas x86, sem problemas, em um aplicativo baseado na Web (Javascript e HTML5).

O problema que estou tendo é que nenhum navegador (aparentemente) está usando a GPU para decodificar o vídeo. O navegador da Web que suporte "Decodificação de vídeo acelerada por hardware" não pode reproduzir vídeos. Acabei de instalar o Raspbian (NOOBS) e o navegador deve reproduzir pelo menos o mesmo vídeo que no vídeo.

O Omxplayer executa bem, mas pisca quando faz um loop e mostra algum texto ("Procurar ...").

Como esse seria um projeto que envolveria cerca de 400 Raspberry PI (se puder fazer o que eu preciso) em diferentes locais, eu realmente preciso de uma solução sólida.

Existe uma maneira de ter um vídeo em loop, acelerado por gpu, em um navegador no RPi?

EDIT: Tentei vídeos mp4 / h.264 incorporados com uma etiqueta comum. Todo navegador falha ao reproduzir o vídeo. Epiphany e Chromium mostram apenas uma "área" preta e os controles. Nenhum vídeo. Midori recebe alguns quadros, mas o processador é superior. O YouTube / Vimeo também falha na reprodução.

EDIT 2: Depois de fazer uma nova instalação e definir a memória da GPU para 128 MB, em vez dos 64 MB padrão, consegui reproduzir um vídeo sem problemas no Epiphany. A CPU não atingiu 100% (70% -95%). Embora, quando tentei um vídeo em full hd, o desempenho diminuísse bastante (<1 FPS), mas a CPU estivesse em apenas 50%, o gargalo provavelmente era a memória. Vou escolher um RPI2 e testá-lo.

Mario Cesar
fonte
Você precisa ser mais específico sobre exatamente qual é a fonte de vídeo aqui - como é codificada e como foi incorporada. "Decodificação de vídeo acelerada por hardware" Tenho certeza de que não se aplica a todos os métodos de codificação possíveis, pois a própria GPU não pode fazer isso.
goldilocks
Vou pegar qualquer formato de vídeo / codec que funcione sem problemas em um navegador da web. A fonte é apenas um arquivo, a maneira como o arquivo chega ao disco é outra história.
Mario Cesar
O que mais me incomoda é que eles podem reproduzir um vídeo em um navegador e, teoricamente, o mesmo vídeo e o mesmo navegador não podem na minha máquina. O problema pode estar no uso do RPI 1 (B +) e eles podem estar usando um RPI 2?
Mario Cesar
Não havia 2 naquele momento. Se você realmente acredita que duplicou o caso de teste e ele não está à altura, provavelmente está sem sorte. Eu pensaria que .h264 reproduzido via HTML5 no Raspbian epiphanyenvolveria "decodificação de vídeo acelerada por hardware", se for o caso.
goldilocks
11
Tente usar o nginx para hospedar seus arquivos de vídeo e, em seguida, você poderá incorporar o src como uma tag de vídeo HTML5 no navegador. Eu pensei que a renderização de hardware foi resolvida há muito tempo. Eu não uso o X, portanto, nenhum comentário adicional. Tenho certeza que você pode desativar o OSD no omxplayer. A parte do flicker é uma pena, porém, não sei como superar isso com omx. Tem a ver com o driver recarregar e rebuffering de arquivos.
Piotr Kula

Respostas:

5

Sim, é possível, eu iniciei este projeto há algum tempo, mas tive que parar por causa do tempo insuficiente.

Este é o melhor resultado que pude obter (1080p): https://youtu.be/fVM1GRDhXGw . É baseado nesta biblioteca aberta: https://github.com/carlonluca/pi . Mais algumas informações aqui .

A demonstração usa essa biblioteca com o WebKit1 no QtWebKit, tudo rodando sem o X11. Parece muito mais difícil fazê-lo com o WebKit2. Infelizmente a qualidade não foi perfeita, não sei se é possível melhorá-la. No entanto, não vejo por que usar um navegador, se o desejo é apenas reproduzir um vídeo em tela cheia.

Observe que sou o autor do projeto, por isso estou relatando isso apenas porque o conheço. Pode haver um milhão de outras abordagens.

Luca Carlon
fonte
Obrigado por compartilhar! Você gostaria de se juntar ao nosso próximo blog da comunidade :)
Ghanima