tencent cloud

Cloud Streaming Services

신규 사용자 가이드
제품 소개
제품 개요
하위 제품 소개
기본 개념
제품 기능
응용 시나리오
제품 장점
사용 제한
구매 가이드
가격 리스트
기본 서비스
부가 서비스
선불 패키지
구매 프로세스
과금 변경
환불 정책
청구서 조회
연장 안내
연체시 서비스 중지 설명
과금 FAQ
LVB
개요
응용 시나리오
시작하기
SDK 연결 안내
LEB(초저지연 라이브 방송)
개요
LEB와 LVB의 차이점
응용 시나리오
시작하기
SDK 통합
콘솔 가이드
콘솔 소개
개요
Domain Management
스트리밍
리소스 패키지 관리
기능 설정
릴레이
사용량 과금
CAM 액세스 제어
기능 사례
Push and Playback
기능
Live Streaming Security
해외 라이브 방송
콜백 이벤트 정보 알림
자주 사용하는 3rd party 툴 가이드
SDK 사례
0. SDK 통합 가이드
2. 재생
3. 고급 기능
API문서
History
Introduction
API Category
Making API Requests
Live Pad APIs
Live Stream Mix APIs
Time Shifting APIs
Monitoring Data Query APIs
Billing Data Query APIs
Live Transcoding APIs
Delayed Playback Management APIs
Domain Name Management APIs
Watermark Management APIs
Certificate Management APIs
Stream Pulling APIs
Recording Management APIs
Live Callback APIs
Screencapturing and Porn Detection APIs
Authentication Management APIs
Live Stream Management APIs
Data Types
Error Codes
유지보수 가이드
비디오 랙 최적화(V2)
푸시 스트리밍 실패 문제 해결
재생 실패 문제 해결
라이브 방송 딜레이 문제 해결
풀 스트림 비디오 품질 저하 문제 해결
라이브 방송에 COS bucket 권한을 부여하여 화면 캡처 저장
장애 처리
라이브 방송 혼합 스트림 오류: InvalidParameter.OtherError
FAQs
라이브 방송 기본 관련
푸시 및 재생
라이브 방송 과금
라이브 방송 해외 관련
라이브 레코딩
클라우드 혼합 스트리밍 관련
도메인 설정 관련
Apple ATS 적용 관련
SLA
CSS Service Level Agreement
CSS 정책
개인 정보 보호 정책
데이터 처리 및 보안 계약

Web푸시 스트림

PDF
포커스 모드
폰트 크기
마지막 업데이트 시간: 2023-11-10 17:05:36

TXLivePusher 푸시 스트리밍 SDK는 주로 비디오 클라우드의 LEB(초저지연 라이브 스트리밍) 푸시 스트리밍에 사용되며, 브라우저가 수집한 멀티미디어 화면을 WebRTC를 통해 라이브 스트리밍 서버로 푸시하는 역할을 합니다. 현재 카메라 푸시 스트리밍, 화면 녹화 푸시 스트리밍 및 로컬 미디어 파일 푸시 스트리밍을 지원합니다.
주의:
WebRTC 프로토콜을 사용하여 스트림을 푸시하며 각 푸시 도메인의 동시 푸시 스트림 수는 기본적으로 1000개로 제한됩니다. 제한 확장은 티켓 제출을 통해 신청할 수 있습니다.

기본 지식

연결 전 다음 기본 지식을 알아두어야 합니다.


푸시 스트리밍 주소 조합

Tencent Cloud CSS 서비스 사용 시, 푸시 스트리밍 URL은 아래와 같이 Tencent Cloud 표준에 부합하는 푸시 스트리밍 URL 형식을 충족해야 하며 네 부분으로 구성됩니다.





인증 Key 부분은 옵션이며, 링크 도용 방지가 필요한 경우 푸시 스트리밍 인증을 활성화하십시오. 구체적인 설명은 라이브 방송 URL 직접 조합을 참고하십시오.


브라우저 지원

LEB 푸시 스트리밍은 WebRTC를 기반으로 구현되며 WebRTC에 대한 운영체제 및 브라우저의 지원에 종속되어 있습니다.

또한 브라우저의 멀티미디어 화면 캡처 기능은 모바일에서 제대로 지원되지 않습니다. 예를 들어, 모바일 브라우저는 화면 녹화를 지원하지 않으며 iOS 14.3 이상에서만 사용자 카메라 장치 가져오기가 지원됩니다. 따라서 푸시 스트리밍 SDK는 주로 데스크톱 브라우저에 적합하며, 최신 버전의 chrome, Firefox 및 Safari 브라우저에서 LEB 푸시 스트리밍이 모두 지원됩니다.

모바일은 MLVB SDK 사용을 통한 푸시 스트리밍을 권장합니다.


연결 방법

1단계: 페이지 준비 작업

라이브 방송 푸시 스트리밍을 진행할 페이지(데스크톱)에 초기화 스크립트를 가져옵니다.

<script src="https://video.sdk.qcloudecdn.com/web/TXLivePusher-2.1.0.min.js" charset="utf-8"></script>
설명:
스크립트는 HTML의 body 부분에 삽입되어야 하며 head 부분에 삽입되면 오류가 보고됩니다.


2단계: HTML에 컨테이너 배치

로컬 멀티미디어 화면을 표시해야 하는 페이지 위치에 플레이어 컨테이너를 추가합니다. 즉, div를 넣고 이름을 id_local_video와 같이 지정하면 로컬 비디오 화면이 컨테이너에서 렌더링됩니다. 컨테이너의 크기 제어의 경우 div의 CSS 양식을 사용하여 제어할 수 있으며 샘플 코드는 다음과 같습니다.

<div id="id_local_video" style="width:100%;height:500px;display:flex;align-items:center;justify-content:center;"></div>


3단계: 라이브 방송 푸시 스트리밍

1. 푸시 스트리밍 SDK 인스턴스 생성: 전역 객체 'TXLivePusher'를 통해 SDK 인스턴스를 생성하고, 후속 작업은 해당 인스턴스를 통해 완료합니다.
var livePusher = new TXLivePusher();
2. 로컬 비디오 플레이어 컨테이너 지정: 로컬 비디오 플레이어 컨테이너 div를 지정하면 브라우저에서 수집한 멀티미디어 화면이 div로 렌더링됩니다.
livePusher.setRenderView('id_local_video');
설명:
'setRenderView'를 호출하여 생성된 video 요소는 기본적으로 소리가 나며, 음소거가 필요한 경우 video 요소를 직접 가져오기 하여 작업할 수 있습니다.
document.getElementById('id_local_video').getElementsByTagName('video')[0].muted = true;

3. 멀티미디어 품질 설정: 멀티미디어 스트림 수집 이전에 먼저 멀티미디어 품질을 설정하고, 사전 설정된 품질 매개변수가 요구 사항을 충족하지 않는 경우 개별적인 사용자 정의 설정을 진행할 수 있습니다.
// 비디오 품질 설정
livePusher.setVideoQuality('720p');
// 오디오 품질 설정
livePusher.setAudioQuality('standard');
// 프레임 레이트 사용자 정의
livePusher.setProperty('setVideoFPS', 25);
4. 스트림 수집 시작: 현재 카메라 디바이스, 마이크 디바이스 수집, 화면 녹화 및 로컬 미디어 파일 스트림 수집을 지원합니다. 멀티미디어 스트림이 성공적으로 수집되면 로컬로 수집된 멀티미디어 화면이 플레이어 컨테이너에서 재생됩니다.
// 카메라 켜기
livePusher.startCamera();
// 마이크 켜기
livePusher.startMicrophone();
5. 푸시 스트리밍 시작: Tencent Cloud LEB 푸시 스트리밍 주소를 전달하고 푸시 스트리밍을 시작합니다. 푸시 스트리밍 주소의 형식은 Tencent Cloud LVB URL을 참고하십시오. RTMP 푸시 스트리밍 주소 앞의 rtmp://webrtc://로 바꾸면 됩니다.
livePusher.startPush('webrtc://domain/AppName/StreamName?txSecret=xxx&txTime=xxx');
설명:
푸시 스트리밍 이전에 멀티미디어 스트림이 수집되었는지 확인하십시오. 그렇지 않으면 푸시 스트리밍 인터페이스 호출이 실패하게 됩니다. 멀티미디어 스트림 수집 후 자동 푸시 스트리밍을 구현하려면 콜백 이벤트 알림을 통해, 첫 번째 프레임이 성공적으로 수집되었다는 알림을 받으면 스트림을 다시 푸시합니다. 비디오 스트림과 오디오 스트림이 동시에 수집된 경우 첫 번째 비디오 프레임과 첫 번째 오디오 프레임의 콜백 알림을 모두 수신한 후 푸시 스트림밍을 진행해야 합니다.
var hasVideo = false;
var hasAudio = false;
var isPush = false;
livePusher.setObserver({
onCaptureFirstAudioFrame: function() {
hasAudio = true;
if (hasVideo && !isPush) {
isPush = true;
livePusher.startPush('webrtc://domain/AppName/StreamName?txSecret=xxx&txTime=xxx');
}
},
onCaptureFirstVideoFrame: function() {
hasVideo = true;
if (hasAudio && !isPush) {
isPush = true;
livePusher.startPush('webrtc://domain/AppName/StreamName?txSecret=xxx&txTime=xxx');
}
}
});

6. LEB 푸시 스트리밍 중지:
livePusher.stopPush();
7. 멀티미디어 스트림 수집 중지:
// 카메라 끄기
livePusher.stopCamera();
// 마이크 끄기
livePusher.stopMicrophone();


고급 전략

호환성

SDK는 WebRTC와 브라우저의 호환성을 확인하는 스태틱 메소드를 제공합니다.
TXLivePusher.checkSupport().then(function(data) { // WebRTC 지원 여부 if (data.isWebRTCSupported) { console.log('WebRTC Support'); } else { console.log('WebRTC Not Support'); } // H264 인코딩 지원 여부 if (data.isH264EncodeSupported) { console.log('H264 Encode Support'); } else { console.log('H264 Encode Not Support'); }});

콜백 이벤트 알림

SDK는 현재 콜백 이벤트 알림을 제공하고 있으며, Observer 설정을 통해 SDK 내부 상태 정보 및 WebRTC 관련 데이터 통계를 알아볼 수 있습니다.
livePusher.setObserver({ // 푸시 스트리밍 경고 메시지 onWarning: function(code, msg) { console.log(code, msg); }, // 푸시 스트리밍 연결 상태 onPushStatusUpdate: function(status, msg) { console.log(status, msg); }, // 푸시 스트리밍 통계 데이터 onStatisticsUpdate: function(data) { console.log('video fps is ' + data.video.framesPerSecond); }});


디바이스 관리

SDK는 사용자가 디바이스 리스트 가져오기, 디바이스 전환과 같은 작업을 수행하는 데 도움이 되는 디바이스 관리 인스턴스를 제공합니다.
var deviceManager = livePusher.getDeviceManager();// 디바이스 리스트 가져오기deviceManager.getDevicesList().then(function(data) { data.forEach(function(device) { console.log(device.deviceId, device.deviceName); });});// 카메라 디바이스 전환deviceManager.switchCamera('camera_device_id');


도움말 및 지원

문제 해결에 도움이 되었나요?

피드백