【发布时间】:2009-05-27 17:37:35
【问题描述】:
我有一张采集卡,可以采集带有嵌入音频的 SDI 视频。我有一个 Linux 驱动程序的源代码,我正在尝试增强它以添加对 video4linux2 的支持。我的更改基于 vivi 示例。
我遇到的问题是,我能找到的所有示例都只处理视频或音频。即使在客户端,一切似乎都假设 v4l 只是视频,就像 ffmpeg 的 libavdevice。
我是否需要让我的驱动程序创建两个单独的设备,一个 v4l2 设备和一个 alsa 设备?这似乎使保持音频和视频同步的工作变得更加困难。
我希望在驱动程序和应用程序之间传递的每个缓冲区(通过 v4l2 的 mmap 接口)以某种方式包含一个帧,加上一些与该帧匹配(相对于时间)的音频。
或者可能让每个缓冲区包含一个标志,指示它是视频帧还是音频块。然后缓冲区上的时间戳可用于同步。
但我没有看到使用 V4L2 API 规范的方法,也没有看到任何支持 v4l2 的应用程序(gstreamer、ffmpeg、转码等)从单个设备读取音频和视频的示例。
【问题讨论】: