기본 콘텐츠로 건너뛰기

NVIDIA TX2 Gstreamer 1.12.2 설치하기

결론

1.12와 1.8간의 버젼차이로 주요 plugin들이 제대로 동작하지 않습니다.
같은 방법으로 1.8.3을 manual로 재설치하면 잘 동작합니다.

---------------------------------------------------------------------------------

TX2 Board는 ubuntu 기반으로 되어 있습니다.

기존  Gstreamer  1.8 가 설치되어 있는데, 17년 7월 중순에 릴리즈된 1.12을 설치하는 방법입니다. NVIDIA 공식문서에도 간단히 설명이 되어 있지만 시행착오부분이 있어 정리합니다.

원래 gst-install 이라는 툴을 제공해서 간단히 설치하면 되지만, 본인의 환경에서는 (JetSon3 설치이후) gst-install에서 내부적으로 수행하는 wget 이 인증문제가 발생하여 사용할 수 없었습니다.

참고내용
  • http://developer.download.nvidia.com/embedded/L4T/r23_Release_v1.0/L4T_Tegra_X1_Multimedia_User_Guide.pdf
  • https://developer.nvidia.com/embedded/dlc/l4t-accelerated-gstreamer-guide-27-1



설치하려는 위치
/home/nvidia/works/fakeroot

Gstreamer 파일을 다운받을 위치는 아무곳이나 상관없지만 여기서는
/home/nvidia/works/gst
라고 가정합니다.

mkdir -p /home/nvidia/works/fakeroot
mkdir -p /home/nvidia/works/gst

cd /home/nvidia/works/gst

Gstreamer 패키지를 다운받습니다.

● gstreamer-1.12.2.tar.xz
● gst-plugins-base-1.12.2.tar.xz
● gst-plugins-good-1.12.2.tar.xz
● gst-plugins-bad-1.12.2.tar.xz
● gst-plugins-ugly-1.12.2.tar.xz

wget 인증에러가 발생하므로(개별 환경마다 다른것 같습니다)
wget --no-check-certificate https://gstreamer.freedesktop.org/src/gstreamer/gstreamer-1.12.2.tar.xz


--no-check-certificate 옵션을 붙여서 전부 다운받고 압축을 해제합니다.


빌드에 필요한 패키지를 설치합니다.
sudo apt-get install build-essential dpkg-dev flex bison autotools-dev automake liborc-dev autopoint libtool gtk-doc-tools libgstreamer1.0-dev

sudo apt-get install libxv-dev libasound2-dev libtheora-dev libogg-dev libvorbis-dev
sudo apt-get install libbz2-dev libv4l-dev libvpx-dev libjack-dev libsoup2.4-dev libpulse-dev
sudo apt-get install faad libfaad-dev libfaac-dev libgl1-mesa-dev libgles2-mesa-dev libopencv-dev

sudo apt-get install libx264-dev libmad0-dev



환경변수를 변경합니다.

export LD_LIBRARY_PATH=/home/nvidia/works/fakeroot/lib/
export PKG_CONFIG_PATH=/home/nvidia/works/fakeroot/lib/pkgconfig


압축이 풀린 개별 directory로 이동해서 configure합니다. prefix인자를 지정합니다.
./configure --prefix=/home/nvidia/works/fakeroot

단 bad plugin은 DRM관련 인증에러가 발생합니다.
  1. ake[5]: Entering directory '/home/nvidia/works/gst/gst-plugins-bad-1.12.2/tests/examples/gl/generic/cube'
  2. CXX cube-main.o
  3. CXXLD cube
  4. /usr/lib/gcc/aarch64-linux-gnu/5/../../../aarch64-linux-gnu/libGL.so: undefined reference to `drmMap'
  5. /usr/lib/gcc/aarch64-linux-gnu/5/../../../aarch64-linux-gnu/libGL.so: undefined reference to `drmCloseOnce'
  6. /usr/lib/gcc/aarch64-linux-gnu/5/../../../aarch64-linux-gnu/libGL.so: undefined reference to `drmUnmap'
  7. /usr/lib/gcc/aarch64-linux-gnu/5/../../../aarch64-linux-gnu/libGL.so: undefined reference to `drmOpenOnce'
  8. collect2: error: ld returned 1 exit status

이것을 피하려면 --disable-examples 을 추가합니다.
./configure --prefix=/home/nvidia/works/fakeroot --disable-examples

이것을 추가했을때 side effect는 확인못했습니다.


끝으로 nvidia 독점권이 있는 plugin과 h파일을 새로운 위치로 복사합니다.

libgstnvcamera.so
libgstnveglglessink.so
libgstnveglstreamsrc.so
libgstnvegltransform.so
libgstnvivafilter.so
libgstnvvidconv.so
libgstnvvideosink.so
libnvgstjpeg.so
libgstomx.so
 
cp /usr/lib/aarch64-linux-gnu/gstreamer-1.0/* home/nvidia/works/fakeroot/lib/gstreamer-1.0/ -n


cp /usr/lib/aarch64-linux-gnu/gstreamer-1.0/include/gst/gstconfig.h /home/nvidia/works/fakeroot/lib/gstreamer-1.0/include/gst






댓글