NAS&SDD
  • 목록
  • 아래로
  • 위로
  • 쓰기
  • 검색

[TVHeadend] 클릭 한번으로 녹화부터 인코딩까지 끝내보자~

들고양이님의 기기정보
보유한 기기가 없습니다

안녕하세요.

이 강좌는…제가 가끔(?) 활동하는 UHD미니PC포럼이라는 곳에서 초보자들을 위해서 만들었던 스크립트와 그 설명 내용입니다만…최근에 커스텀 나스 관련 글들도 올라오고 … 관심가지고 계신 분들도 계신 듯 해서……이곳에도 재탕(?)으로 올려 둡니다. ㅋㅋㅋ

스크립트에서 몇가지 불필요한 부분은 수정,삭제하고 첨부했습니다.

아마도, 시놀 외에도 유닉스 시스템에서라면 다 작동할 겁니다.

 

이 스크립트를 활용함으로 얻을 수 있는 점:

    TVHeadend 녹화할때 클릭 한번으로 녹화>파일명 수정>인코딩 작업을 자동으로 처리해 wnqslek.

    1. 레코딩 원본 파일을 하나하나 인코딩 시켜주지 않아도 된다. ( 자동으로 Nas가 알아서 인코딩 작업을 진행한다. )

    2. 파일명을 하나하나 바꿔주지 않아도 된다.

(자기가 알아서 적절히 바꿔준다. - 잡다한 기호 부호 다 없애고 순수 파일명+8자리 날짜식으로…)

                    원본 파일명                                                          인코딩 후처리 파일명

        SBS 8 뉴스-SBS2016-12-19.ts --> SBS 8 뉴스 SBS20161219.H264.1080P.mkv 

    3. 인코딩 작업에 따른 log파일을 생성해 주기 때문에 나중에라도 인코딩시 문제점을 파악하기 쉽게 해준다.

환경 :

처음 이 스크립트를 작성해서 실행시키던 때는 메인 피씨(제가 쓰던 아이맥)보다 커스텀Nas(현재 사용중인…)성능이 더 좋았기 때문에…인코딩 작업을 커스텀Nas에서 실행시켰습니다.따라서, 커스텀Nas 또는 일반 Nas의 성능이 좋아야…인코딩 작업의 효과를 볼 수 있습니다. (성능이 떨어지는 Nas 의 경우에도 물론, 가능은 합니다. )

제 기준에서…현재 커스텀Nas는……i3 6100T를 사용하고 있습니다.

다음 주말께에는…2탄을 준비중입니다. ( TVHeadend 녹화 클릭으로 레코딩이 끝나면…메인피씨로 원본파일 이동…메인피씨에서 자동인코딩 작업… 을 시켜주는…)

아무튼, 그 전에 1탄의 사용법을 적어 보겠습니다.

 

이 스크립트를 사용하기 위해서는,

1. 사전에 TVHeadend에서 EPG설정이 되어 있어야 합니다.

2. ffmpeg가 nas에 설치되어 있어야 합니다.(6.0.2버전에서는 기본으로 설치되어 있더군요...이전 버전에서는 따로 설치해야 합니다. 여기서는......생략)

위의 2가지 조건에 충족한다 간주하고...이어서 설명하겠습니다.

 

1. 터미널을 사용해서 Nas에 접속합니다.

    ssh 본인아이디@본인Nas의 아이피

    샘플 : ssh id@192.172.22.9 이런 식으로…이거 모르시는 분은 안계시리라…믿고서…

# ffmpeg 설치 여부 확인

터미널에서 ffmpeg [엔터]치면...주르륵 뜹니다.

ffmpeg

ffmpeg version 2.7.1 Copyright (c) 2000-2015 the FFmpeg developers

  built with gcc 4.9.3 (crosstool-NG 1.20.0) 20150311 (prerelease)

  configuration: --prefix=/usr --incdir='${prefix}/include/ffmpeg' --arch=i686 --target-os=linux --cross-prefix=/usr/local/x86_64-pc-linux-gnu/bin/x86_64-pc-linux-gnu- --enable-cross-compile --enable-optimizations --enable-pic --enable-gpl --enable-shared --disable-static --enable-version3 --enable-nonfree --enable-libfaac --enable-encoders --enable-pthreads --disable-bzlib --disable-protocol=rtp --disable-muxer=image2 --disable-muxer=image2pipe --disable-swscale-alpha --disable-ffserver --disable-ffplay --disable-devices --disable-bzlib --disable-altivec --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libmp3lame --disable-vaapi --disable-decoder=amrnb --disable-encoder=zmbv --disable-encoder=dca --disable-encoder=ac3 --disable-encoder=ac3_fixed --disable-encoder=eac3 --disable-decoder=dca --disable-decoder=eac3 --disable-decoder=truehd --cc=/usr/local/x86_64-pc-linux-gnu/bin/x86_64-pc-linux-gnu-ccache-gcc --enable-yasm --enable-libx264 --enable-encoder=libx264

  libavutil      54. 27.100 / 54. 27.100

  libavcodec     56. 41.100 / 56. 41.100

  libavformat    56. 36.100 / 56. 36.100

  libavdevice    56.  4.100 / 56.  4.100

  libavfilter     5. 16.101 /  5. 16.101

  libswscale      3.  1.101 /  3.  1.101

  libswresample   1.  2.100 /  1.  2.100

  libpostproc    53.  3.100 / 53.  3.100

Hyper fast Audio and Video encoder

usage: ffmpeg [options] [[infile options] -i infile]... {[outfile options] outfile}...

Use -h to get full help or, even better, run 'man ffmpeg'

이런 식으로 나오면 ffmpeg는 설치가 되어 있는 것입니다.

2.  첨부 파일을 다운받아서…적절히 수정해 줍니다.

    autoencoding.sh 파일을 에디터 앱(서브라임 텍스트 등…)으로 열어서 수정할 곳을 살펴 보자면...

    5행     : TRANSCODEPATH='/volume1/Downloads/TVheadendRec/' - 이 부분을 본인의 녹화지정 폴더로 바꿔줍니다.

    8행     : MKVVIDEO=$TRANSCODEPATH$title".H264.1080P.mkv" - ".H264.1080P.mkv" 부분은 입맛에 맞게 수정할 수 있슴.

          저는 보통 mkv 확장자 형태로 인코딩을 합니다만…mp4등 본인이 원하는 것으로 바꾸셔도 됩니다.

    20행  : ffmpeg 옵션입니다. 사실…이 정도로만 해도 토렌트에 떠도는 인코딩된 파일들보다 화질 무진장 우수합니다만…

                경우에 따라서는 본인의 입맛에 맞게 바꾸셔도 상관없습니다.

    머 대충 이정도가 되겠습니다. 그 외 추가하거나 수정하실 분들은 편하실대로 ...

3.    적당한 곳에 저장하고 터미널에서 실행권한을 줍니다.

    예) 메인저장소>Downloads폴더에 두었을 경우…

터미널에서 해당 폴더로 이동해서...실행 권한을 줍니다.

cd /volume1/Downloads

chmod +x autoencoding.sh

4.  tvheadend에서 Post-Processor Command(후처리 명령)이라고 있는 곳에…저장한 파일의 경로와 %f %b를 붙여주고 저장합니다.

    TVHeanend 설정>녹화중>디지털 비디오 녹화 프로필로 들어와서…

    후처리 명령 부분에 우리가 사용할 autoencoding.sh 파일을 경로 포함해서 지정해 주고 “%f” “%b”를 붙여줍니다.

    파일 이름 옵션에서는 윈도우 호환 파일 이름 사용, 날짜를 파일 이름에 포함....2개 항목에 체크...

rec.png 

    예) /volume1/Downloads 에파일을 두었을 경우…

      /volume1/Downloads/autoencoding.sh “%f” “%b” 이런식으로 스샷처럼 본인이 지정해둔 위치의 파일을 기준으로 적어줍니다.

    녹화할 시스템 경로입니다.: 이 부분에는 녹화파일이 저장될 폴더를 지정해 줍니다.

    예) /volume1/Downloads/TVheadendRec/ 저는 이렇게 지정해 두었습니다.

filestation.png

5.  이제 원하는 프로그램에 녹화를 걸어줍니다. ( 실제 우리가 할 일...클릭 한번...)

    tvheadend에서 녹화가 끝나면…Nas에서 자동으로 인코딩작업을 해줍니다.

    인코딩이 끝난 파일은 녹화할 시스템 경로에서 지정해 둔 폴더에 저장됩니다.

    중복 녹화작업도 무리없이 잘 됩니다. (동 시간대의 프로그램 동시 녹화 및 동시 인코딩 가능…)

    보통, 프로그램 하나당 1.5~2Mb/s 정도의 데이터를 받습니다. 인터넷 환경이 허락하는 한도 내에서 동시 시청 및 동시 인코딩 등….작업이 가능합니다.

    다운로드 100Mb 기준의 인터넷 환경에서조차도 보통 5~6개의 동시간대 프로그램을 녹화가 가능하다는 얘기죠…

    가령…8시 뉴스 기준으로 보면….SBS,MBC,KBS,JTBC등 등….동시간대 모든 뉴스를 녹화할 수 있습니다. ㅋㅋㅋ

아래는 오늘 8시 시간대 2개 프로그램 녹화 걸어둔 거 샘플입니다.

Tvheadendrec.png

TVheadendlog.png

이렇게~원본ts파일이 녹화작업이 끝나면 자동으로 인코딩 작업을 해주면서 해당 파일명으로 log파일을 만들어 줍니다...

 

들고양이
18 Lv. 18822/19000P

댓글 28

참여를 하시면 세상을 바꿉니다.
profile image
1등 키노 2016.12.20. 10:21 |댓주소:#1400700
들고양이

정보 감사드립니다.

Intel Celeron G1610T 에서 후처리 하니 CPU 사용량이 98%~99% 네요.,..후덜덜...

금주중 Intel Xeon E3-1265L V2 로 교체하고 다시 테스트해봐야겠습니다...

들고양이 작성자 2016.12.20. 19:56 |댓주소:#1401227
키노

키노님 잘 되시나보군요~ㅎㅎㅎ

축하드립니다..

보통 ffmpeg는 CPU자원을 거의 풀로 사용하는 듯 합니다만....크게 신경 안써도 될 듯 싶습니다.

저 같은 경우도...1개 인코딩 중에는 거의 99% 풀 가동중...2개 인코딩 중일때는 거의 50%, 50%씩 가동중....이렇게 나오더라구요. ㅋㅋㅋ;

CPU자원의 사용율을 조절하고 싶으시다면...ffmpeg 옵션 중에서...검색해 보시면 되지 않을까 싶습니다만.....혹시 찾으시면 저에게도 알려주시기를~

profile image
2등 키노 2016.12.21. 22:16 |댓주소:#1402917
들고양이

음.......방금  Intel Xeon E3-1265L V2 로 테스트해보니...그래도 95% 정도 찍네요...

메모리가...6G라 그런가...???

님 정보좀 알수 있을까요....^^

profile image
냠냠 2016.12.23. 11:17 |댓주소:#1404080
들고양이

네 ^^ 네** 카페에 서식중에 있어요 ㅎㅎ 

저도 가끔 숨만 쉬고있는지라 ㅎㅎ .....

방가워서 아는척?? 하였습니다 ㅎㅎㅎ

들고양이 작성자 2016.12.23. 20:02 |댓주소:#1404431
키노

@키노님 

지금 제가 셋팅 해 둔 ffmpeg 인코딩 옵션이 1920X1080의 고해상도 기본 고화질 고음질 수준으로 셋팅이 되어 있어서 그런 부분도 있을거에요.

보통...토렌트에 올라오는 일반적인 것들이 1280X720의 해상도를 가집니다.(아시겠지만......;)

따라서...시간을 단축하시려면...인코딩 옵션을 조절해 보시는게...Nas에서 인코딩하기에 더 적합하리라 생각됩니다.

저도 그래서......tvheadend 녹화가 끝나면 자동으로 피시로 원본파일을 전송하고...전송이 완료되면 피시에서 자동으로 인코딩되는 스크립트를 짜고 있습니다.

(지금은...커맥이 Nas보다 성능이 좋잖아요...ㅋㅋㅋ  - 참고로, 동일 옵션 기준으로...Nas에서는 0.7~1.2배 수준 인코딩 속도가...커맥에서는 2.5~4배속으로 시간이 단축됩니다.

제 기준: Nas-i3 6100T → 커맥-E5-2670X2

1배속은 인코딩시간=재생시간/1,

2배속은 인코딩시간=재생시간/2

으로 생각하시면 얼추 인코딩할때에 성능을 가늠하실 수 있을겁니다.-제 기준으로는...60분짜리 인코딩에...보통 15~30분 정도 ...)

스크립트가 잘 짜여져서 사용상 문제없이 잘 진행되는 시점에...다시 공개하겠습니당. ㅎㅎㅎ

그리고, 일전에 말씀하셨던 CPU사용율 문제는 옵션에 -threads 를 붙이시고...시피유에 따라서 적절히 조절하면 사용율을 조정 가능하답니다.

구글신에게 "ffmpeg -threads option"으로 물어보시면 자세한 것들을 아실 수 있을 겁니다.

profile image
sung-sung 2016.12.28. 19:04 |댓주소:#1408981
들고양이

저는 KT올래 UHD 셋탑박스 사용하고 있답니다. TVHeadend 사용하고 싶어서 IP주소 밎 포트번호 추출이

안되어서 포기하고 있는데 회원님들께서 는 잘 추출하여 사용하고 있어 부럽습니다.

 

들고양이 작성자 2016.12.29. 20:46 |댓주소:#1410239
sung-sung

저도 올* 사용자입니다. ㅎㅎㅎ

아마도...@ 님 강좌에 추출방법도 잘 나와있는 거 같습니다. 다시 한번 도전해 보세요~

들고양이 작성자 2016.12.29. 23:58 |댓주소:#1410510
sung-sung

음....저는 오래 전에  추출한 거 ... 아이피 보관하면서 계속 우려먹는 중이라서 ... 최근의 추출법은 잘 모릅니다. ㅎㅎㅎ;

@ 님이 친절하시니...질문하시면 잘 알려주셔서 성공으로 이끌어 주실 것이라 생각됩니다. 화이팅~^^

지크지온 2017.02.26. 10:29 |댓주소:#1490443
들고양이

뭔가 ffmpeg가 이상한듯 아닌듯 합니다.

이곳에서 $TSVIDEO와 $MKVVIDEO 부분을

이렇게 바꿔서 돌렸는데요...

이러고 계속 있네요... 물론 원본 파일이 급히 만든 파일이라 불량일수도 있는데요...

제 설정이 



/volume1/Downloads/autoencoding.sh "%f" "%b" 설정을 쓰고 있구요

TRANSCODEPATH='/volume1/Downloads/REC' 로 쓰고 있구요





권한이 문제인건지 모르지만 전부 0775로 해본적도 있구요... 그런데 안되더라구요...

정말 집사람과 아이가 너무 기대를 하고 있는데요..

제가 214play를 쓰고 있는데 ts파일로 가지고 있기는 부담이 되서리...

plex서버만 용량이 어마어마 하게 쓰고 있어서요...

인코딩 너무 하고 싶어요...

뭐가 문제인지 알려주시면 너무너무 감사드립니다.

지금 수동 인코딩중인데요... 잘 되고있는건지 모르겠습니다.

f
forsberg 2018.02.24. 13:51 |댓주소:#2045843
들고양이

안녕하십니까? putty를 이용해 접속을 하였는데 cd/volume1/... 이렇게 했더니 자꾸 "no such file or directory "나오면 어떻게 해야 할지요?

댓글 쓰기

선택 삭제 전체 선택
익명상태

신고

"님의 댓글"

이 댓글을 신고 하시겠습니까?

삭제

"님의 댓글"

이 댓글을 삭제하시겠습니까?