본문 바로가기
서버/리눅스 서버

데비안 패키지 (deb파일) 만들기 && Debian 8 64비트 시스템에 한방에 QuickSync 인코딩 환경 설치하기 (QSV,IMSS,FFMPEG)

by ㅋㅋ잠자 2018. 5. 9.
반응형

안녕하세요.


데비안 8 amd64 시스템에 적용되는 QSV 한방 패키지 입니다.


데비안 9 에서도 되는지는 잘 모르겠습니다.


IMSS 2016 기반으로 만들었고 4 5 6 세대 지원입니다. 7세대는 지원되지 않습니다.


카페에서 공구한 i3-5005u 시스템에 적용 가능합니다. 


커널패치는 4세대 6세대가 필요합니다. 5세대는 데비안8의 백포트 커널 4.9에서 기본적으로 지원됩니다.


백업용 글임으로 상세하게 적지 않습니다.





1. 패키지 빌드 방법


디렉터리 구조


├── DEBIAN

├── opt

│   └── ffmpeg

│       ├── compat

│       │   ├── aix

│       │   ├── avisynth

│       │   │   ├── avs

│       │   │   └── windowsPorts

│       │   ├── cuda

│       │   ├── dispatch_semaphore

│       │   ├── float

│       │   ├── msvcrt

│       │   ├── nvenc

│       │   ├── plan9

│       │   ├── solaris

│       │   ├── tms470

│       │   └── windows

│       ├── doc

│       │   ├── doxy

│       │   └── examples

│       ├── libavcodec

│       │   ├── aarch64

│       │   ├── alpha

│       │   ├── arm

│       │   ├── avr32

│       │   ├── bfin

│       │   ├── mips

│       │   ├── neon

│       │   ├── ppc

│       │   ├── sh4

│       │   ├── sparc

│       │   ├── tests

│       │   │   ├── arm

│       │   │   ├── ppc

│       │   │   └── x86

│       │   └── x86

│       ├── libavdevice

│       │   └── tests

│       ├── libavfilter

│       │   ├── tests

│       │   └── x86

│       ├── libavformat

│       │   └── tests

│       ├── libavresample

│       │   ├── aarch64

│       │   ├── arm

│       │   ├── tests

│       │   └── x86

│       ├── libavutil

│       │   ├── aarch64

│       │   ├── arm

│       │   ├── avr32

│       │   ├── bfin

│       │   ├── mips

│       │   ├── ppc

│       │   ├── sh4

│       │   ├── tests

│       │   ├── tomi

│       │   └── x86

│       ├── libpostproc

│       ├── libswresample

│       │   ├── aarch64

│       │   ├── arm

│       │   ├── tests

│       │   └── x86

│       ├── libswscale

│       │   ├── aarch64

│       │   ├── arm

│       │   ├── ppc

│       │   ├── tests

│       │   └── x86

│       ├── presets

│       ├── tests

│       │   ├── api

│       │   ├── checkasm

│       │   │   ├── aarch64

│       │   │   ├── arm

│       │   │   └── x86

│       │   ├── fate

│       │   ├── filtergraphs

│       │   └── ref

│       │       ├── acodec

│       │       ├── fate

│       │       ├── lavf

│       │       ├── lavf-fate

│       │       ├── seek

│       │       ├── vsynth

│       │       ├── vsynth1

│       │       └── vsynth_lena

│       └── tools

├── root

└── usr

    └── lib

        └── pkgconfig


DEBIAN 폴더를 제외하고는 설치시 그대로 복사됩니다.


DEBIAN 폴더 내용


root@DESKTOP-CTBRHLM:~/qsv-2016-ffmpeg/DEBIAN# ls

control  postinst


control 내용 (패키지 명 , 버전, 메인테이너, 의존성 패키지 목록, 설명)


Package: qsv-2016-ffmpeg

Source: imss 2016 , ffmpeg 3.2

Version: 1.0.2-djjproject

Architecture: amd64

Maintainer : djjproject

Depends : gcc, gobjc, pkg-config, libpthread-stubs0-dev, libpciaccess-dev, make, patch, yasm, g++, autoconf, cmake, automake, build-essential, libass-dev, libfreetype6-dev, libgpac-dev, libsdl1.2-dev, libtheora-dev, libtool, libva-dev, libvdpau-dev, libvorbis-dev, libx11-dev, libxext-dev, libxfixes-dev, texi2html, zlib1g-dev, libx264-dev, libmp3lame-dev, libfaac-dev, librtmp-dev, libvo-aacenc-dev, libx264-dev, cifs-utils, lsb-release, libfdk-aac-dev

Homepage: http://blog.djjproject.com/

Description: qsv auto installer. fix make -j option. fix error.


postinst 의 내용


#!/bin/sh

# mediasdk install

clear

echo " -------------------------------"

echo "mediasdk install..."

echo " -------------------------------"

sleep 3

cd /root

tar xf MediaServerStudioEssentials2016.tar.gz

cd /root/MediaServerStudioEssentials2016

tar xf SDK2016Production16.4.4.tar.gz

cd /root/MediaServerStudioEssentials2016/SDK2016Production16.4.4/Generic

tar xf intel-linux-media-ocl_generic_16.4.4-47109_64bit.tar.gz

./install_media.sh << EOF

YES

EOF


# libdrm install

clear

echo " -------------------------------"

echo "libdrm install..."

echo " -------------------------------"

sleep 3

cd /opt/intel/mediasdk/opensource/libdrm/2.4.54-47109

tar xf libdrm-2.4.54.tar.bz2

cd /opt/intel/mediasdk/opensource/libdrm/2.4.54-47109/libdrm-2.4.54

./configure --prefix=/usr --libdir=/usr/lib/x86_64-linux-gnu

make -j `cat /proc/cpuinfo | grep cores | wc -l`

make install


# libva install

clear

echo " -------------------------------"

echo "libva install..."

echo " -------------------------------"

sleep 3

cd /opt/intel/mediasdk/opensource/libva/1.67.0.pre1-47109

tar xf libva-1.67.0.pre1.tar.bz2

cd /opt/intel/mediasdk/opensource/libva/1.67.0.pre1-47109/libva-1.67.0.pre1

./configure --enable-static --prefix=/usr --libdir=/usr/lib/x86_64-linux-gnu

make -j `cat /proc/cpuinfo | grep cores | wc -l`

make install


# libmfx install

clear

echo " -------------------------------"

echo "libmfx install..."

echo " -------------------------------"

sleep 3

mkdir -p cd /opt/intel/mediasdk/opensource/mfx_dispatch/build

cd /opt/intel/mediasdk/opensource/mfx_dispatch/build

cmake ?D__ARCH:STRING=intel64 ../

make -j `cat /proc/cpuinfo | grep cores | wc -l`


# libmfx setting

clear

echo " -------------------------------"

echo "setting the libmfx..."

echo " -------------------------------"

sleep 3

ln -s /opt/intel/mediasdk/include/ /usr/local/include/mfx

ln -sf /opt/intel/mediasdk/opensource/mfx_dispatch/build/__lib/libmfx.a /usr/lib/x86_64-linux-gnu/

ln -sf /opt/intel/mediasdk/opensource/mfx_dispatch/build/__lib/libdispatch_trace.a /usr/lib/x86_64-linux-gnu/

ln -sf /opt/intel/mediasdk/opensource/mfx_dispatch/build/__lib/libdispatch_shared.a /usr/lib/x86_64-linux-gnu/

ln -sf /opt/intel/mediasdk/opensource/libva/1.67.0.pre1-47109/libva-1.67.0.pre1/va/.libs/libva.a /usr/lib/x86_64-linux-gnu/

ln -sf /opt/intel/mediasdk/opensource/libva/1.67.0.pre1-47109/libva-1.67.0.pre1/va/.libs/libva-drm.a /usr/lib/x86_64-linux-gnu/

ln -sf /opt/intel/mediasdk/opensource/libva/1.67.0.pre1-47109/libva-1.67.0.pre1/va/.libs/libva-tpi.a /usr/lib/x86_64-linux-gnu/


# /etc/environment

clear

echo " -------------------------------"

echo "set environment..."

echo " -------------------------------"

sleep 3

echo "LD_LIBRARY_PATH="/usr/local/lib:/usr/lib64:/usr/lib/x86_64-linux-gnu"" >> /etc/environment

echo "MFX_HOME=/opt/intel/mediasdk" >> /etc/environment

echo "LIBVA_DRIVER_NAME=iHD" >> /etc/environment

echo "LIBVA_DRIVERS_PATH=/usr/lib/x86_64-linux-gnu/dri" >> /etc/environment

source /etc/environment


# module copy

clear

echo " -------------------------------"

echo "module copying..."

echo " -------------------------------"

sleep 3

cp /opt/intel/mediasdk/lib64/iHD_drv_video.so /usr/lib/x86_64-linux-gnu/dri/iHD_drv_video.so

cp /opt/intel/mediasdk/lib64/iHD_drv_video.so /usr/lib/x86_64-linux-gnu/dri/i965_drv_video.so

cp /opt/intel/mediasdk/lib64/libmfxsw64-p.so.1.17 /usr/lib/x86_64-linux-gnu/dri/libmfxsw64-p.so.1.17

cp /opt/intel/mediasdk/lib64/libmfxhw64-p.so.1.17 /usr/lib/x86_64-linux-gnu/dri/libmfxhw64-p.so.1.17

cp /opt/intel/mediasdk/lib64/libmfxsw64-p.so.1.17 /usr/lib/x86_64-linux-gnu/dri/libmfxsw64.so

cp /opt/intel/mediasdk/lib64/libmfxhw64-p.so.1.17 /usr/lib/x86_64-linux-gnu/dri/libmfxhw64.so

ldconfig -v


# ffmpeg compile

clear

echo " -------------------------------"

echo "compile and install ffmpeg..."

echo " -------------------------------"

sleep 3

cd /opt/ffmpeg

./configure --prefix=/usr --enable-nonfree --enable-static --enable-libmfx --enable-gpl --enable-libfdk-aac

make -j `cat /proc/cpuinfo | grep cores | wc -l`

make install

vainfo

echo ""

echo ""

echo " -------------------------------"

echo "install finished..."

echo " -------------------------------"


postinst 의 경우 복사한 후에 실행할 스크립트 입니다.


간단히 알아보면 아래와 같습니다.


preinst, postinst, prerm, postrm 등이 있는데요. 파일을 복사하기전에 실행하는 스크립트, 나중에 하는 스크립트.. 지우기 전에 할 스크립트 지우고 나서 할 스크립트 ..


이런식으로 구성되어 있고 만들때에 꼭 실행권한을 주셔야합니다.


패키지 만드는 명령


root@DESKTOP-CTBRHLM:~# dpkg -b qsv-2016-ffmpeg/


이런식으로 됩니다. 


물론 automate 스크립트가 있겠지만.. 간단히 만들때에는 편하겠지요?





2. 설치 방법 및 패키지 다운로드


imss 와 ffmpeg 를 동봉하였습니다만, 계약 내용에 문제가 있으면 파일을 내리도록 하겠습니다.



wget 으로 받으신 다음 설치하시길 바랍니다.


ffmpeg 가 포함되고 바이너리 상태가 아니라 컴파일 작업이 포함되어 있습니다. 컴파일 된 파이너리를 넣으려고 했으나 귀찮아서 수정을 안하고 있습니다.


설치할때, 의존성 에러가 발생하면 


1. repo 에 main contrib non-free 설정을 해줘야합니다.


2. apt-get -f install 명령으로 설치합니다.


필요하신 시스템 (4세대 6세대) 은 커널도 올리시길 바랍니다.


설치영상 5분 남짓



감사합니다.

반응형

댓글