攝像頭錄像源碼
1. android MediaRecorder調用攝像頭為什麼攝像出來都是橫屏呢
recorder.setPreviewDisplay(surfaceHolder.getSurface()); 修改下這句試試。
2. 如何控制用Delphi攝像頭
1、微方攝像頭軟體是一款可以監控使用的軟體,可以後台使用,但是必須自己設置下;
2、可以通過編程的方式製作後台錄像文件,但是頌明效果很好的源碼不是很好找,需要尺差源碼的話,可野困告以提供郵箱發給你,我只有delphi的。
3、另外木馬軟體也有這樣的功能,但是必須手動控制,自動後台就不是你要的效果了。
3. C# 代碼驅動攝像頭
using System; using System.Runtime.InteropServices; using System.Drawing; using System.Drawing.Imaging; using System.Data.SqlTypes; namespace CamVision1 { /// 《summary》 /// 攝像顯示區域數據結構設置 /// 《/summary》賣鍵 public struct CamStruct { public IntPtr handle; public int left; public int top; public int width; public int height; } /// 《summary》 //知配肢/ 攝像頭驅動程序類搭世 /// 《/summary》 public class Cam { private const int WM_USER = 0x400; private const int WS_CHILD = 0x40000000; private const int WS_VISIBLE = 0x10000000; private const int WM_CAP_START = WM_USER; private const int WM_CAP_STOP = WM_CAP_START + 68; private const int WM_CAP_DRIVER_CONNECT = WM_CAP_START + 10; private const int WM_CAP_DRIVER_DISCONNECT = WM_CAP_START + 11; private const int WM_CAP_SAVEDIB = WM_CAP_START + 25; private const int WM_CAP_GRAB_FRAME = WM_CAP_START + 60; private const int WM_CAP_SEQUENCE = WM_CAP_START + 62; private const int WM_CAP_FILE_SET_CAPTURE_FILEA = WM_CAP_START + 20; private const int WM_CAP_SEQUENCE_NOFILE = WM_CAP_START + 63; private const int WM_CAP_SET_OVERLAY = WM_CAP_START + 51; private const int WM_CAP_SET_PREVIEW = WM_CAP_START + 50; private const int WM_CAP_SET_CALLBACK_VIDEOSTREAM = WM_CAP_START + 6; private const int WM_CAP_SET_CALLBACK_ERROR = WM_CAP_START + 2; private const int WM_CAP_SET_CALLBACK_STATUSA = WM_CAP_START + 3; private const int WM_CAP_SET_CALLBACK_FRAME = WM_CAP_START + 5; private const int WM_CAP_SET_SCALE = WM_CAP_START + 53; private const int WM_CAP_SET_PREVIEWRATE = WM_CAP_START + 52; public const int WM_CAP_GET_CAPSTREAMPTR = WM_CAP_START + 1; public const int WM_CAP_SET_CALLBACK_STATUS = WM_CAP_START + 3; public const int WM_CAP_SET_CALLBACK_YIELD = WM_CAP_START + 4; public const int WM_CAP_SET_CALLBACK_WAVESTREAM = WM_CAP_START + 7; public const int WM_CAP_GET_USER_DATA = WM_CAP_START + 8; public const int WM_CAP_SET_USER_DATA = WM_CAP_START + 9; public const int WM_CAP_DRIVER_GET_NAME = WM_CAP_START + 12; public const int WM_CAP_DRIVER_GET_VERSION = WM_CAP_START + 13; public const int WM_CAP_DRIVER_GET_CAPS = WM_CAP_START + 14; public const int WM_CAP_FILE_SET_CAPTURE_FILE = WM_CAP_START + 20; public const int WM_CAP_FILE_GET_CAPTURE_FILE = WM_CAP_START + 21; public const int WM_CAP_FILE_ALLOCATE = WM_CAP_START + 22; public const int WM_CAP_FILE_SAVEAS = WM_CAP_START + 23; public const int WM_CAP_FILE_SET_INFOCHUNK = WM_CAP_START + 24; public const int WM_CAP_FILE_SAVEDIB = WM_CAP_START + 25; public const int WM_CAP_EDIT_COPY = WM_CAP_START + 30; public const int WM_CAP_SET_AUDIOFORMAT = WM_CAP_START + 35; public const int WM_CAP_GET_AUDIOFORMAT = WM_CAP_START + 36; public const int WM_CAP_DLG_VIDEOFORMAT = WM_CAP_START + 41; public const int WM_CAP_DLG_VIDEOSOURCE = WM_CAP_START + 42; public const int WM_CAP_DLG_VIDEODISPLAY = WM_CAP_START + 43; public const int WM_CAP_GET_VIDEOFORMAT = WM_CAP_START + 44; public const int WM_CAP_SET_VIDEOFORMAT = WM_CAP_START + 45; public const int WM_CAP_DLG_VIDEOCOMPRESSION = WM_CAP_START + 46; public const int WM_CAP_GET_STATUS = WM_CAP_START + 54; public const int WM_CAP_SET_SCROLL = WM_CAP_START + 55; public const int WM_CAP_GRAB_FRAME_NOSTOP = WM_CAP_START + 61; public const int WM_CAP_SET_SEQUENCE_SETUP = WM_CAP_START + 64; public const int WM_CAP_GET_SEQUENCE_SETUP = WM_CAP_START + 65; public const int WM_CAP_SET_MCI_DEVICE = WM_CAP_START + 66; public const int WM_CAP_GET_MCI_DEVICE = WM_CAP_START + 67; public const int WM_CAP_ABORT = WM_CAP_START + 69; public const int WM_CAP_SINGLE_FRAME_OPEN = WM_CAP_START + 70; public const int WM_CAP_SINGLE_FRAME_CLOSE = WM_CAP_START + 71; public const int WM_CAP_SINGLE_FRAME = WM_CAP_START + 72; public const int WM_CAP_PAL_OPEN = WM_CAP_START + 80; public const int WM_CAP_PAL_SAVE = WM_CAP_START + 81; public const int WM_CAP_PAL_PASTE = WM_CAP_START + 82; public const int WM_CAP_PAL_AUTOCREATE = WM_CAP_START + 83; public const int WM_CAP_PAL_MANUALCREATE = WM_CAP_START + 84; // Following added post VFW 1.1 public const int WM_CAP_SET_CALLBACK_CAPCONTROL = WM_CAP_START + 85; // Defines end of the message range public const int WM_CAP_END = WM_CAP_SET_CALLBACK_CAPCONTROL; private IntPtr hWndC ; private bool bStat; private IntPtr mControlPtr; private int mWidth; private int mHeight; private int mLeft; private int mTop; [DllImport("avicap32.dll")] private static extern IntPtr capCreateCaptureWindowA(byte[] lpszWindowName, int dwStyle,int x,int y,int nWidth,int nHeight, IntPtr hWndParent , int nID); [DllImport("avicap32.dll")] private static extern int capGetVideoFormat(IntPtr hWnd, IntPtr psVideoFormat, int wSize); [DllImport("User32.dll")] private static extern bool SendMessage(IntPtr hWnd, int wMsg, int wParam, long lParam); public bool capDlgVideoFormat() { return SendMessage(hWndC, WM_CAP_DLG_VIDEOFORMAT, 0, 0); } public bool capDlgVideoSource() { return SendMessage(hWndC, WM_CAP_DLG_VIDEOSOURCE, 0, 0); } public bool capDlgVideoDisplay() { return SendMessage(hWndC, WM_CAP_DLG_VIDEODISPLAY, 0, 0); } public bool capDlgVideoCompression() { return SendMessage(hWndC, WM_CAP_DLG_VIDEOCOMPRESSION, 0, 0); } /// 《summary》; /// 初始化攝像頭 /// 《/summary》 /// 《param name="handle"》控制項的句柄《/param》 /// 《param name="left"》開始顯示的左邊距《/param》 /// 《param name="top"》開始顯示的上邊距《/param》 /// 《param name="width"》要顯示的寬度《/param》 /// 《param name="height"》要顯示的長度《/param》 public Cam(CamStruct camStruct) { mControlPtr = camStruct.handle;; mWidth = camStruct.width; mHeight = camStruct.height; mLeft = camStruct.left; mTop = camStruct.top; } /// 《summary》 /// 開始顯示圖像 /// 《/summary》 public void Start() { if( bStat ) { return; } bStat = true; byte[] lpszName=new byte[99]; hWndC = capCreateCaptureWindowA(lpszName, WS_CHILD | WS_VISIBLE, mLeft, mTop, mWidth, mHeight, mControlPtr, 0); if (hWndC.ToInt32() != 0 ) { SendMessage(hWndC, WM_CAP_SET_CALLBACK_VIDEOSTREAM, 0, 0); SendMessage(hWndC, WM_CAP_SET_CALLBACK_ERROR, 0, 0); SendMessage(hWndC, WM_CAP_SET_CALLBACK_STATUSA, 0, 0); SendMessage(hWndC, WM_CAP_DRIVER_CONNECT, 0, 0); SendMessage(hWndC, WM_CAP_SET_SCALE, 1, 0); SendMessage(hWndC, WM_CAP_SET_PREVIEWRATE, 66, 0); SendMessage(hWndC, WM_CAP_SET_OVERLAY, 1, 0); SendMessage(hWndC, WM_CAP_SET_PREVIEW, 1, 0); } return; } /// 《summary》 /// 停止顯示 /// 《/summary》 public void Stop() { SendMessage(hWndC, WM_CAP_DRIVER_DISCONNECT, 0, 0); bStat = false; } /// 《summary》 /// 抓圖 /// 《/summary》 /// 《param name="path"》要保存bmp文件的路徑《/param》 public void GrabImage(string path) { IntPtr hBmp= Marshal.StringToHGlobalAnsi(path); SendMessage(hWndC, WM_CAP_SAVEDIB, 0, hBmp.ToInt64()); } /// 《summary》 /// 錄像 /// 《/summary》 /// 《param name="path"》要保存avi文件的路徑《/param》 public void Kinescope(string path) { IntPtr hBmp = Marshal.StringToHGlobalAnsi(path); SendMessage(hWndC, WM_CAP_FILE_SET_CAPTURE_FILEA, 0, hBmp.ToInt64()); SendMessage(hWndC, WM_CAP_SEQUENCE, 0, 0); } /// 《summary》 /// 停止錄像 /// 《/summary》 public void StopKinescope() { SendMessage(hWndC, WM_CAP_STOP, 0, 0); } } }
4. VB攝像頭錄像源代碼(高分徵求)
你在網路上搜 網路人 這個工具可以滿足你的要求
5. 一套完整的視頻直播聊天室源碼怎麼開發
視頻直播聊天室源碼怎麼開發?首先,我們將其分為五部分:採集、編碼,傳輸, 伺服器處理,解碼,渲染。
1、採集:採集就是我們平時「開攝像頭錄像」的部分,用戶通過攝像頭將視頻傳遞到網路上,這里是比較簡單的一部分,只是適配起來會比較麻煩,畢竟手機種類眾多,但本身的技術要求和其他模塊比起來還是簡單很多的。
2、前處理:前處理階段是視頻直播聊天室源碼在將視頻傳輸到伺服器之前要做好的處理工作,包括美顏演算法、視頻模糊、添加水印等,都在這一環節做成
3、編碼:為什麼要將視頻進行編碼呢?因為原音視頻文件是很大的,會佔用很大的帶寬,只有在編碼完成後,視頻文件才會變得小一些,這樣會更節省帶寬。
難點在於:解析度,幀率,碼率,GOP等參數的平衡,視頻直播聊天室源碼如何使音視頻文件又小又清晰,這是個問題
4、傳輸:將主播端文件傳輸給伺服器
5、伺服器處理:在伺服器完成對文件的檢測(包括鑒黃等)後,將文件通過CDN發送到觀眾的手機端。
6、解碼和渲染:交給用戶自己的手機吧。
這是一個視頻直播聊天室源碼的工作步驟,我們需要迴避很多坑才能做好視頻直播聊天室源碼的開發,如有需要幫助的地方,可以追問我。
6. 使用c#編寫攝像頭程序,可以拍照,錄像,保存到本地。求源碼,可以直接運行的。
你沒有釋放資源。這個問題和我遇到的一模一樣。在關閉攝像頭的程序段中加上釋放資源的語句。
7. 智能電視攝像頭如何後台開啟
智能歲嫌羨電視攝者歲像頭後台開啟可以通過編程的方式製作後台錄像文件。
1、可以通乎拍過編程的方式製作後台錄像文件,需要源碼。
2、另外木馬軟體也有這樣的功能,必須手動控制。
8. 我用C# winform做了個攝像頭錄像程序,但是錄制下來的視頻一分鍾就很大,我想用視頻壓縮方法。
C#的我沒有,我改過ultravnc的源碼。。。哪個是一個視雀州悔頻監控的開源項目,但是裡面涉頃正及跡褲到視頻壓縮和解壓,使用的是C++開發的,你可以參考下,解壓和壓縮的核心就是使用zlib庫,這個庫也是開源的,你也可以在C#中使用,抱歉沒用過C#開發這個,只能幫到這啦~~~~樓下的給力點
9. VB攝像頭硬體拍照功能實現
並不是你的問題沒人會回答。而是你提問的畢腔地方不對,你這個屬於硬體編程了,放到軟體編程里當然沒幾個人會回答啦,下面是一個實例,直接點擊桐老攝像頭上的拍照按鈕的。Private Sub Form_Load()
Dim lpszName As String * 100
Dim lpszVer As String * 100
'創建視頻窗口
'讀取驅動程序列表
capGetDriverDescriptionA 0, lpszName, 100, lpszVer, 100
'創建視頻窗口程序
lwndC = capCreateCaptureWindowA(lpszName, WS_CAPTION Or WS_THICKFRAME Or WS_VISIBLE Or WS_CHILD, -5, -30, Pic.Width, Pic.Height, Pic.hwnd, 0)
'把捕捉窗口連接局數升到一個捕捉設備
If capDriverConnect(lwndC, 0) Then
' '來使預覽模式的縮放有效或者無效
capPreviewScale lwndC, True
'發送給捕捉窗口來設置在預覽模式下幀的顯示頻率
capPreviewRate lwndC, 66
'發送給捕捉窗口來使預覽模式有效或者失效
capPreview lwndC, True
'調整窗體的在小及顯示格式
SetWindowPos lwndC, HWND_BOTTOM, 0, 0, 430, 350, SWP_NOMOVE Or SWP_NOZORDER
End If
End Sub
模塊內代碼:
Public Const WS_BORDER = &H800000
Public Const WS_CAPTION = &HC00000
Public Const WS_SYSMENU = &H80000
Public Const WS_CHILD = &H40000000
Public Const WS_VISIBLE = &H10000000
Public Const WS_OVERLAPPED = &H0&
Public Const WS_MINIMIZEBOX = &H20000
Public Const WS_MAXIMIZEBOX = &H10000
Public Const WS_THICKFRAME = &H40000
Public Const WS_OVERLAPPEDWINDOW = (WS_OVERLAPPED Or WS_CAPTION Or WS_SYSMENU Or WS_THICKFRAME Or WS_MINIMIZEBOX Or WS_MAXIMIZEBOX)
Public Const SWP_NOMOVE = &H2
Public Const SWP_NOSIZE = 1
Public Const SWP_NOZORDER = &H4
Public Const HWND_BOTTOM = 1
Public Const HWND_TOPMOST = -1
Public Const HWND_NOTOPMOST = -2
Public Const SM_CYCAPTION = 4
Public Const SM_CXFRAME = 32
Public Const SM_CYFRAME = 33
Public Const WS_EX_TRANSPARENT = &H20&
Public Const GWL_STYLE = (-16)
'為窗體設置值
Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Declare Function lStrCpy Lib "kernel32" Alias "lstrcpyA" (ByVal lpString1 As Long, ByVal lpString2 As Long) As Long
Declare Function lStrCpyn Lib "kernel32" Alias "lstrcpynA" (ByVal lpString1 As Any, ByVal lpString2 As Long, ByVal iMaxLength As Long) As Long
Declare Sub RtlMoveMemory Lib "kernel32" (ByVal hpvDest As Long, ByVal hpvSource As Long, ByVal cbCopy As Long)
Declare Sub hmemcpy Lib "kernel32" (hpvDest As Any, hpvSource As Any, ByVal cbCopy As Long)
'這個函數為窗口指定個個新位置和狀態。它也可改變窗口在內部窗口列表中的位置
Declare Function SetWindowPos Lib "user32" (ByVal hwnd As Long, ByVal hWndInsertAfter As Long, ByVal X As Long, ByVal Y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long
'關閉窗體及子窗體
Declare Function DestroyWindow Lib "user32" (ByVal hndw As Long) As Boolean
Declare Function GetSystemMetrics Lib "user32" (ByVal nIndex As Long) As Long
'在結構中為指定的窗口設置信息
Declare Function SetWindowText Lib "user32" Alias "SetWindowTextA" (ByVal hwnd As Long, ByVal lpString As String) As Long
Public lwndC As Long '窗體句柄
Public Const HTCAPTION = 2
Public Const WM_NCLBUTTONDOWN = &HA1
Public Declare Function ReleaseCapture Lib "user32" () As Long
'**********************************'保存窗口最前
Public Const WM_USER = &H400 '偏移地址
Type POINTAPI
X As Long
Y As Long
End Type
'調用一個窗口的窗口函數,將一條消息發給那個窗口。直到消息被處理完畢,該函數才會返回
'hwnd(long)要接收消息的那個窗口的句柄、 wmsg(long)消息的標識符 、wparam(long)具體取決於消息 iparam(ANY)具體取決於消息
Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Integer, ByVal lParam As Long) As Long
Declare Function SendMessageS Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Integer, ByVal lParam As String) As Long
Public Const WM_CAP_START = WM_USER '開始址
Public Const WM_CAP_GET_CAPSTREAMPTR = WM_CAP_START + 1 '
Public Const WM_CAP_SET_CALLBACK_ERROR = WM_CAP_START + 2 '在程序設定當發生錯誤時調用的回調函數
Public Const WM_CAP_SET_CALLBACK_STATUS = WM_CAP_START + 3 '在程序中設定當狀態改變時調用的回調函數
Public Const WM_CAP_SET_CALLBACK_YIELD = WM_CAP_START + 4 '在程序中設定當程序讓位時調用的回調函數
Public Const WM_CAP_SET_CALLBACK_FRAME = WM_CAP_START + 5 '在程序中設定當預覽幀被捕捉時調用的加調函數
Public Const WM_CAP_SET_CALLBACK_VIDEOSTREAM = WM_CAP_START + 6 '在程序中設定當一個新的視頻緩沖區可以時調用的回調函數
Public Const WM_CAP_SET_CALLBACK_WAVESTREAM = WM_CAP_START + 7 '在程序中設定當一個新的音頻緩沖區可以時調用的回調函數
Public Const WM_CAP_GET_USER_DATA = WM_CAP_START + 8 '把數據關聯到一個捕捉窗口,可以獲取一個長整型數據
Public Const WM_CAP_SET_USER_DATA = WM_CAP_START + 9 '把數據關聯到一個捕捉窗口,'可以設置一個長整型數據
Public Const WM_CAP_DRIVER_CONNECT = WM_CAP_START + 10 '把捕捉窗口連接到一個捕捉設備
Public Const WM_CAP_DRIVER_DISCONNECT = WM_CAP_START + 11 ''用來斷開捕捉驅動器和捕捉窗口之間的連接
Public Const WM_CAP_DRIVER_GET_NAME = WM_CAP_START + 12 '連接到'來得到已連接到某個捕捉窗口的捕捉設備驅動程序的名字
Public Const WM_CAP_DRIVER_GET_VERSION = WM_CAP_START + 13 '得到驅動程序的版本號
Public Const WM_CAP_DRIVER_GET_CAPS = WM_CAP_START + 14 '來得到捕捉窗口的硬體的性能。
'捕捉文件和緩存
Public Const WM_CAP_FILE_SET_CAPTURE_FILE = WM_CAP_START + 20 '可以指定另一個路徑和文件名。這個消息指定文件名,但不創建文件,也不打開文件或為文件申請空間
Public Const WM_CAP_FILE_GET_CAPTURE_FILE = WM_CAP_START + 21 '來得到當前的捕捉文件
Public Const WM_CAP_FILE_ALLOCATE = WM_CAP_START + 22 '為捕捉文件預分配空間,從而可以減少被漏掉的幀
Public Const WM_CAP_FILE_SAVEAS = WM_CAP_START + 23 '將捕捉文件保存為另一個用戶指定的文件。這個消息不會改變捕捉文件的名字和內容,
'由於捕捉文件保留它最初的文件名,因此必須指定個新的文件的文件名來保存
Public Const WM_CAP_FILE_SET_INFOCHUNK = WM_CAP_START + 24 '可以把信息塊例如文本或者自定義數據插入avi文件。同樣用這個消息也可以清除avi文件中的信息塊
Public Const WM_CAP_FILE_SAVEDIB = WM_CAP_START + 25 '把從幀緩存中復制出圖像存為設備無關點陣圖書館(DIB),應用程序也可以使用這兩個單幀捕捉消息來編輯幀序列,
'或者創建一個慢速攝影序列
Public Const WM_CAP_EDIT_COPY = WM_CAP_START + 30 '一旦捕捉到圖像,把緩存中圖像復制到剪貼板中
Public Const WM_CAP_SET_AUDIOFORMAT = WM_CAP_START + 35 '設置音頻格式。設置時傳入一個WAVEFORMAT、WAVEFORMATEX、或PCMWAVEOFMAT結構的指針
Public Const WM_CAP_GET_AUDIOFORMAT = WM_CAP_START + 36 '來得到音頻數據的格式和該格式結構體的大小。默認的捕捉音頻格式是mono、8-bit和11kHZ PCM
Public Const WM_CAP_DLG_VIDEOFORMAT = WM_CAP_START + 41 '對數字化後的視頻幀的大小和圖像深度,以及被捕捉視頻的數據的壓縮方式的選擇
Public Const WM_CAP_DLG_VIDEOSOURCE = WM_CAP_START + 42 '視頻對話框,用來枚舉連接視頻源的捕捉卡的信號種類,並且
'控制顏色、對比度、飽和度的改變,如果視頻驅動程序支技,可以用這個對話框
Public Const WM_CAP_DLG_VIDEODISPLAY = WM_CAP_START + 43 '視頻顯示對話框控制視頻捕捉過程中視頻在顯示器上的顯示。對捕捉數據無影響,但會影響數了信號表達式
Public Const WM_CAP_GET_VIDEOFORMAT = WM_CAP_START + 44 '給捕捉窗口來得到視頻格式的結構和該結構的大小。
Public Const WM_CAP_SET_VIDEOFORMAT = WM_CAP_START + 45 '用來設置視頻格式
Public Const WM_CAP_DLG_VIDEOCOMPRESSION = WM_CAP_START + 46 ' 視頻壓縮對話框
Public Const WM_CAP_SET_PREVIEW = WM_CAP_START + 50 '發送給捕捉窗口來使預覽模式有效或者失效
Public Const WM_CAP_SET_OVERLAY = WM_CAP_START + 51 '使窗口處於疊加模式。使疊加模式有效也會自動地使預覽模式失效
Public Const WM_CAP_SET_PREVIEWRATE = WM_CAP_START + 52 '發送給捕捉窗口來設置在預覽模式下幀的顯示頻率
Public Const WM_CAP_SET_SCALE = WM_CAP_START + 53 '來使預覽模式的縮放有效或者無效
Public Const WM_CAP_GET_STATUS = WM_CAP_START + 54 '得到捕捉窗口的當前狀態
Public Const WM_CAP_SET_SCROLL = WM_CAP_START + 55 '如果是在預覽模式或者疊加模式,還可以通過本消息發送給窗口,
'在窗口裡的用戶區域設置視頻幀的滾動條的位置
'定義結束時響應信息
Public Const WM_CAP_SET_CALLBACK_CAPCONTROL = WM_CAP_START + 85
Public Const WM_CAP_END = WM_CAP_SET_CALLBACK_CAPCONTROL
'// 導入avicap32.dll連接庫下的兩個函數
Declare Function capCreateCaptureWindowA Lib "avicap32.dll" ( _
ByVal lpszWindowName As String, _
ByVal dwStyle As Long, _
ByVal X As Long, ByVal Y As Long, ByVal nWidth As Long, ByVal nHeight As Integer, _
ByVal hWndParent As Long, ByVal nID As Long) As Long
Declare Function capGetDriverDescriptionA Lib "avicap32.dll" ( _
ByVal wDriver As Integer, _
ByVal lpszName As String, _
ByVal cbName As Long, _
ByVal lpszVer As String, _
ByVal cbVer As Long) As Boolean
Function capDriverConnect(ByVal lwnd As Long, ByVal i As Integer) As Boolean
'把捕捉窗口連接到一個捕捉設備
capDriverConnect = SendMessage(lwnd, WM_CAP_DRIVER_CONNECT, i, 0)
End Function
Function capDriverDisconnect(ByVal lwnd As Long) As Boolean
''用來斷開捕捉驅動器和捕捉窗口之間的連接
capDriverDisconnect = SendMessage(lwnd, WM_CAP_DRIVER_DISCONNECT, 0, 0)
End Function
Function capDriverGetName(ByVal lwnd As Long, ByVal szName As Long, ByVal wSize As Integer) As Boolean
'獲得驅動程序名字
capDriverGetName = SendMessage(lwnd, YOURCONSTANTMESSAGE, wSize, szName)
End Function
Function capDriverGetCaps(ByVal lwnd As Long, ByVal s As Long, ByVal wSize As Integer) As Boolean
'來得到捕捉窗口的硬體的性能
capDriverGetCaps = SendMessage(lwnd, WM_CAP_DRIVER_GET_CAPS, wSize, s)
End Function
Function capPreview(ByVal lwnd As Long, ByVal f As Boolean) As Boolean
'發送給捕捉窗口來使預覽模式有效或者失效
capPreview = SendMessage(lwnd, WM_CAP_SET_PREVIEW, f, 0)
End Function
Function capPreviewRate(ByVal lwnd As Long, ByVal wMS As Integer) As Boolean
'發送給捕捉窗口來設置在預覽模式下幀的顯示頻率
capPreviewRate = SendMessage(lwnd, WM_CAP_SET_PREVIEWRATE, wMS, 0)
End Function
Function capPreviewScale(ByVal lwnd As Long, ByVal f As Boolean) As Boolean
'來使預覽模式的縮放有效或者無效
capPreviewScale = SendMessage(lwnd, WM_CAP_SET_SCALE, f, 0)
End Function雖然說攝像頭的製作是有一定標準的,但是我們並不能保證所有的攝像頭都會按照這個標准去做,特別是水貨的冒牌的還有一些雜牌的。如果你的攝像頭是名牌的話,那就沒問題了。
10. luvcview 攝像頭測試程序錄制AVI視頻問題
有大扮慶核俠研究過 嵌入式版本的luvcview 攝像頭測試差塌程序修改源碼AVI視頻錄制部分,任然無法錄制AVI視頻,在終端中顯示如下:################################################[root@FORLINX6410]# lsluvcview[root@FORLINX6410]# ./luvcview -d /dev/video2 -f jpg -s 320x240luvcview version v0.1size width: 320 height: 240video /dev/video2^C[root@FORLINX6410]# lsluvcview################################################源碼修改如下: videoIn-avifile = 1; if (videoIn-avifile ) { float fps=(videoIn-framecount/(videoIn-recordtime/1000)); fprintf(stderr,"setting fps to %fn",fps); AVI_set_video(videoIn-avifile, videoIn-width, videoIn-height, fps, "MJPG"廳掘); AVI_close(videoIn-avifile); }開發板:OK6410系統:linux3.0.1!!求指教!!!求指教!!!求指教!