안녕하세요, 메이아이의 Engineer 고강련입니다.
영상처리에 꼭 필요한 것 중 하나는 영상을 어떻게 처리하고, 저장할 수 있는지라고 생각합니다. 메이아이에서는 실시간 영상 수집을 위한 개발을 진행하고 있는데요. 오늘은 이를 위한 도구 중 하나인 Gstreamer라는 파이프라인 기반 멀티미디어 프레임워크의 사용법에 대해 공유해 드리고자 합니다. Gstreamer는 오디오 및 비디오 재생, 저장, 처리 등을 할 수 있는 프레임워크로 영상 편집기, 미디어 플레이어 같은 프로그램을 만드는데도 사용할 수 있습니다.
Gstreamer를 어떻게 설치하는지에서부터 구성 요소와 용어는 어떤 것을 사용하는지, Gstreamer를 사용하는 예시는 무엇인지 등에 대해서 테스트해 보고, 성공했던 예시를 알려드리겠습니다. 이번 포스팅에서는 Ubuntu 18.04 LTS가 설치된 라즈베리파이4를 사용합니다 :)
라즈베리파이4에 Gstreamer 최신 버전 설치하기
Gstreamer의 최신 버전을 설치하는 것은 매우 간단합니다. 이곳을 눌러서 이동한 뒤, 자신의 운영체제에 해당하는 명령어를 ‘복사- 붙여넣기’만 하면 됩니다. Ubuntu 18.04 LTS를 설치한 라즈베리파이4에는 [Install GStreamer on Ubuntu or Debian] 의 코드를 사용해야겠네요!
라즈베리파이4에 Gstreamer 1.16 version 설치하기
Gstreamer의 버전은 많고, 사용하고자 하는 기능이 최신 릴리즈 버전에 존재하지 않을 때는 원하는 Gstreamer 버전을 선택해 빌드하는 것이 좋습니다.
패키지 설치
아래의 명령어를 입력해 패키지를 설치합니다.
설치 중에 아래와 같은 libtag1-dev 설치 오류가 발생하면, ‘sudo apt-get update -y’ 명령어를 입력한 후 다시 진행합니다.
설치 중에 gobject-introspection (1.58.3–2) 항목에서 시간이 조금 소요되는데요. 오류가 난 것이 아니니 안심하셔도 됩니다 :)
설치가 제대로 되면 아래의 로그가 남습니다.
dir 생성 및 dir 이동
필요한 디렉토리를 생성 후 이동합니다.
repo에서 다운로드
이렇게 설치를 마친 후 h264parse를 사용할 때 h264parse가 없으면 해당 플러그인을 새로 설치하면 됩니다.
다운로드한 파일 빌드하기
위에서 다운받은 gstreamer, gst-plugins-(base, good, ugly, bad), gst-libav, gst-python를 빌드합니다. 총 7개 폴더에서 빌드를 해야하니 꼼꼼하게 확인해 주세요.
각 명령어 중 autogen.sh, make 하는 데에 약 10~20분의 시간이 걸리는 점은 참고해 주세요. 이후, branch 종류를 확인하고 원하는 버전을 $BRANCH 위치에 넣어주어야 합니다. 여기서는 1.16 버전을 사용해 보겠습니다.
어떤 branch가 존재하는지 ‘git branch -r’ 명령어로 확인할 수 있습니다.
1) gstreamer
2) gst-plugins-base
3) gst-plugins-good
4) gst-plugins-ugly
5) gst-libav
6) gst-plugins-bad
7) gst-python
motion cells를 위한 gstreamer-devel 설치하기
gstreamer1.0-opencv 안에 motioncells 존재하는데요. 현재는 gstreamer1.0-opencv가 없으므로, gstreamer1.0-opencv를 설치합니다.
설치 확인하기, 테스트 코드
설치 확인하기
ip camera의 rtsp protocol에 접근해 영상을 가져 오는 테스트 코드
pipline_r 변수에 들어가는 것이 pipeline을 구성하는 것입니다.
마치며
지금까지 최신 Gstreamer를 설치하는 방법, 원하는 버전의 Gstreamer를 설치하는 방법에 대해 다루었습니다. 다음 포스팅에서는 Gstreamer의 기초와 각종 예시에 대해 알려드리겠습니다.