OBS (open boardcast server) structural analysis

This blog is reproduced in: https://www.cnblogs.com/xylc/p/3640994.html


1. Introduction

OBS (open boardcast server) is an open source software for live broadcast.

Official website: https://obsproject.com/

Code hosting address: https://github.com/jp9000/OBS

git address: https://github.com/jp9000/OBS.git

Second, the structure

The project file structure is as follows:

obs

3. Analysis

The latest OBS can only run on Vista and above operating systems, and the graphics card must support at least DX10.

The compilation of OBS requires visual studio 2013 (C++11 rewrites some code), of course, you can also switch to the old version to compile, but new features or bug fixes cannot be enabled.

OBS includes five major components, as well as some additional features:

video source :

a,DShow的capture filter;

b, the game screen, the hook part is realized by minihook, the obtained surface is displayed on the OBS main window through D3D10 sharing, and sent to the OBS process through the shared memory for encoding;

c, desktop window screen, realized through GDI;

d, picture;

source sound:

a, microphone and desktop sound, obtained through MMDevice;

b, blank, no sound;

video encoder:

a,x264;

b,nvidia cuda video encoder;

c,intel QSV video encode;

audio encoder:

a, MP3, realized by lame library;

b, aac, implemented through the libfaac library;

stream destination:

a, rtmp stream, implemented through librtmp;

b, file stream, which can generate FLV/MP4 files;

Additional features:

a, audio resampling, implemented by libsamplerate library;

b, audio denoising;

c, automatic update;

Fourth, summary:

OBS logically distinguishes very clearly, but the code part is very complicated. Therefore, the author is writing a new C++11 adaptation project across windows/linux/mac platforms.

Address: https://github.com/jp9000/obs-studio



Guess you like

Origin http://43.154.161.224:23101/article/api/json?id=325723890&siteId=291194637