반응형

Visual Studio 2019에서 GStreamer를 사용하기 위해 설정하는 방법을 설명합니다. 



2022. 1. 13  최초작성



1. 다음 링크에서 Visual Studio용 GStreamer를 다운로드할 수 있습니다. 글작성 시점에서 최신버전은 1.18.5 입니다.  MSVC 64-bit 항목에 있는 runtime installer와 development installer를 다운로드 해야 합니다.

 

https://gstreamer.freedesktop.org/download/ 

 





2. gstreamer-1.0-msvc-x86_64-1.18.5.msi 설치를 진행합니다. 설치 중 Typical을 선택했습니다.

 

주의할점은 USB 메모리나 외장 하드가 연결되지 않은 상태에서 해야 합니다. 마지막 드라이브에 설치되기 때문입니다. 

예를 들어 C드라이브와 D드라이브가 있는 경우 D드라이브에 설치됩니다. 

원하는 디렉토리로 변경하려면 Custom을 선택하여 진행하세요. 이때 설치 패키지 항목은 변경할 필요가 없습니다.






3. gstreamer-1.0-devel-msvc-x86_64-1.18.5.msi 설치를 진행합니다.  설치 중 Typical을 선택했습니다.

 

주의할점은 USB 메모리나 외장 하드가 연결되지 않은 상태에서 해야 합니다. 마지막 드라이브에 설치되기 때문입니다. 

예를 들어 C드라이브와 D드라이브가 있는 경우 D드라이브에 설치됩니다. 

원하는 디렉토리로 변경하려면 Custom을 선택하여 진행하세요. 이때 설치 패키지 항목은 변경할 필요가 없습니다.

 



4. 설치가 완료되면 D:\gstreamer에 설치됩니다.  드라이브명은 사용하는 PC의 마지막 드라이브가 됩니다. 

 

본 글에서는 D:\gstreamer에 설치된 것으로 가정하고 진행하니 주의하세요.



5. 윈도우 키 + R을 누른 후,  sysdm.cpl을 실행합니다.

사용자 변수에 gstreamer의 루트 디렉토리가 다음처럼 추가되어 있습니다.  설치한 PC의 드라이브 차이로 다음 경로에서 드라이브명만 차이가 있을 수 있습니다.





6. 환경변수 path에 gstreamer의 bin 디렉토리를 추가합니다. 설치한 PC의 드라이브 차이로 다음 경로에서 드라이브명만 차이가 있을 수 있습니다.

 

D:\gstreamer\1.0\msvc_x86_64\bin




7. 시스템 변수에 다음 변수를 추가합니다. 

 

변수 이름 : GST_PLUGIN_SYSTEM_PATH

변수 값     : D:\gstreamer\1.0\msvc_x86_64\lib\gstreamer-1.0

 



8. 명령 프롬프트에서 다음 명령을 실행합니다. 다음처럼 실행되어야 합니다. 문제가 있다면 앞에서 설정이 잘못된 것입니다. 

 

gst-launch-1.0 videotestsrc ! videoconvert ! autovideosink

 



9. Visual Studio 2019에서 새 프로젝트 만들기를 선택합니다. 

 



10. Windows 데스크톱 마법사를 선택합니다.

 



11. 프로젝트 이름을 적고 만들기를 클릭합니다. 

 



12. 애플리케이션 종류로 콘솔 애플리케이션을 선택하고, 빈 프로젝트를 체크합니다. 확인을 클릭합니다. 

 



13. 솔루션 탐색기에서 소스 파일을 선택하고 마우스 우클릭하여 메뉴에서 추가 > 새 항목을 선택합니다. 

 



14. C++ 파일을 선택하고 이름 항목에서 cpp 파일 이름을 수정합니다. 추가를 클릭합니다. 

 



15. 솔루션 플랫폼을 x64로 변경합니다.

 



16. 메뉴에서 프로젝트 > 속성을 선택합니다. 



17. 구성을 모든 구성으로 변경하고 왼쪽 항목에서 디버깅을 선택합니다. 오른쪽에서 환경을 선택하고 다음값을 입력합니다. 

DLL 파일의 위치를 알려주기 위한 것입니다. 

 

PATH=D:\gstreamer\1.0\msvc_x86_64\bin;%PATH%

 



18. 왼쪽 항목에서 C/C++ 항목을 선택하고 오른쪽에서 추가 포함 디렉터리를 선택한 후, 다음 값을 입력합니다. 

헤더파일 위치를 알려주기 위한 것입니다. 

 

D:\gstreamer\1.0\msvc_x86_64\lib\glib-2.0\include;D:\gstreamer\1.0\msvc_x86_64\include\gstreamer-1.0;D:\gstreamer\1.0\msvc_x86_64\include\glib-2.0;D:\gstreamer\1.0\msvc_x86_64\include\glib-2.0\glib

 



19. 왼쪽 항목에서 링커를 선택하고 오른쪽에서 추가 라이브러리 디렉터리를 선택한 후, 다음 값을 입력합니다. 

라이브러리 파일 위치를 알려주기 위한 것입니다. 

 

D:\gstreamer\1.0\msvc_x86_64\lib

 



20. 왼쪽 항목에서 링커 > 입력을 선택하고, 오른쪽에서 추가 종속성을 클릭한 후, 다음 값을 입력합니다.

사용할 라이브러리 이름을 알려주기 위한 것입니다.  

 

gobject-2.0.lib;glib-2.0.lib;gstreamer-1.0.lib;

 

 

설정이 완료되었으니 확인 버튼을 클릭하세요. 



21. 다음 코드를 cpp 파일에 복사합니다.

 

#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));

    /* Free resources */
    if (msg != NULL)
        gst_message_unref(msg);

    gst_object_unref(bus);
    gst_element_set_state(pipeline, GST_STATE_NULL);
    gst_object_unref(pipeline);

    return 0;
}




22. 실행해보면 다음처럼 영상이 플레이 됩니다. 디버그 / 릴리즈 모드에서 동작이 가능했습니다. 

 





참고한 사이트 

 

https://homanhuang.medium.com/back-to-the-gstreamer-basic-1-c-vs2019-d516c35c9e2f



반응형

해보고 확인한 것을 문서화하여 기록합니다.
최소 일주일에 한번 이상 포스트를 하려고 노력중입니다.

부족함이 있지만 도움이 되었으면 합니다.
잘못된 부분이나 개선점을 알려주시면 감사하겠습니다.



포스트 작성시에는 문제 없었지만 이후 문제가 생길 수 있습니다.
시간날때 마다 이전 포스트가 문제 있는지 확인을 해보려고 노력하고 있습니다.
질문을 남겨주면 가능한 빨리 답변드립니다.


제가 쓴 책도 한번 검토해보세요 ^^

  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기

댓글을 달아 주세요

">