tvheadend에 h264_omx 코덱을 사용할 수 있게 빌드하는 방법을 기술한다.
빌드 환경 구성
$ apt-get install git cmake build-essential debhelper pkg-config fakeroot libavahi-client-dev libssl-dev libcurl4-gnutls-dev liburiparser-dev libogg-dev libtheora-dev libvorbis-dev
빌드
$ git clone https://github.com/tvheadend/tvheadend.git $ cd tvheadend
소스를 받고 빌드 전 아래와 같이 Makefile.ffmpeg 파일을 수정한다.
diff --git a/Makefile.ffmpeg b/Makefile.ffmpeg
index e07ef2d..ff99604 100644
--- a/Makefile.ffmpeg
+++ b/Makefile.ffmpeg
@@ -573,6 +573,9 @@ $(LIB_ROOT)/$(FFMPEG)/.tvh_build: \
--enable-gpl \
--extra-cflags="$(ECFLAGS)" \
--extra-libs="$(ELIBS)" \
+ --enable-omx-rpi --enable-mmal \
+ --enable-decoder="h264_mmal" \
+ --enable-encoder="h264_omx" \
--pkg-config="$(ROOTDIR)/support/pkg-config.ffmpeg" \
$(foreach component,$(COMPONENTS),--enable-$(component)) \
$(foreach extlib,$(EXTLIBS),--enable-$(extlib)) \
h264_omx가 profile을 지원하지 않기 때문에 transcoding.c파일도 수정해야 한다.
diff --git a/src/plumbing/transcoding.c b/src/plumbing/transcoding.c
index 630bb62..ffb9657 100644
--- a/src/plumbing/transcoding.c
+++ b/src/plumbing/transcoding.c
@@ -1347,8 +1347,11 @@ transcoder_stream_video(transcoder_t *t, transcoder_stream_t *ts, th_pkt_t *pkt)
av_dict_set(&opts, "preset", t->t_props.tp_vcodec_preset, 0);
tvhinfo(LS_TRANSCODE, "%04X: Using preset %s", shortid(t), t->t_props.tp_vcodec_preset);
- // All modern devices should support "high" profile
- av_dict_set(&opts, "profile", "high", 0);
+ if (0 != strcmp(ocodec->name, "h264_omx"))
+ {
+ // All modern devices should support "high" profile
+ av_dict_set(&opts, "profile", "high", 0);
+ }
if (t->t_props.tp_vbitrate < 64) {
// encode with specified quality and optimize for low latency
Makefile.ffmpeg, transcoding.c 파일 수정이 끝나면 아래와 같은 방법으로 빌드한다.
$ AUTOBUILD_CONFIGURE_EXTRA=--enable-ffmpeg_static\ --disable-libx264_static\ --disable-libx265\ --disable-libvpx\ --disable-libtheora_static\ --disable-libvorbis_static\ --disable-bintray_cache ./Autobuild.sh
빌드가 완료되면 아래와 같이 패키지를 설치한다.
$ cd .. $ sudo dpkg -i tvheadend_4.1-2261~ga9bc3bc-dirty_armhf.deb