Eu tenho um sistema embarcado executando uma distribuição personalizada construída usando Yocto. Mais tarde, terei uma câmera USB conectada ao sistema, mas, caso contrário, gostaria de usar um arquivo .mp4 como uma câmera "fictícia".
Meu objetivo é transmitir o arquivo de vídeo por USB como um dispositivo USB UVC para um computador, para que o computador veja meu sistema Linux incorporado como uma webcam USB:
Não consigo encontrar nenhuma documentação sobre o assunto e sou um desenvolvedor bare metal c mergulhando no desenvolvimento de Linux embarcado. Gostaria de saber o que procurar e as etapas mais amplas para fazer isso funcionar. (incluindo modificações na distribuição através do Yocto.)
Obrigado.
É claro que é uma questão muito ampla. Portanto, só posso dar uma visão geral muito aproximada:
O Linux pode, desde que o seu SoC realmente possua o hardware, controlar um periférico USB para atuar como um dispositivo (em vez de host). No contexto Linux, isso é chamado de gadget USB .
Com essa funcionalidade técnica de baixo nível resolvida, é necessário oferecer também a funcionalidade lógica, ou seja, um dispositivo UVC. Felizmente, o kernel do Linux traz exatamente isso .
Com isso resolvido, você precisa considerar o aspecto dos dados. Não acho que mp4 seja algo que você possa transportar diretamente via uvc. Então, você teria que transcodificar primeiro.
Então, a questão é como obter os dados transcodificados do Userland para o kernel. O relativamente novo driver v4l2-loopback pode ser útil nisso.