इस पेज पर, C++ रेफ़रंस क्लाइंट लागू करने का इस्तेमाल करके, सैंपल को सेट अप और चलाने का तरीका बताया गया है. इसके बजाय, TypeScript क्लाइंट के बारे में जानने के लिए, TypeScript रेफ़रंस क्लाइंट के लिए क्विकस्टार्ट देखें.
ज़रूरी शर्तें
यह क्विकस्टार्ट चलाने के लिए, आपके पास ये चीज़ें होनी चाहिए:
- आपने GitHub रिपॉज़िटरी का क्लोन बनाया हो.
- Bazel 7.4.1.
- Google Cloud प्रोजेक्ट.
- Google Workspace खाता, जिसमें Google Meet की सुविधा चालू हो.
C++ क्लाइंट बनाना
C++ को Bazel की मदद से लागू किया गया है. हालांकि, C++ WebRTC लाइब्रेरी (libwebrtc) के लिए, काम करने वाला Bazel बिल्ड उपलब्ध नहीं है. इसलिए, आपको WebRTC दस्तावेज़ों में दिए गए निर्देशों का पालन करके, पहले उस लाइब्रेरी को बनाना होगा.
यहां WebRTC के दस्तावेज़ों में बताई गई जानकारी का छोटा वर्शन दिया गया है:
$ cd ~ $ mkdir src $ cd src $ git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git $ export PATH=~/src/depot_tools:$PATH $ mkdir webrtc-checkout $ cd webrtc-checkout $ fetch --nohooks webrtc $ cd src $ # Latest known version to work with our builds $ git checkout b00c469cad3f8c926fcf81ded90b90b6e1e62b9c $ cd .. $ gclient sync $ mv src webrtc $ cd webrtc $ ./build/install-build-deps.sh $ gn gen out/Default --args='is_debug=false use_custom_libcxx=false rtc_include_tests=false rtc_build_examples=false dcheck_always_on=true rtc_use_x11=false use_rtti=true' $ ninja -C out/Default
ध्यान दें: टूलचेन और abseil के अपडेट की वजह से, हमारे बिल्ड के साथ काम करने वाला सबसे नया वर्शन कमिट
b00c469cad3f8c926fcf81ded90b90b6e1e62b9c
है. आने वाले समय में, इसमें बदलाव हो सकता है. निर्देशों का यह सेट अब काम करता है. हालांकि, अगर टूल में बदलाव होता है, तो दिए गए लिंक को देखें. अगर आपको x64 के अलावा किसी अन्य Debian या Ubuntu Linux वैरिएंट के लिए बिल्ड करना है, तो ज़रूरी शर्तों का सेटअप अलग हो सकता है.libwebrtc को बनाने के बाद, अपनी
WORKSPACE
फ़ाइल को अपडेट करें, ताकि वह आपकीwebrtc-checkout
डायरेक्ट्री पर ले जाए. उस फ़ाइल में सबसे ऊपर मौजूदwebrtc_path
पाथ को अपडेट करें:webrtc_path = "/usr/local/myuser/webrtc-checkout/"
C++ क्लाइंट बनाने के लिए, Bazel का इस्तेमाल करें:
$ bazel build //cpp/...
ध्यान दें: आपके पास Bazel 7.4.1 का इस्तेमाल करने वाला सिस्टम होना चाहिए. अगर आपके पास Bazel के नए वर्शन इंस्टॉल हैं, तो
bazel-7.4.1 build/run/test ...
का इस्तेमाल करके इसे चलाया जा सकता है
इसके अलावा, ये टेस्ट भी चलाए जा सकते हैं:
$ bazel test //cpp/...
OAuth टोकन जनरेट करना
Meet Media API से कनेक्ट करने के लिए, आपके ऐप्लिकेशन को ऐक्सेस टोकन जनरेट करने के लिए OAuth का इस्तेमाल करना होगा. OAuth की मदद से Google API को ऐक्सेस करने के बारे में ज़्यादा जानने के लिए, Google API को ऐक्सेस करने के लिए, OAuth 2.0 का इस्तेमाल करना लेख पढ़ें.
टोकन जनरेट करने के लिए, OAuth 2.0 प्लेग्राउंड का इस्तेमाल किया जा सकता है. प्लेग्राउंड का इस्तेमाल करते समय, इन बातों का ध्यान रखें:
- अपने क्लाउड प्रोजेक्ट के क्लाइंट आईडी और पासवर्ड का इस्तेमाल करें.
- सही दायरे के लिए अनुरोध करें.
- किसी Google खाते में साइन इन करें और ऐक्सेस स्वीकार करें.
इसके बाद, Exchange authorization code for tokens
बटन पर क्लिक करें और जनरेट किया गया ऐक्सेस टोकन कॉपी करें.
मीटिंग शुरू करना
उसी उपयोगकर्ता खाते का इस्तेमाल करके मीटिंग शुरू करें जिसका इस्तेमाल आपने OAuth टोकन जनरेट करने के लिए किया था. मीटिंग कोड कॉपी करें. अब सैंपल चलाए जा सकते हैं.
सैंपल ऐप्लिकेशन
GitHub रिपॉज़िटरी में, मीटिंग में शेयर किए गए मीडिया और मीटिंग में हिस्सा लेने वाले लोगों का मेटाडेटा पाने के लिए सैंपल उपलब्ध हैं.
ये सैंपल, तय समय (डिफ़ॉल्ट रूप से तीन सेकंड) के लिए डेटा इकट्ठा करते हैं और इकट्ठा किए गए डेटा को फ़ाइलों में सेव करते हैं.
ऑडियो फ़ाइलें PCM16 फ़ॉर्मैट में हों. वीडियो फ़ाइलें YUV420p फ़ॉर्मैट में हों. इन फ़ाइलों को FFmpeg जैसी लाइब्रेरी का इस्तेमाल करके चलाया जा सकता है.
मीटिंग के दौरान वीडियो का रिज़ॉल्यूशन बदल सकता है. इसलिए, सैंपल में वीडियो फ़ाइल के नाम में रिज़ॉल्यूशन शामिल होता है.
हिस्सा लेने वाले लोगों के मेटाडेटा की फ़ाइलें, टेक्स्ट फ़ाइलें होंगी.
सिंगल यूज़र मीडिया का सैंपल
एक उपयोगकर्ता का मीडिया सैंपल, एक ऐसा बुनियादी ऐप्लिकेशन है जो ऑडियो और वीडियो इकट्ठा करने पर फ़ोकस करता है. सैंपल से यह पता नहीं चलता कि ऑडियो और वीडियो डेटा किस व्यक्ति ने बनाया है. इसलिए, एक से ज़्यादा लोगों की मीटिंग में इस सैंपल का इस्तेमाल करने पर, आउटपुट खराब हो सकता है.
किसी एक उपयोगकर्ता का मीडिया सैंपल चलाने के लिए, यह चलाएं:
Linux
$ bazel run cpp/samples:single_user_media_sample -- \
--meeting_space_id MEETING_SPACE_ID \
--oauth_token OAUTH_TOKEN
डिफ़ॉल्ट रूप से, /tmp/test_output_audio.pcm
में एक ऑडियो फ़ाइल सेव होती है.
मीटिंग के दौरान वीडियो स्ट्रीम के रिज़ॉल्यूशन बदल सकते हैं. इसलिए, एक से ज़्यादा वीडियो फ़ाइलें बन सकती हैं. वीडियो फ़ाइल के नामों में, बढ़ता हुआ काउंटर और उस फ़ाइल का रिज़ॉल्यूशन शामिल होगा. उदाहरण के लिए, अगर वीडियो स्ट्रीम का रिज़ॉल्यूशन 320x180 से 240x135 और फिर से 320x180 हो गया, तो ये वीडियो फ़ाइलें बनाई जाएंगी:
/tmp/test_output_video_0_320x180.pcm
/tmp/test_output_video_1_240x135.pcm
/tmp/test_output_video_2_320x180.pcm
(ज़रूरी नहीं) Linux और Mac पर आउटपुट फ़ाइलें चलाने के लिए, FFmpeg का इस्तेमाल करना
FFmpeg का इस्तेमाल, बनाई गई ऑडियो और वीडियो फ़ाइलों को चलाने के लिए किया जा सकता है. निर्देशों के उदाहरण:
Linux और Mac
# Audio
$ ffplay -f s16le -ar 48k -af aformat=channel_layouts=mono \
/tmp/test_output_audio.pcm
# Video
#
# `video_size` must match the resolution in the video filename (320x180 in
# this example).
$ ffplay -f rawvideo -pixel_format yuv420p -video_size 320x180 \
/tmp/test_output_video_0_320x180.yuv
विकल्प
सैंपल चलाते समय, इन विकल्पों को चुना जा सकता है:
विकल्प | ब्यौरा |
---|---|
--output_file_prefix PREFIX |
आउटपुट फ़ाइलों के लिए प्रीफ़िक्स बताएं. डिफ़ॉल्ट रूप से, यह /tmp_test_output_ पर सेट होती है. |
--collection_duration DURATION |
बताएं कि मीडिया को कितने समय तक इकट्ठा करना है. डिफ़ॉल्ट रूप से, यह 30s पर सेट होती है. |
--join_timeout TIMEOUT |
यह तय करें कि ऐप्लिकेशन को मीटिंग में शामिल होने के लिए कितनी देर इंतज़ार करना है. डिफ़ॉल्ट रूप से, यह 2m पर सेट होती है. |
--meet_api_url URL |
Meet Media API के यूआरएल की जानकारी दें. डिफ़ॉल्ट रूप से, यह https://meet.googleapis.com/v2alpha/ पर सेट होती है. |