gstreamer

Janice._.oooh·2022년 3월 30일
0

GStreamer

목록 보기
1/3

// 2022.03.30 기준

gstreamer 프로그램 다운로드


Installing on Windows을 참고하여 작성하였습니다.
Download GStreamer -> 다운로드 하기

1) MSVC 64-bit항목의 runtime installer, development installer 모두 다운로드

2) Typical/Complete 선택 (저자는 Complete 선택)

3) 설치가 완료되면 C:\gstreamer에 설치 (경로는 사용자마다 다름.)

4) 윈도우 키 + R -> sysdm.cpl를 입력하여 시스템 속성에 들어가서 환경변수 Path에 경로(C:\gstreamer\1.0\msvc_x86_64\bin)를 추가.

5) 새로운 환경 변수 GST_PLUGIN_SYSTEM_PATH를 추가하여 경로(C:\gstreamer\1.0\msvc_x86_64\lib\gstreamer-1.0) 추가

6) 명령 프롬프트에서 다음 명령을 실행하여 확인
gst-launch-1.0 videotestsrc ! videoconvert ! autovideosink
아래와 같은 비디오 창이 실행되어야 성공.



gstreamer 개발 환경 만들기


0) Visual Studio 2022 다운로드

1) Visual Studio 2022에서 새프로젝트 만들기

2) Windows 데스크톱 마법사

3) 프로젝트 -> 속성
환경에 아래 값 입력
PATH=C:\gstreamer\1.0\msvc_x86_64\bin;%PATH%

추가 포함 디렉터리 (헤더파일 위치 알려주기)
C:\gstreamer\1.0\msvc_x86_64\lib\glib-2.0\include;C:\gstreamer\1.0\msvc_x86_64\include\gstreamer-1.0;C:\gstreamer\1.0\msvc_x86_64\include\glib-2.0;C:\gstreamer\1.0\msvc_x86_64\include\glib-2.0\glib

추가 라이브러리 디렉터리 (라이브러리파일 위치 알려주기)
C:\gstreamer\1.0\msvc_x86_64\lib

추가 종속성 (사용할 라이브러리 이름 알려주기)
gobject-2.0.lib;glib-2.0.lib;gstreamer-1.0.lib;

모든 셋업이 끝난 뒤 "확인" 클릭



gstreamer 테스트


Basic tutorial 1: Hello world!를 이용하여 테스트

아래 예시 코드를 작성한 뒤, 실행

#include <gst/gst.h>

int main(int argc, char* argv[])
{
    GstElement* pipeline;
    GstBus* bus;
    GstMessage* msg;

    /* Initialize GStreamer */
    gst_init(&argc, &argv);

    /* Build the pipeline */
    pipeline =
        gst_parse_launch
        ("playbin uri=https://www.freedesktop.org/software/gstreamer-sdk/data/media/sintel_trailer-480p.webm",
            NULL);

    /* Start playing */
    gst_element_set_state(pipeline, GST_STATE_PLAYING);

    /* Wait until error or EOS */
    bus = gst_element_get_bus(pipeline);
    msg =
        gst_bus_timed_pop_filtered(bus, GST_CLOCK_TIME_NONE,
            (GstMessageType)(GST_MESSAGE_ERROR | GST_MESSAGE_EOS));

    /* See next tutorial for proper error message handling/parsing */
    if (GST_MESSAGE_TYPE(msg) == GST_MESSAGE_ERROR) {
        g_error("An error occurred! Re-run with the GST_DEBUG=*:WARN environment "
            "variable set for more details.");
    }

    /* Free resources */
    gst_message_unref(msg);
    gst_object_unref(bus);
    gst_element_set_state(pipeline, GST_STATE_NULL);
    gst_object_unref(pipeline);
    return 0;
}

오디오와 함께 인터넷에서 바로 재생되는 비디오가 포함된 팝업 창이 플레이 되면 성공!



Reference)

0개의 댓글