2009-05-27 46 views
2

我有一個捕獲卡可以捕獲嵌入音頻的SDI視頻。我有一個Linux驅動程序的源代碼,我正在嘗試增加video4linux2支持。我的改變是基於vivi的例子。是否可以使用v4l2從同一設備讀取音頻和視頻?

我碰到的問題是,我可以找到的所有例子只處理視頻或只處理音頻。即使在客戶端,一切似乎都認爲v4l只是視頻,就像ffmpeg的libavdevice一樣。

我是否需要讓我的驅動程序創建兩個獨立的設備,一個v4l2設備和一個alsa設備?看起來,這使得保持音頻和視頻同步的工作更加困難。

我更喜歡某種方式爲驅動程序和應用程序之間傳遞的每個緩衝區(通過v4l2的mmap接口)包含一個幀,加上一些與該幀匹配(相對於時間)的音頻。

或者也許每個緩衝區都包含一個標誌,指示它是視頻幀還是音頻塊。然後可以使用緩衝區上的時間戳來進行同步。

但是我沒有看到用V4L2 API規範做到這一點的方法,也沒有看到從單個設備讀取音頻和視頻的支持v4l2的應用程序(gstreamer,ffmpeg,轉碼等)的任何示例。

回答

2

通常,設備的音頻捕獲部分顯示爲單獨的設備。它通常是一個不同的物理設備(可以共享一張卡),這很有意義。我不確定這有多少幫助,但這是我熟悉的所有軟件的工作原理...

+0

在這種情況下是否有可能同步視頻和音頻? – 2012-01-13 07:14:09

0

v4l2緩衝區中有一些備用或保留字段,可用於傳遞音頻或從驅動程序到調用應用程序的其他數據通過指向mmaped緩衝區的指針。

我修改了BT8x8驅動程序,使用這種方法將數據從A/D卡同步到Ubuntu 6.06上的視頻。

它工作正常,但維護我的修改驅動程序的努力使我放棄了這種方法。

如果你還有興趣,我可以挖掘細節。

如果你想讓你的驅動程序和gstreamer等一起玩,一個單獨的音頻設備通常是預期的。

大多數便宜的v4l2採集卡的音頻只是一個模擬通過音量控制需要跳線通過聲卡的線路輸入捕捉音頻。

相關問題