我有捕获SDI具有嵌入的音频捕获卡。我有一个Linux驱动程序,我试图增强添加video4linux2支持源代码。我的变化是基于维维例子。

我碰到的问题是,所有我能找到的例子只处理视频或纯音频。即使在客户端,一切似乎假定为v41只是视频,像FFmpeg的libavdevice。

我需要让我的司机创建两个单独的设备,一个V4L2设备和ALSA设备?看起来这使得保持音频和视频的同步更加困难的工作。

我宁愿为驾驶员和应用程序之间传递(通过用v412的MMAP接口),每个缓冲器含有一个帧,再加上一些音频匹配起来(相对于时间)与该帧某种方式。

或者,也许有每个缓冲器包含一个标志,指示它是否是视频帧或音频的块。然后在缓冲器中的时间标记可以被用来东西同步。

但我不明白的方式与V4L2 API规范要做到这一点,也没有我看到启用用v412的应用程式(gstreamer的,FFMPEG,转码,等等)的任何实例中,从一个单一的装置读取音频和视频两者。

有帮助吗?

解决方案

一般地,设备的音频捕获部分显示为一个单独的设备。它通常是在不同的物理设备(posibly共享卡),这是有道理的。我不知道有多少帮助,是的,但它是如何将所有的软件,我所熟悉的作品...

其他提示

有在可用于从驾驶员通过指针调用应用程序mmaped缓冲器通过音频或其它数据的用v412缓冲器一些备用的或保留的字段。

我修改BT8x8驱动程序使用这种方法来从同步到视频上6.06的A / d卡传递数据。

它的工作好,但我保持驾驶改进的努力,使我放弃了这种做法。

如果你仍然有兴趣,我可以挖掘出细节。

如果你希望你的驱动程序在GStreamer等发挥了独立的音频设备一般的期望是什么。

最便宜用v412采集卡的音频的仅是模拟通过与需要跳线来捕获通过声卡的线路输入音频音量控制。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top