라즈베리 파이 4 트랜스코딩 - lajeubeli pai 4 teulaenseukoding

- ffmpeg 다운로드
$ git clone https://git.ffmpeg.org/ffmpeg.git ffmpeg
$ cd ffmpeg
$ mkdir dependencies
$ cd dependencies/
$ mkdir output

- ffmpeg 컴파일
$ git clone http://git.videolan.org/git/x264.git
$ cd x264/
$ ./configure --enable-static --prefix=/home/pi/ffmpeg/dependencies/output/
$ make -j4 (컴파일 문제 혹은 코어4개 사용 안할땐 make -j)
$ make install
$ cd ..

-  ALSA 다운로드
$ wget ftp://ftp.alsa-project.org/pub/lib/alsa-lib-1.1.1.tar.bz2

-  ALSA 컴파일
$ tar xjf alsa-lib-1.1.1.tar.bz2
$ cd alsa-lib-1.1.1/
$ ./configure --prefix=/home/pi/ffmpeg/dependencies/output
$ make -j4
$ make install
$ cd ..

- FDK-AAC 다운로드
$ sudo apt-get install pkg-config autoconf automake libtool
$ git clone https://github.com/mstorsjo/fdk-aac.git

- FDK-AAC 컴파일
$ cd fdk-aac
$ ./autogen.sh
$ ./configure --enable-shared --enable-static
$ make -j4
$ sudo make install
$ sudo ldconfig
$ cd ..

- OMX_core.h 설치
sudo apt-get install libomxil-bellagio-dev

- FFMPEG 컴파일
$ cd ..
$ ./configure --prefix=/home/pi/ffmpeg/dependencies/output
--enable-gpl --enable-libx264 --enable-nonfree --enable-libfdk_aac
--enable-omx --enable-omx-rpi
--extra-cflags="-I/home/pi/ffmpeg/dependencies/output/include"
--extra-ldflags="-L/home/pi/ffmpeg/dependencies/output/lib"
--extra-libs="-lx264 -lpthread -lm -ldl"
$ make -j4 (역시 컴파일 문제 혹은 코어4개 사용 안할땐 make -j)
$ make install

- 사용방법
vi transcoding.sh 파일 하나 만들어 아래의 내용 추가

#!/bin/sh
ffmpeg -c:v h264_mmal -i $1 -c:v h264_omx -preset ultrafast -f mpegts pipe:1

m3u파일에
pipe:///home/pi/transcoding.sh rtp://xxx.xxx.xxx.xxx:5000

원래 라즈베리파이2를 사진이나 간단한 파일 저장용 간이 nas 로 쓰고있었지만

본격적으로 써먹을 생각을 하니

성능도 성능이지만 포함된 이더넷포트가 요즘시대에 맞지않게 100Mb/s 밖에 안되는 물건이라

본격적으로 써먹기엔 글렀다고 판단되어 대신할 새로운 nas 를 하나 들일려고 합니다

그런이유면 라즈베리파이2 usb 포트 4개나 되는데 usb 이더넷 하나 끼우면 안되나? 하시겠지만

지금 기준 io 성능도 절망적 인데다가 usb포트로 외장하드까지 물려 쓰는중이기때문에 의미가 없어 시도조차 하지않았습니다...

(여담으로 라즈베리파이2는 usb 와 이더넷포트가 같은 컨트롤러를 사용합니다 ...)

이런 상황이라 라즈베리파이2를 대신할 물건을 찾아보는중에

저렴한 싸제 nas 로 가느냐 아니면

모든 부분의 성능이 환골탈태된 라즈베리파이4로 가느냐 고민중입니다

사용 목적은 프로그램 코드 , 기타 중요파일 백업 , 미디어파일 백업 및 스트리밍 이 주된목적 입니다

(스트리밍은 어차피 내부망, 집에서만 보고 외부에서는 영상을 잘 보지않아서 트랜스코딩 성능은 크게 중요하지 않습니다)

그리고 가능하면 앱 제작 연습시 사용할 간단한 웹 서버도 돌리고 싶습니다 ... 이거 쓰고보니 라즈베리파이4로 기울어지기는한데...

주된목적은 백업이긴 합니다

가격적 부분만보면 라즈베리파이4 쪽으로 기울어지는데 ... 1부터100까지 다 셋팅해야 되는것도 있지만

nas 를 써먹기위한 os 라던지 플러그인들 지원이 언제까지 해줄지가 걸려서 이런부분은 싸제 nas 가 더 낫지 않을까 싶기도 하구요

어떤선택이 가장 괜찮을까요 ?

라즈베리 파이 4 트랜스코딩 - lajeubeli pai 4 teulaenseukoding
젤리핀(Jellyfin) 무료 소프트웨어 미디어 시스템

라즈베리 파이 4(Raspberry Pi 4) 젤리핀(Jellyfin) 미디어 서버 구축 안내서. 이번 시간에는 라즈베리 파이 4에서 젤리핀(Jellyfin)을 활용한 미디어 서버 구축 방법을 안내한다. 젤리핀(Jellyfin)무료 소프트웨어 미디어 시스템으로 미디어를 제어할 수 있는 자원 봉사자 제작 미디어 솔루션이다. 자신의 서버에서 모든 장치로 영상과 음악 등의 미디어를 스트리밍할 수 있다.

젤리핀은 미디어 수집, 관리 및 스트리밍에 사용할 수 있는 도구다. 시스템에서 젤리핀 서버를 실행하고 포함된 주요 무료 소프트웨어 엔터테인먼트 시스템과 알림 기능에 엑세스할 수 있다. 영화와 TV 프로그램, 음악, 라이브TV와 DVR 등 영상 및 음악과 관련된 모든 종류의 미디어를 자신의 서버에서 관리하고 사용하는 모든 장비에서 스트리밍한다.

컴퓨터와 로쿠(Roku), 안드로이드, iOS(에어 플레이 포함), 안드로이드 및 파이어 TV, 크롬캐스트(코디 환경), 그리고 이 문서에서 다룰 라즈베리 파이까지. PC와 모바일, 마이크로 컴퓨터와 스마트 홈 전반에 걸쳐 젤리핀을 사용할 수 있다.

젤리핀은 엠비(Emby)와 플렉스(Plex)의 완벽한 대안이다. 엠비의 3.5.2 릴리즈로부터 파생됐으며 다른 어떤 문자열 및 프리미엄 라이선스와 기능, 숨겨진 것들이 전혀 없는 GNU GPL 2.0 자유 라이선스를 기반으로 한다.

Jellyfin: The Free Software Media System

Software freedom is important. Jellyfin is Free Software, licensed under the GNU GPL. You can use it, study it, modify it, build it, and distribute it for free, as long as your changes are licensed the same way. The project is community-built, relying enti

jellyfin.org

젤리핀 환경 구성에 앞서 데모 시연 누리집을 방문해 미리 체험할 수 있다. User 란에 demo, Password 란은 비우고 Sign In 단추를 눌러 로그인하고 체험해보시라:

Jellyfin

The Free Software Media System.

demo.jellyfin.org


지금부터 라즈베리 파이 4, 라즈베리 파이 OS(Raspberry Pi OS)에서 젤리핀 미디어 서버를 구축하고 활용하는 방법을 설명할 것이다. 먼저 URL 연결을 통해 설치파일을 내려받아야 한다.

내려받아야 할 파일은 총 세 개다. 일단 jellyfin-ffmpeg를 내려받을 것이며 아래 연결에서 맨 아래 버전으로 이동, 버스터(Buster) armhf 아키텍쳐 버전을 내려받는다. 4.3.11 버전을 기준으로 내려받아야 하는 파일은 jellyfin-ffmpeg_4.3.11-buster_armhf.deb다.

Index of /releases/server/debian/versions/jellyfin-ffmpeg/

repo.jellyfin.org

다음으로 jellyfin-server 데비안 패키지를 내려받을 것이다. 아래 연결에서 맨 아래 버전으로 이동, 동일하게 버스터 armhf 데비안 패키지를 내려받는다. 10.6.4-1 버전을 기준으로 내려받아야 하는 파일은 jellyfin-server_10.6.4-1_armhf.deb다.

Index of /releases/server/debian/versions/stable/server/

repo.jellyfin.org

마지막은 jellyfin-web 데비안 패키지다. 아래 연결에서 맨 아래 버전으로 이동, 버스터 데비안 패키지를 내려받는다. 10.6.4-1 버전을 기준으로 내려받아야 하는 파일은 jellyfin-web_10.6.401_all.deb다.

Index of /releases/server/debian/versions/stable/web/

repo.jellyfin.org


이제 젤리핀 미디어 시스템을 라즈베리 파이 OS에 설치할 것이다. 파일 매니저를 열어 세 개 파일을 내려받은 폴더에 진입해 키보드의 F4를 눌러 터미널을 실행하고 다음을 입력한다:

@2020/11/30: 정확한 설치를 위해 의존하는 at 라이브러리가 함께 설치되도록 커맨드를 변경

sudo apt -y install ./jellyfin-f*.deb ./jellyfin-w*.deb ./jellyfin-s*.deb

설치가 완료되면 터미널에서 젤리핀 서비스가 실행됐는지 확인한다:

sudo systemctl status jellyfin

위 명령을 실행했을 때 jellyfin.service 왼쪽에 초록색 불이 켜져 있다면 서비스가 실행된 것이다. 만약 적색 불이 켜져 있다면 아래 명령으로 서비스를 실행한다:

sudo systemctl enable jellyfin

젤리핀 서비스 실행을 확인했으면 웹브라우저에서 다음의 주소를 입력해 본인의 젤리핀 서버에 접속한다:

127.0.0.1:8096

젤리핀 서비스가 실행 중인데 위 주소로 서버에 연결이 되지 않는다면 ufw 등의 방화벽에 막혔을 가능성이 있다. ufw를 사용한다는 전제하에 터미널에서 다음 명령으로 포트를 개방하고 다시 웹브라우저에서 서버에 접속한다:

sudo ufw allow 8096

서버에 접속하면 젤리핀 로고가 스플래쉬로 잠시 화면에 보이다가 처음 서버를 실행할 때 보이는 초기설정 화면으로 넘어갈 것이다. 기본 사용자(관리자) 이름과 비밀번호를 생성하고, 미디어 라이브러리와 다른 사용자, 사용자 언어 등은 나중에 대시보드에서 설정할 수 있으므로 일단 넘어간다. 초기설정에서 관리자 이름과 비밀번호는 반드시 기억해야 한다.


젤리핀 서버에 미디어 라이브러리 추가 방법

라즈베리 파이 4 트랜스코딩 - lajeubeli pai 4 teulaenseukoding
1. 웹브라우저 화면 좌측 상단 메뉴 버튼 클릭
라즈베리 파이 4 트랜스코딩 - lajeubeli pai 4 teulaenseukoding
2. 슬라이드로 표시되는 메뉴에서 대시보드(Dashboard) 클릭
라즈베리 파이 4 트랜스코딩 - lajeubeli pai 4 teulaenseukoding
3. 라이브러리(Libraries) 클릭
라즈베리 파이 4 트랜스코딩 - lajeubeli pai 4 teulaenseukoding
4. 화면에 나타나는 미디어 라이브러리 추가(Add Media Library) 클릭
라즈베리 파이 4 트랜스코딩 - lajeubeli pai 4 teulaenseukoding
5. 라이브러리의 콘텐츠 유형과 라이브러리 목록에 표시될 라이브러리의 이름 지정
라즈베리 파이 4 트랜스코딩 - lajeubeli pai 4 teulaenseukoding
6. 라이브러리에서 사용할 경로 지정

6번까지 완료한 후 아래 OK 버튼을 누르면 라이브러리가 서버에 포함되며 자동으로 스캔을 시작, 완료되면 해당 라이브러리를 서버와 서버에 접속한 클라이언트에서 자유로이 이용할 수 있다.

6번 경로 지정에서 주의할 점은 외장하드 등의 장치가 /media 경로에 마운트된 경우 디렉터리 인식이 불가능하며 이러한 경우 젤리핀 서비스를 실행할 때 루트가 아닌 별도 지정 디렉터리를 사용하게 하거나 장치를 /mnt 안에서 마운트하게 해야 한다. 주인장은 /mnt 안에 마운트하도록 지정하는 것을 추천하며 그 방법을 아래에 적는다:

터미널에서 다음을 입력해 외장 저장장치의 파일시스템(Filesystem)을 기억한다:

df -h

다음의 명령으로 외장 저장장치의 파일시스템을 찾아 해당하는 UUID를 복사한다:

blkid

예를 들어, df -h 명령에서 확인한 장치의 파일시스템이 /dev/sda1 이면 blkid 명령 후 표시되는 /dev/sda1: 뒤 UUID를 복사하는 것이다.

장치 확인을 완료했으니 해당 UUID를 가진 장치를 /mnt 안에 지정한 경로로 마운트하도록 설정해야 한다. 터미널에서 다음을 입력해 나노(GNU Nano) 에디터fstab 파일을 연다:

sudo nano /etc/fstab

맨 아래에 장치의 UUID와 장치가 마운트될 경로, 설정을 기입한다. UUID가 AB123CD4567E8FG9, 마운트할 경로가 /mnt/HDD, 장치가 ntfs 유형일 때의 예를 아래에 적는다:

UUID=AB123CD4567E8FG9 /mnt/HDD ntfs defaults,users,rw,nofail,umask=000,x-systemd.device-timeout=1s 0 0

/mnt/HDD에서 HDD는 본인이 원하는 디렉터리의 이름으로 바꿔 적으면 된다. 장치의 유형이 ntfs 시스템이 아닌 다른 시스템이라면 해당하는 시스템을 적으면 되고, 뒤로 이어지는 설정은 그대로 적는 것을 권장-일일이 설명하기 귀찮다-한다.

이 과정을 완료했으면 키보드의 Ctrl+S 를 눌러 fstab 파일을 저장, Ctrl+X로 열린 파일을 닫고 터미널에서 sudo reboot 명령을 입력해 라즈베리 파이를 재시동한다. 재시동한 후에는 외장장치가 지정한 /mnt 경로에 마운트됐는지 확인한 후 웹브라우저를 열어 젤리핀 미디어 서버에 접속, 라이브러리 추가에서 해당 경로를 추가하면 된다.


트랜스코딩 하드웨어 엑셀레이션

라즈베리 파이 4 트랜스코딩 - lajeubeli pai 4 teulaenseukoding
젤리핀(Jellyfin) 미디어 서버 트랜스코딩 하드웨어 엑셀레이션 세팅

이제 특정 미디어 재생을 위해 트랜스코딩 하드웨어 엑셀레이션 설정을 해야 한다. 젤리핀 대시보드에서 플레이백(Playback)에 진입, 나타나는 트랜스코딩(Transcoding) 화면에서 오픈맥스OMX(OpenMax OMX)로 하드웨어 엑셀레이션을 설정하고, 그 아래에는 위 갈무리처럼 체크박스에 체크하고 스크롤을 맨 아래로 내려 저장(Save)을 눌러 저장한다.


클라이언트로 젤리핀 미디어 서버에 접속

클라이언트로 젤리핀 미디어 서버에 접속하는 방법은 아주 간단하다. 서버가 아닌 다른 데스크톱 PC 등에서는 웹브라우저에서 서버 주소에 접속해 로그인, 모바일 휴대폰 또는 태블릿에서는 앱스토어 및 구글 플레이 스토어에서 Jellyfin을 검색해 앱을 설치한 후 실행, 서버에 주소에 접속해 로그인하여 서버의 미디어를 재생할 수 있다.

같은 포트를 사용하는 하나 이상의 서버가 주변에 존재하는 경우에는 서버의 호스트네임을 찾아 원하는 서버에 연결하면 된다.


HTTPS 네트워킹 및 사용자 정의 도메인 설정

젤리핀 서버HTTPS 네트워킹이나 사용자 정의 도메인을 사용하려면 대시보드(Dashboard)>네트워킹(Networking)에서 네트워크를 구성할 수 있다. 주인장이 이러한 설정을 사용하지는 않아서 갈무리나 설명을 올리지 않고 아래에 공식 문서 연결을 첨부하며 본 라즈베리 파이 4 젤리핀(Jellyfin) 미디어 서버 구축 안내서를 마무리한다:

Networking | Documentation - Jellyfin Project

Networking This section describes how to get basic connectivity to a Jellyfin server, and also some more advanced networking scenarios. Connectivity Many clients will automatically discover servers running on the same LAN and display them on login. If you

jellyfin.org