88 < meta name ="keywords " content ="camera capture, C++, C, cross-platform, Windows, macOS, iOS, Linux, DirectShow, AVFoundation, V4L2 ">
99 < link rel ="canonical " href ="https://ccap.work/ ">
1010 < link rel ="stylesheet " href ="css/style.css ">
11+ <!-- Highlight.js for syntax highlighting -->
12+ < link rel ="stylesheet " href ="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.9.0/styles/vs2015.min.css " crossorigin ="anonymous ">
13+ < script src ="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.9.0/highlight.min.js " crossorigin ="anonymous "> </ script >
14+ < script src ="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.9.0/languages/cpp.min.js " crossorigin ="anonymous "> </ script >
15+ < script src ="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.9.0/languages/c.min.js " crossorigin ="anonymous "> </ script >
16+ < script src ="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.9.0/languages/bash.min.js " crossorigin ="anonymous "> </ script >
17+ < script src ="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.9.0/languages/cmake.min.js " crossorigin ="anonymous "> </ script >
1118</ head >
1219< body >
1320 < header >
@@ -178,59 +185,59 @@ <h2 class="section-title lang-zh">快速开始</h2>
178185
179186 < div class ="code-block ">
180187 < div id ="code-cpp " class ="code-content active ">
181- < pre > < span class ="comment "> // C++ Example</ span >
182- < span class =" keyword " > #include</ span > < span class =" string " > <ccap.h></ span >
188+ < pre > < code class ="language-cpp "> // C++ Example
189+ #include <ccap.h>
183190
184- < span class =" type " > int</ span > < span class =" function " > main</ span > () {
191+ int main() {
185192 ccap::Provider provider;
186193
187- < span class =" comment " > // List available cameras</ span >
188- < span class =" keyword " > auto</ span > devices = provider.< span class =" function " > findDeviceNames</ span > ();
189- < span class =" keyword " > for</ span > ( < span class =" type " > size_t</ span > i = < span class =" number " > 0 </ span > ; i < devices.< span class =" function " > size</ span > (); ++i) {
190- < span class =" function " > printf</ span > ( < span class =" string " > " [%zu] %s\n"</ span > , i, devices[i].< span class =" function " > c_str</ span > ());
194+ // List available cameras
195+ auto devices = provider.findDeviceNames();
196+ for ( size_t i = 0 ; i < devices.size(); ++i) {
197+ printf(" [%zu] %s\n", i, devices[i].c_str());
191198 }
192199
193- < span class =" comment " > // Open and start camera</ span >
194- < span class =" keyword " > if </ span > (provider.< span class =" function " > open</ span > ( < span class =" string " > "" </ span > , < span class =" keyword " > true</ span > )) {
195- < span class =" keyword " > auto</ span > frame = provider.< span class =" function " > grab</ span > ( < span class =" number " > 3000</ span > );
196- < span class =" keyword " > if </ span > (frame) {
197- < span class =" function " > printf</ span > ( < span class =" string " > " Captured: %dx%d\n"</ span > ,
200+ // Open and start camera
201+ if (provider.open("", true)) {
202+ auto frame = provider.grab( 3000);
203+ if (frame) {
204+ printf(" Captured: %dx%d\n",
198205 frame->width, frame->height);
199206 }
200207 }
201- < span class =" keyword " > return</ span > < span class =" number " > 0 </ span > ;
202- }</ pre >
208+ return 0 ;
209+ }</ code > </ pre >
203210 </ div >
204211
205212 < div id ="code-c " class ="code-content ">
206- < pre > < span class ="comment "> // Pure C Example</ span >
207- < span class =" keyword " > #include</ span > < span class =" string " > <ccap_c.h></ span >
208- < span class =" keyword " > #include</ span > < span class =" string " > <ccap_utils_c.h></ span >
213+ < pre > < code class ="language-c "> // Pure C Example
214+ #include <ccap_c.h>
215+ #include <ccap_utils_c.h>
209216
210- < span class =" type " > int</ span > < span class =" function " > main</ span > () {
211- CcapProvider* provider = < span class =" function " > ccap_provider_create</ span > ();
212- < span class =" keyword " > if </ span > (!provider) < span class =" keyword " > return</ span > - < span class =" number " > 1 </ span > ;
217+ int main() {
218+ CcapProvider* provider = ccap_provider_create();
219+ if (!provider) return -1 ;
213220
214- < span class =" comment " > // Find available devices</ span >
221+ // Find available devices
215222 CcapDeviceNamesList deviceList;
216- < span class =" keyword " > if </ span > ( < span class =" function " > ccap_provider_find_device_names_list</ span > (provider, &deviceList)) {
217- < span class =" function " > printf</ span > ( < span class =" string " > " Found %zu camera(s)\n"</ span > , deviceList.deviceCount);
223+ if ( ccap_provider_find_device_names_list(provider, &deviceList)) {
224+ printf(" Found %zu camera(s)\n", deviceList.deviceCount);
218225 }
219226
220- < span class =" comment " > // Open and capture</ span >
221- < span class =" keyword " > if </ span > ( < span class =" function " > ccap_provider_open</ span > (provider, NULL, < span class =" keyword " > true</ span > )) {
222- CcapVideoFrame* frame = < span class =" function " > ccap_provider_grab</ span > (provider, < span class =" number " > 3000</ span > );
223- < span class =" keyword " > if </ span > (frame) {
227+ // Open and capture
228+ if ( ccap_provider_open(provider, NULL, true)) {
229+ CcapVideoFrame* frame = ccap_provider_grab(provider, 3000);
230+ if (frame) {
224231 CcapVideoFrameInfo info;
225- < span class =" function " > ccap_video_frame_get_info</ span > (frame, &info);
226- < span class =" function " > printf</ span > ( < span class =" string " > " Captured: %dx%d\n"</ span > , info.width, info.height);
227- < span class =" function " > ccap_video_frame_release</ span > (frame);
232+ ccap_video_frame_get_info(frame, &info);
233+ printf(" Captured: %dx%d\n", info.width, info.height);
234+ ccap_video_frame_release(frame);
228235 }
229236 }
230237
231- < span class =" function " > ccap_provider_destroy</ span > (provider);
232- < span class =" keyword " > return</ span > < span class =" number " > 0 </ span > ;
233- }</ pre >
238+ ccap_provider_destroy(provider);
239+ return 0 ;
240+ }</ code > </ pre >
234241 </ div >
235242 </ div >
236243 </ div >
@@ -245,35 +252,33 @@ <h2 class="section-title lang-zh">安装</h2>
245252 < div class ="install-method ">
246253 < h3 class ="lang-en "> Build from Source</ h3 >
247254 < h3 class ="lang-zh "> 从源码构建</ h3 >
248- < pre > git clone https://github.com/wysaid/CameraCapture.git
255+ < pre > < code class =" language-bash " > git clone https://github.com/wysaid/CameraCapture.git
249256cd CameraCapture
250- ./scripts/build_and_install.sh</ pre >
257+ ./scripts/build_and_install.sh</ code > </ pre >
251258 </ div >
252259
253260 < div class ="install-method ">
254261 < h3 > CMake FetchContent</ h3 >
255- < pre > include(FetchContent)
256- FetchContent_Declare(
257- ccap
258- GIT_REPOSITORY https://github.com/wysaid/CameraCapture.git
259- GIT_TAG main
260- )
262+ < pre > < code class ="language-cmake "> include(FetchContent)
263+ FetchContent_Declare(ccap
264+ GIT_REPOSITORY https://github.com/wysaid/CameraCapture.git
265+ GIT_TAG main)
261266FetchContent_MakeAvailable(ccap)
262267
263- target_link_libraries(your_app PRIVATE ccap::ccap)</ pre >
268+ target_link_libraries(your_app PRIVATE ccap::ccap)</ code > </ pre >
264269 </ div >
265270
266271 < div class ="install-method ">
267272 < h3 > Homebrew (macOS)</ h3 >
268- < pre > brew tap wysaid/ccap
269- brew install ccap</ pre >
273+ < pre > < code class =" language-bash " > brew tap wysaid/ccap
274+ brew install ccap</ code > </ pre >
270275 </ div >
271276
272277 < div class ="install-method ">
273278 < h3 class ="lang-en "> CMake Integration</ h3 >
274279 < h3 class ="lang-zh "> CMake 集成</ h3 >
275- < pre > find_package(ccap REQUIRED)
276- target_link_libraries(your_app ccap::ccap)</ pre >
280+ < pre > < code class =" language-cmake " > find_package(ccap REQUIRED)
281+ target_link_libraries(your_app ccap::ccap)</ code > </ pre >
277282 </ div >
278283 </ div >
279284 </ div >
0 commit comments