«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Archives
Today
Total
관리 메뉴

VIDEOCUBE

OBS Studio 분석 (3) - 구조 본문

분석

OBS Studio 분석 (3) - 구조

라떼청년 2021. 3. 8. 02:09

 

 

OBS Studio 분석 (2) - 빌드

OBS 빌드 방법에 대해서 설명하고자 합니다. OBS 빌드는 이전 블로그에서 작성한 내용을 기반으로 준비가 진행된 이후 부터 진행을 합니다. OBS Studio 분석 (1) - 준비 코로나로 인해서 

videocube.tistory.com

이전 블로그에서는 빌드 방법에 따라 정상적으로 인스톨 파일을 생성하는 것 까지 실습해 보았다.

이번 블로그는

1. 시작 지점은 어디서 부터 시작이 되는지
2. 화면 생성은 어떻게 하며, 해당 화면 UI 는 어떻게 사용을 하는지.
3. 폴더는 어떻게 구성이 되어 있는지
4. 플러그인들은 어떤 것들을 사용하고 있는지 

1. 어디서 부터 시작이 되는가.

설치 파일로 설치를 하게 되면, 우선 단축아이콘을 확인해 보자.

"C:\Program Files\OBS Studio (64bit)\bin\64bit\obs64.exe"

이것이 프로그램의 시작지점 이고, 
실제 구동을 하게되면 다음과 같은 화면을 확인할 수 있습니다.

OBS Studio 시작화면

 

Visual Studio 화면으로 잠시 넘어가서, 프로젝트 목록을 확인 해 봅니다.

CMakePredefinedTargets
core
deps
frontend
plugins
scripting

으로 구분이 되어 있으며, 


여기서 frontend 에 obs 의 속성페이지를 열게 되면,

obs64 파일을 생성하는 프로젝트를 확인 할 수 있습니다.

 

 

 

 

 

 

 

 

 

여기에 프로그램 시작점인 main 을 확인 할 수 있으며, 또 다른 exe 파일인 obs-ffmpeg-mux 빌드 프로젝트는 plugins 폴더내 obs-ffmpeg 안에 obs-ffmpeg-mux 에서 프로그램 시작점인 main 을 확인 할 수 있습니다.

설치된 파일을 살펴보면, 실행 파일은 위 두개의 파일을 확인할 수 있습니다.


다음은, 

2. 화면 생성은 어떻게 하며, 해당 화면 UI 는 어떻게 사용을 하는가.

비쥬얼 스튜디오 obs 프로젝트 안에는 Source File, Header File 등이 존재하는데, 여기서 .ui 파일이 보입니다.

클릭을 해보았더니, 연결 프로그램을 선택하라고 합니다. 다시 닫고 다시 클릭을 해보니 XML 파일만 보인다.

.ui 파일을 구글로 검색해보니 QT와 관련된 파일로 .ui 파일을 확인 하려면, 

확장 > 확장관리 > 온라인 에서 QT 를 검색한후 Qt Visual Studio Tools 를 확인 및 설치 할 수 있습니다.

Qt Visual Studio Tools

혹시 Qt 경로가 설정이 되어 있지 않다면,

도구 > 옵션 > Qt 항목에 정상적으로 설정이 되어 있는 지 확인해 보자

Version : 5.15.2_64 
Host : Windows
Path : D:\Qt\5.15.2\msvc2019_64
Compiler : msvc

Qt 버전 설정

다시 ui 파일을 클릭해 보면 다음과 같이 디자인 화면을 볼 수 있다.

이 UI 파일은 어떻게 화면과 연결이 되어 있는지.. 찾아보았다.

구글에 살펴보면, 해당 UI 파일은 Qt에 설치되어 있는 uic 를 이용하여 헤더파일을 생성한 후 사용하는것으로 나와 있다.

이부분은 추후 자세히 다뤄보도록 하고, 프로젝트 내에 Header Files 목록에 보면 ui_OBSBasic.h 와 같이 헤더 파일이 생성한 것을 볼 수 있을 것이다.

Qt UI Header 인 경우 앞에 ui_ 가 공통적으로 붙어져 있다.

 

obs-app.cpp 의 Header 에 보면 obs-app.hdd 라는 파일이 보일것이다.
.hpp 라는 파일은 c와는 구별하기 위한 c++ 용 헤더파일이다.

#include "window-basic-main.hpp"

window-basic-main.cpp 에서 
ㄴ OBSMainWindow(parent), ui(new Ui::OBSBasic) 을 확인 할 수 있다.

#include "ui_OBSBasic.h"

을 확인 할 수 있으며, 해당 ui 에 대한 파일을 가져다 사용하는 것으로 확인이 가능했다.

화면 구조는 대략적으로 QT 를 이용하여 디자인이 된 것을 확인해 볼 수 있으며,

추후 해당 프로젝트에 간단한 UI 를 만들어 버튼과 같이 추가해 보도록 하겠다.

다음은,

3. 폴더는 어떻게 구성이 되어 있는가.

잠시 비주얼 스튜디오를 닫고,

Debug 위치에 가보면,

bin, data, obs-plugins 가 존재 합니다.
인스톨 파일로 설치 시에는 include, cmake 폴더가 더 생기게 됩니다.

bin 폴더에는 
obs64 와 같이 EXE, DLL, PDB, 설치 시 LIB 항목의 파일도 볼 수 있습니다.

EXE 파일에는 
obs64.exe, obs-ffmpeg-mux.exe 이 있고 

DLL 파일들을 살펴 보면,

FFMPEG LIBRARY

avcodec-58.dll, avdevice-58.dll, avfilter-7.dll, avformat-58.dll, avutil-56.dll, swresample-3.dll, 
swscale-5.dll : display the video at a different pixel size/aspect ratio
swresample-3.dll : audio resampling library

OBS 관련 라이브러리

libobs-d3d11.dll, libobs-opengl.dll, libobs-winrt.dll, obs-frontend-api.dll, obsglad.dll, obs-scripting.dll, obs.dll

QT 관련 라이브러리

Qt5Cored.dll, Qt5Guid.dll, Qt5Networkd.dll, Qt5Svgd.dll, Qt5Widgetsd.dll, Qt5Xmld.dll

루아를 위한 라이브러리

lua51.dll

영상에 필요한 코덱 라이브러리

libogg-0.dll, , libx264-161.dll, libopus-0.dll, libvpx-1.dll
libvorbis-0.dll
libvorbisenc-2.dll, : a BSD-style license library that provides a simple, programmatic encoding setup interface
libvorbisfile-3.dll : a BSD-style license convenience library built on Vorbis designed to simplify common uses
libsrt.dll : 문자열, 벡터, 비트 세트, 세트, ​​맵, 해시 세트 및 해시 맵을 제공하는 C 라이브러리입니다.

EGL 관련 라이브러리

libEGLd.dll, libGLESv2d.dll

기타 ( 기회가 되면 찾아보는것으로 하겠습니다. )

 

libmbedcrypto.dll
w32-pthreads.dll
libcurl.dll
zlib.dll

그외에 iconengines,imageformats, platforms, styles 폴더가 있으며, 

iconengines 폴더와 imageformats 폴더에는 

qsvgicond.dll

platforms 폴더

qwindowsd.dll

styles 폴더

qwindowsvistastyled.dll

 

그외 *.pdb 와 *.lib 파일들이 존재 하며, 
pdb 파일은 Program Debug DataBase 파일로, 프로그램의 디버깅이나 프로젝트 상태 정보가 저장되며,
obs.lib, w32-pthreads.lib 와 같이 Object File Lilbrary 인 .lib 파일은 설치 후에 확인이 가능합니다.

 

이외에 cmake, data, include, obs-plugins 폴더를 확인 할 수 있는데

cmake, data, include 관련된 부분은 제외하고,

obs-plugins 을 확인해 보면, 

coreaudio-encoder.dll
decklink-captions.dll
decklink-ouput-ui.dll
enc-amf.dll
frontend-tools.dll
image-source.dll
obs-ffmpeg.dll
obs-filters.dll
obs-outputs.dll
obs-qsv11.dll
obs-text.dll
obs-transitions.dll
obs-vst.dll
obs-x264.dll
rtmp-services.dll
text-freetype2.dll
win-capture.dll
win-decklink.dll
win-dshow.dll
win-mf.dll
win-wasapi.dll

와 같은 라이브러리들을 확인 할 수 있습니다.

다음 블로그에서는 

1. 플러그인들은 어떤 것들을 사용하고 있는지,
2. Qt 를 이용하여 Obs Studio 에 단순한 버튼 하나를 추가하여 동작 해 보고,
3. 그외 Dependency 한 부분과 화면 캡쳐, 카메라 로딩을 하는 부분을 찾아보도록 하겠습니다.

OBS 에서 필자가 얻고자 하는 정보를 수집하여, 많은 학습의 기회가 되었으면 하는 바램입니다.

반응형

'분석' 카테고리의 다른 글

FFmpeg 분석 (1) - 이해  (0) 2023.12.31
FFmpeg 분석 (2) - 빌드  (0) 2023.12.31
OBS Studio 분석 (2) - 빌드  (1) 2021.03.02
OBS Studio 분석 (1) - 준비  (1) 2021.02.21
[MPEG TS] 구조 분석  (0) 2018.01.02
Comments