日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

v4l打开video设备 ,执行VIDIOC_DQBUF,出现Resource temporarily unavailable 问题

發布時間:2023/12/18 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 v4l打开video设备 ,执行VIDIOC_DQBUF,出现Resource temporarily unavailable 问题 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

如果你在執行VIDIOC_DQBUF突然提示以下錯誤:

error: VIDIOC_DQBUF: Resource temporarily unavailable

那么很可能是你使用非阻塞方式打開設備文件的造成的。

Resource temporarily unavailable是一種EAGAIN的錯誤。EAGAIN是較常見的一種錯誤(比如用在非阻塞操作中),從字面上來看,是提示再試一次。這個錯誤經常出現在當應用程序進行一些非阻塞(non-blocking)操作(對文件或socket)的時候。例如,以O_NONBLOCK的標志打開文件/socket/FIFO,如果你連續做read操作而沒有數據可讀。此時程序不會阻塞起來等待數據準備就緒返回,read函數會返回一個錯誤EAGAIN,提示你的應用程序現在沒有數據可讀請稍后再試。(其實這樣的錯誤一改是可以會略才對,也只有用非阻塞方式打開文件時會出現此類錯誤)。

因此建議 V4L2編程中使用阻塞方式打開一個設備文件,除非你能保重開始采集數據時隊列里的n塊緩存已有數據存在。


/

1、建議 V4L2編程中使用阻塞方式打開一個設備文件,除非你能保重開始采集數據時隊列里的n塊緩存已有數據存在。

倘若使用非阻塞,則會出現BUG

VIDIOC_DQBUF failed.

: Resource temporarily unavailable

?

2、視頻格式化測試成功代碼

struct v4l2_format fmt;//設置獲取視頻的格式

memset( &fmt, 0, sizeof(fmt));

fmt.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;//視頻數據流類型,永遠都是V4L2_BUF_TYPE_VIDEO_CAPTURE

fmt.fmt.pix.pixelformat = V4L2_PIX_FMT_YUYV;//視頻源的格式為JPEG或YUN4:2:2或RGB

fmt.fmt.pix.width = 600;//設置視頻寬度

fmt.fmt.pix.height = 480;//設置視頻高度

fmt.fmt.pix.field = V4L2_FIELD_INTERLACED;//具體不知道干嘛的,貌似重要

if (ioctl(fd, VIDIOC_S_FMT, &fmt) < 0)//使配置生效

{

printf("set format failed\n");

return -1;

?

?

/* 待續?*/

}



總結

以上是生活随笔為你收集整理的v4l打开video设备 ,执行VIDIOC_DQBUF,出现Resource temporarily unavailable 问题的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。