หน้านี้จะอธิบายวิธีตั้งค่าและเรียกใช้ตัวอย่างโดยใช้การใช้งานไคลเอ็นต์อ้างอิง 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
หมายเหตุ: คอมมิต
b00c469cad3f8c926fcf81ded90b90b6e1e62b9c
เป็นเวอร์ชันล่าสุดที่ทราบว่าใช้ได้กับบิลด์ของเราเนื่องจากการอัปเดตชุดเครื่องมือและ Abseil ข้อมูลนี้อาจเปลี่ยนแปลงในอนาคต ชุดคําสั่งนี้ใช้งานได้แล้วในตอนนี้ แต่ควรดูลิงก์ที่ให้ไว้ในกรณีที่เครื่องมือพื้นฐานมีการเปลี่ยนแปลง หากคุณกำลังสร้างสำหรับตัวแปร Debian หรือ Ubuntu Linux ที่ไม่ใช่ x64 การตั้งค่าข้อกําหนดเบื้องต้นอาจแตกต่างออกไปหลังจากสร้าง libwebrtc แล้ว ให้อัปเดตไฟล์
WORKSPACE
ให้ชี้ไปยังไดเรกทอรีwebrtc-checkout
อัปเดตเส้นทางwebrtc_path
บริเวณด้านบนของไฟล์นั้น โดยทำดังนี้webrtc_path = "/usr/local/myuser/webrtc-checkout/"
ใช้ Bazel เพื่อสร้างไคลเอ็นต์ C++ โดยทำดังนี้
$ bazel build //cpp/...
หมายเหตุ: คุณควรใช้ Bazel 7.4.1 หากติดตั้ง Bazel เวอร์ชันใหม่กว่าไว้ คุณจะเรียกใช้โดยใช้
bazel-7.4.1 build/run/test ...
ได้
ทำการทดสอบ (ไม่บังคับ)
$ bazel test //cpp/...
สร้างโทเค็น OAuth
หากต้องการเชื่อมต่อกับ Meet Media API แอปของคุณต้องใช้ OAuth เพื่อสร้างโทเค็นการเข้าถึง ดูข้อมูลเพิ่มเติมเกี่ยวกับการเข้าถึง Google API ด้วย OAuth ได้ที่การใช้ OAuth 2.0 เพื่อเข้าถึง Google API
คุณสามารถใช้ OAuth 2.0 Playground เพื่อสร้างโทเค็น เมื่อใช้ Playgroud โปรดตรวจสอบสิ่งต่อไปนี้
- ใช้รหัสไคลเอ็นต์และข้อมูลเข้าสู่ระบบลับจากโปรเจ็กต์ระบบคลาวด์
- ขอขอบเขตที่ถูกต้อง
- ลงชื่อเข้าใช้บัญชี Google และยอมรับสิทธิ์เข้าถึง
เมื่อเสร็จแล้ว ให้คลิกปุ่ม Exchange authorization code for tokens
และคัดลอกโทเค็นการเข้าถึงที่สร้างขึ้น
เริ่มการประชุม
เริ่มการประชุมโดยใช้บัญชีผู้ใช้เดียวกับที่ใช้สร้างโทเค็น OAuth คัดลอกรหัสการประชุม ตอนนี้คุณก็พร้อมที่จะเรียกใช้ตัวอย่างแล้ว
ตัวอย่างแอป
ที่เก็บข้อมูล GitHub มีตัวอย่างสำหรับรับสื่อและข้อมูลเมตาของผู้เข้าร่วมจากการประชุม
ตัวอย่างเหล่านี้จะรวบรวมข้อมูลเป็นระยะเวลาที่ระบุ (ค่าเริ่มต้นคือ 3 วินาที) และเขียนข้อมูลที่รวบรวมลงในไฟล์
ไฟล์เสียงอยู่ในรูปแบบ PCM16 ไฟล์วิดีโออยู่ในรูปแบบ YUV420p ไฟล์เหล่านี้เล่นได้โดยใช้ไลบรารี เช่น FFmpeg
เนื่องจากความละเอียดของวิดีโออาจเปลี่ยนแปลงในระหว่างการประชุม ตัวอย่างจึงระบุความละเอียดไว้ในชื่อไฟล์วิดีโอ
ไฟล์ข้อมูลเมตาของผู้เข้าร่วมจะเป็นไฟล์ข้อความที่มนุษย์อ่านได้
ตัวอย่างสื่อของผู้ใช้รายเดียว
ตัวอย่างสื่อของผู้ใช้รายเดียวเป็นแอปพื้นฐานที่มุ่งเน้นที่การเก็บรวบรวมเสียงและวิดีโอ ตัวอย่างนี้ไม่ได้ระบุว่าผู้เข้าร่วมรายใดเป็นผู้สร้างข้อมูลเสียงและวิดีโอ ดังนั้น การใช้ฟีเจอร์นี้ในการประชุมที่มีผู้เข้าร่วมมากกว่า 1 คนอาจส่งผลให้เอาต์พุตเสียหาย
หากต้องการเรียกใช้ตัวอย่างสื่อของผู้ใช้รายเดียว ให้เรียกใช้คำสั่งต่อไปนี้
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
(ไม่บังคับ) ใช้ FFmpeg เพื่อเล่นไฟล์เอาต์พุตใน Linux และ Mac
คุณสามารถใช้ 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 |
ระบุ URL ของ Meet Media API ค่าเริ่มต้นคือ https://meet.googleapis.com/v2alpha/ |