Pergunta

Eu tenho uma placa de captura que captura vídeo SDI com áudio embutido. Eu tenho o código fonte para um driver Linux, o que eu estou tentando melhorar para adicionar suporte video4linux2. Minhas alterações são baseados no exemplo vivi.

O problema que eu vim acima contra é que todo o exemplo que posso encontrar negócio com apenas vídeo ou apenas áudio. Mesmo no lado do cliente, tudo parece assumir v4l é apenas de vídeo, como libavdevice das ffmpeg.

Eu preciso ter meu motorista criar dois dispositivos separados, um dispositivo v4l2 e um dispositivo alsa? Parece que isso torna o trabalho de manter áudio e vídeo em sincronia muito mais difícil.

Eu preferiria alguma forma para cada buffer passado entre o motorista e o aplicativo (através da interface mmap de v4l2) contêm um quadro, além de alguns áudio que combina-se (com respeito ao tempo) com esse quadro.

Ou talvez ter cada tampão conter um sinalizador que indica se é um quadro de vídeo, ou um pedaço de áudio. Em seguida, os selos de tempo sobre os buffers poderia ser usado para coisas sincronizar.

Mas eu não vejo uma maneira de fazer isso com a especificação API V4L2, nem eu veja alguns exemplos de aplicações preparadas para v4l2 (gstreamer, ffmpeg, transcodificação, etc) a leitura de áudio e vídeo a partir de um único dispositivo.

Foi útil?

Solução

Geralmente, a captura de parte de áudio de um dispositivo mostra-se como um dispositivo separado. É geralmente um dispositivo físico diferente (posibly partilha de um cartão), o que faz sentido. Eu não tenho certeza de quanto ajuda que é, mas é como todo o software que eu estou familiarizado com obras ...

Outras dicas

Existem alguns campos de reposição ou reservada nos buffers v4l2 que podem ser usados ??para transmitir dados de áudio ou outros a partir do driver para o aplicativo de chamada via ponteiros para buffers mmaped.

I modificado o controlador BT8x8 de usar esta abordagem para transmitir dados a partir de um cartão A / D sincronizados com o vídeo no Ubuntu 6.06.

Ele trabalhou OK, mas o esforço de manter o meu motorista modificado me levou a abandonar esta abordagem.

Se você ainda estiver interessado eu poderia cavar os detalhes.

Se você quiser que o seu motorista para jogar com gstreamer etc. um dispositivo de áudio separado geralmente é o que se espera.

A maior parte de áudio da placa de captura de v4l2 barato é apenas uma passagem analógico através de um controle de volume que requer um jumper para capturar o áudio através da entrada de linha da placa de som.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top