Отключаем swscale в ffmpeg
В новых чекаутах ffmpeg появились опции :
–disable-swscale disable libswscale build
–disable-swscale-alpha disable alpha channel support in swscale
Но они не работают в должном объеме, так как при использовании опции собираются все бинарники , кроме ffmpeg ( в исходники жестко вшиты либы, необходимые для работы ).
Наша задача – почистить исходники от этой либы, чтобы ffmpeg даже не знал о ее существовании.
Итак, начнем :
Качаем через svn checkout ffmpeg
cd /usr/src/
svn checkout svn://svn.ffmpeg.org/ffmpeg/trunk ffmpeg
Pедактируем configure
nano configure
– swscale
– swscale_alpha
– scale_filter_deps=»swscale»
– ffmpeg_deps=»avcodec avformat swscale»
+ ffmpeg_deps=»avcodec avformat
– ffplay_deps=»avcodec avformat swscale sdl»
+ ffplay_deps=»avcodec avformat sdl»
– enable swscale
– enable swscale_alpha
– libswscale
– libswscale/$arch
– libswscale/Makefile
– get_version LIBSWSCALE libswscale/swscale.h
– pkgconfig_generate libswscale «FFmpeg image rescaling library» «$LIBSWSCALE_VERSION» «» «libavutil = $LIBAVUTIL_VERSION»
– check_ldflags ‘-Wl,-rpath-link,\$(BUILD_ROOT)/libpostproc -Wl,-rpath-link,\$(BUILD_ROOT)/libswscale -Wl,-rpath-link,\$(BUILD_ROOT)/libavfilter -Wl,-rpath-link,\$(BUILD_ROOT)/libavdevice -Wl,-rpath-link,\$(BUILD_ROOT)/libavformat -Wl,-rpath-link,\$(BUILD_ROOT)/libavcodec -Wl,-rpath-link,\$(BUILD_ROOT)/libavcore -Wl,-rpath-link,\$(BUILD_ROOT)/libavutil’
+ check_ldflags ‘-Wl,-rpath-link,\$(BUILD_ROOT)/libpostproc -Wl,-rpath-link,\$(BUILD_ROOT)/libavfilter -Wl,-rpath-link,\$(BUILD_ROOT)/libavdevice -Wl,-rpath-link,\$(BUILD_ROOT)/libavformat -Wl,-rpath-link,\$(BUILD_ROOT)/libavcodec -Wl,-rpath-link,\$(BUILD_ROOT)/libavcore -Wl,-rpath-link,\$(BUILD_ROOT)/libavutil’
Pедактируем ffmpeg.c
nano ffmpeg.c
– static unsigned int sws_flags = SWS_BICUBIC;
– sws_freeContext(ost->img_resample_ctx);
Pедактируем cmdutils.c
nano cmdutils.c
– PRINT_LIB_INFO(outstream, swscale, SWSCALE, flags);
Pедактируем ffmpeg/libavfilter/vf_scale.c
nano ffmpeg/libavfilter/vf_scale.c
– scale->sws = sws_getContext(inlink ->w, inlink ->h, inlink ->format,
– outlink->w, outlink->h, outlink->format,
– scale->flags, NULL, NULL, NULL);
– out_h = sws_scale(scale->sws, data, cur_pic->linesize, y, h,
– link->dst->outputs[0]->out_buf->data,
– link->dst->outputs[0]->out_buf->linesize);
– if ( sws_isSupportedInput(pix_fmt)
– && (ret = avfilter_add_format(&formats, pix_fmt)) < 0) {
– avfilter_formats_unref(&formats);
– return ret;
– }
– if ( sws_isSupportedOutput(pix_fmt)
– && (ret = avfilter_add_format(&formats, pix_fmt)) < 0) {
– avfilter_formats_unref(&formats);
– return ret;
– }
– sws_freeContext(scale->sws);
– scale->sws = NULL;
Собираем исходники и ставим ffmpeg на сервер :
./configure
make
make install
Вуаля :
server:/usr/src/ffmpeg# ffmpeg
FFmpeg version SVN-r26402, Copyright (c) 2000-2011 the FFmpeg developers
built on Sep 28 2011 12:27:14 with gcc 4.3.2
configuration:
libavutil 50.36. 0 / 50.36. 0
libavcore 0.16. 1 / 0.16. 1
libavcodec 52.108. 0 / 52.108. 0
libavformat 52.93. 0 / 52.93. 0
libavdevice 52. 2. 3 / 52. 2. 3
libavfilter 1.74. 0 / 1.74. 0
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