ffmpeg4ios


参考文章:

http://stackoverflow.com/questions/8323672/ffmpeg-for-ios5

中央电视3台:rtsp地址:rtsp://114.255.201.246/cctv3_256_h264.sdp


开发环境:

Mac OS X 10.6.8


一、下载ffmpeg4ios、gas-preprocessor、yasm

1、下载ffmpeg4ioshttps://github.com/ciphor/ffmpeg4ios

$ git clone http://github.com/ciphor/ffmpeg4ios
$ cd ffmpeg4ios
$ chmod -R a+x ./


2、下载gas-preprocessorhttps://github.com/yuvi/gas-preprocessor

$ git clone https://github.com/yuvi/gas-preprocessor


复制到/usr/local/bin目录下

$ cp gas-preprocessor/gas-preprocessor.pl /usr/local/bin/


3、yasm下载(非必须):

用mac下的MacPorts下载yasm,前提是系统已经安装了MacProts

Macports安装方法:http://www.ccvita.com/434.html

通过Macports下载并且安装yasm:

sudo port install yasm


4、编译

在ffmpeg4ios目录下执行build_armv7 

$ ./build_armv7 


build_armv7脚本内容:

/Developer_Xcode_4.2_ios_sdk_5.0.1可以根据机器的安装路径不同更改目录路径

if (! -d armv7) mkdir armv7
if (! -d lib) mkdir lib

rm armv7/*.a

make clean

./configure --disable-network --disable-mpegaudio-hp --disable-lpc --disable-vaapi --disable-vdpau --disable-hwaccels --disable-mmx --disable-mmx2 --disable-sse --disable-ssse3 --disable-avx --disable-amd3dnow --disable-amd3dnowext --disable-vis --disable-mmi --disable-doc --disable-yasm --disable-ffmpeg --disable-ffplay --disable-ffprobe --disable-ffserver --disable-rdft --disable-dxva2 --disable-encoders --disable-decoders --enable-decoder=h264 --disable-bsfs --disable-protocols --disable-indevs --disable-outdevs --disable-devices --disable-filters --disable-demuxers --enable-demuxer=h264 --disable-muxers --disable-parsers --enable-parser=h264 --enable-cross-compile --arch=arm --target-os=darwin --cc=/Developer_Xcode_4.2_ios_sdk_5.0.1/Platforms/iPhoneOS.platform/Developer/usr/bin/gcc --as='gas-preprocessor/gas-preprocessor.pl /Developer_Xcode_4.2_ios_sdk_5.0.1/Platforms/iPhoneOS.platform/Developer/usr/bin/gcc' --sysroot=/Developer_Xcode_4.2_ios_sdk_5.0.1/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS5.0.sdk --cpu=cortex-a8 --extra-cflags='-arch armv7' --extra-ldflags='-arch armv7 -isysroot /Developer_Xcode_4.2_ios_sdk_5.0.1/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS5.0.sdk' --enable-pic

perl -pi -e 's/HAVE_INLINE_ASM 1/HAVE_INLINE_ASM 0/' config.h

make -j4

mv libavcodec/libavcodec.a armv7/
mv libavdevice/libavdevice.a armv7/
mv libavformat/libavformat.a armv7/
mv libavutil/libavutil.a armv7/
mv libswscale/libswscale.a armv7/

rm lib/*.a

cp armv7/*.a lib/



编译输出如下:

install prefix            /usr/local
source path               /Users/apple/desktop/ffmpeg4ios
C compiler                /Developer_Xcode_4.2_ios_sdk_5.0.1/Platforms/iPhoneOS.platform/Developer/usr/bin/gcc
ARCH                      arm (cortex-a8)
big-endian                no
runtime cpu detection     no
ARMv5TE enabled           yes
ARMv6 enabled             yes
ARMv6T2 enabled           yes
ARM VFP enabled           yes
IWMMXT enabled            no
NEON enabled              yes
debug symbols             yes
strip symbols             yes
optimizations             yes
static                    yes
shared                    no
postprocessing support    no
new filter support        yes
network support           no
threading support         pthreads
SDL support               no
Sun medialib support      no
AVISynth enabled          no
libcelt enabled           no
frei0r enabled            no
libdc1394 support         no
libdirac enabled          no
libfaac enabled           no
libgsm enabled            no
libmp3lame enabled        no
libnut enabled            no
libopencore-amrnb support no
libopencore-amrwb support no
libopencv support         no
libopenjpeg enabled       no
librtmp enabled           no
libschroedinger enabled   no
libspeex enabled          no
libtheora enabled         no
libva enabled             no
libvo-aacenc support      no
libvo-amrwbenc support    no
libvorbis enabled         no
libvpx enabled            no
libx264 enabled           no
libxavs enabled           no
libxvid enabled           no
zlib enabled              no
bzlib enabled             no

Enabled decoders:
h264

Enabled encoders:

Enabled hwaccels:

Enabled parsers:
h264

Enabled demuxers:
h264

Enabled muxers:

Enabled protocols:

Enabled filters:

Enabled bsfs:

Enabled indevs:

Enabled outdevs:

License: LGPL version 2.1 or later
Creating config.mak and config.h...

WARNING: Compiler does not indicate floating-point ABI, guessing soft.
CC	libavdevice/alldevices.o
CC	libavdevice/avdevice.o
CC	libavfilter/allfilters.o
CC	libavfilter/avfilter.o
CC	libavfilter/avfiltergraph.o
libavfilter/avfilter.c:219: warning: ‘ff_get_ref_perms_string’ defined but not used
CC	libavfilter/defaults.o
CC	libavfilter/drawutils.o
CC	libavfilter/formats.o
CC	libavfilter/graphparser.o
CC	libavformat/allformats.o
CC	libavformat/avio.o
CC	libavformat/aviobuf.o
libavformat/avio.c: In function ‘avio_enum_protocols’:
libavformat/avio.c:60: warning: initialization from incompatible pointer type
libavformat/avio.c: In function ‘ffurl_write’:
libavformat/avio.c:310: warning: passing argument 2 of ‘retry_transfer_wrapper’ discards qualifiers from pointer target type
CC	libavformat/cutils.o
CC	libavformat/h264dec.o
libavformat/aviobuf.c: In function ‘ffio_init_context’:
libavformat/aviobuf.c:65: warning: ‘is_streamed’ is deprecated (declared at libavformat/avio.h:68)
libavformat/aviobuf.c: In function ‘ffio_fdopen’:
libavformat/aviobuf.c:862: warning: ‘is_streamed’ is deprecated (declared at libavformat/avio.h:68)
CC	libavformat/id3v1.o
CC	libavformat/id3v2.o
CC	libavformat/metadata.o
libavformat/metadata.c: In function ‘av_metadata_set2’:
libavformat/metadata.c:72: warning: assignment discards qualifiers from pointer target type
libavformat/metadata.c:76: warning: assignment discards qualifiers from pointer target type
CC	libavformat/options.o
CC	libavformat/os_support.o
CC	libavformat/rawdec.o
CC	libavformat/sdp.o
CC	libavformat/seek.o
CC	libavformat/utils.o
CC	libavcodec/allcodecs.o
AS	libavcodec/arm/dsputil_arm.o
libavformat/utils.c: In function ‘av_seek_frame_generic’:
libavformat/utils.c:1683: warning: ‘read_seek’ is deprecated (declared at libavformat/avformat.h:375)
libavformat/utils.c:1684: warning: ‘read_seek’ is deprecated (declared at libavformat/avformat.h:375)
libavformat/utils.c: In function ‘av_seek_frame’:
libavformat/utils.c:1716: warning: ‘read_seek’ is deprecated (declared at libavformat/avformat.h:375)
libavformat/utils.c:1717: warning: ‘read_seek’ is deprecated (declared at libavformat/avformat.h:375)
libavformat/utils.c: In function ‘avformat_seek_file’:
libavformat/utils.c:1746: warning: ‘read_seek’ is deprecated (declared at libavformat/avformat.h:375)
libavformat/utils.c: In function ‘av_write_frame’:
libavformat/utils.c:2949: warning: ‘url_ferror’ is deprecated (declared at libavformat/avio.h:302)
libavformat/utils.c: In function ‘av_interleaved_write_frame’:
libavformat/utils.c:3076: warning: ‘url_ferror’ is deprecated (declared at libavformat/avio.h:302)
libavformat/utils.c:3077: warning: ‘url_ferror’ is deprecated (declared at libavformat/avio.h:302)
libavformat/utils.c: In function ‘av_write_trailer’:
libavformat/utils.c:3099: warning: ‘url_ferror’ is deprecated (declared at libavformat/avio.h:302)
libavformat/utils.c:3107: warning: ‘url_ferror’ is deprecated (declared at libavformat/avio.h:302)
AS	libavcodec/arm/dsputil_armv6.o
CC	libavcodec/arm/dsputil_init_arm.o
CC	libavcodec/arm/dsputil_init_armv5te.o
CC	libavcodec/arm/dsputil_init_armv6.o
CC	libavcodec/arm/dsputil_init_neon.o
CC	libavcodec/arm/dsputil_init_vfp.o
AS	libavcodec/arm/dsputil_neon.o
AS	libavcodec/arm/dsputil_vfp.o
CC	libavcodec/arm/fft_fixed_init_arm.o
CC	libavcodec/arm/fft_init_arm.o
CC	libavcodec/arm/fmtconvert_init_arm.o
AS	libavcodec/arm/fmtconvert_neon.o
AS	libavcodec/arm/fmtconvert_vfp.o
CC	libavcodec/arm/h264dsp_init_arm.o
AS	libavcodec/arm/h264dsp_neon.o
AS	libavcodec/arm/h264idct_neon.o
CC	libavcodec/arm/h264pred_init_arm.o
AS	libavcodec/arm/h264pred_neon.o
AS	libavcodec/arm/int_neon.o
AS	libavcodec/arm/jrevdct_arm.o
CC	libavcodec/arm/mpegvideo_arm.o
CC	libavcodec/arm/mpegvideo_armv5te.o
AS	libavcodec/arm/mpegvideo_armv5te_s.o
AS	libavcodec/arm/mpegvideo_neon.o
AS	libavcodec/arm/simple_idct_arm.o
AS	libavcodec/arm/simple_idct_armv5te.o
AS	libavcodec/arm/simple_idct_armv6.o
AS	libavcodec/arm/simple_idct_neon.o
CC	libavcodec/audioconvert.o
CC	libavcodec/avpacket.o
CC	libavcodec/bitstream.o
libavcodec/avpacket.c: In function ‘av_dup_packet’:
libavcodec/avpacket.c:125: warning: ‘av_destruct_packet_nofree’ is deprecated (declared at libavcodec/avpacket.c:27)
CC	libavcodec/bitstream_filter.o
CC	libavcodec/cabac.o
libavcodec/bitstream_filter.c: In function ‘av_bitstream_filter_filter’:
libavcodec/bitstream_filter.c:62: warning: cast discards qualifiers from pointer target type
CC	libavcodec/dsputil.o
CC	libavcodec/error_resilience.o
CC	libavcodec/faanidct.o
CC	libavcodec/fmtconvert.o
CC	libavcodec/golomb.o
CC	libavcodec/h264.o
CC	libavcodec/h264_cabac.o
libavcodec/h264.c: In function ‘fill_filter_caches’:
libavcodec/h264.c:2442: warning: initialization from incompatible pointer type
libavcodec/h264.c:2519: warning: initialization from incompatible pointer type
libavcodec/h264.c:2534: warning: initialization from incompatible pointer type
CC	libavcodec/h264_cavlc.o
CC	libavcodec/h264_direct.o
libavcodec/h264_direct.c: In function ‘pred_spatial_direct_motion’:
libavcodec/h264_direct.c:287: warning: assignment from incompatible pointer type
libavcodec/h264_direct.c:288: warning: assignment from incompatible pointer type
libavcodec/h264_direct.c: In function ‘pred_temp_direct_motion’:
libavcodec/h264_direct.c:474: warning: assignment from incompatible pointer type
libavcodec/h264_direct.c:475: warning: assignment from incompatible pointer type
CC	libavcodec/h264_hl_motion.o
CC	libavcodec/h264_loopfilter.o
CC	libavcodec/h264_parser.o
CC	libavcodec/h264_ps.o
CC	libavcodec/h264_refs.o
CC	libavcodec/h264_sei.o
CC	libavcodec/h264dsp.o
CC	libavcodec/h264idct.o
CC	libavcodec/h264pred.o
CC	libavcodec/imgconvert.o
libavcodec/imgconvert.c: In function ‘av_picture_copy’:
libavcodec/imgconvert.c:671: warning: passing argument 3 of ‘av_image_copy’ from incompatible pointer type
CC	libavcodec/inverse.o
CC	libavcodec/jrevdct.o
CC	libavcodec/mpegvideo.o
CC	libavcodec/options.o
libavcodec/options.c:317: warning: ‘antialias_algo’ is deprecated (declared at libavcodec/avcodec.h:2144)
libavcodec/options.c: In function ‘avcodec_get_context_defaults3’:
libavcodec/options.c:502: warning: assignment discards qualifiers from pointer target type
CC	libavcodec/parser.o
libavcodec/parser.c: In function ‘av_parser_change’:
libavcodec/parser.c:185: warning: cast discards qualifiers from pointer target type
CC	libavcodec/pthread.o
CC	libavcodec/raw.o
CC	libavcodec/resample.o
CC	libavcodec/resample2.o
CC	libavcodec/simple_idct.o
CC	libavcodec/utils.o
libavcodec/utils.c: In function ‘avcodec_open’:
libavcodec/utils.c:500: warning: assignment discards qualifiers from pointer target type
libavcodec/utils.c: In function ‘avcodec_encode_audio’:
libavcodec/utils.c:605: warning: passing argument 4 of ‘avctx->codec->encode’ discards qualifiers from pointer target type
libavcodec/utils.c: In function ‘avcodec_encode_video’:
libavcodec/utils.c:622: warning: passing argument 4 of ‘avctx->codec->encode’ discards qualifiers from pointer target type
libavcodec/utils.c: In function ‘avcodec_encode_subtitle’:
libavcodec/utils.c:641: warning: passing argument 4 of ‘avctx->codec->encode’ discards qualifiers from pointer target type
libavcodec/utils.c:679:5: warning: "FF_API_VIDEO_OLD" is not defined
CC	libswscale/options.o
CC	libswscale/rgb2rgb.o
CC	libswscale/swscale.o
In file included from libswscale/swscale.c:1258:
libswscale/swscale_template.c: In function ‘hyscale_C’:
libswscale/swscale_template.c:2409: warning: initialization from incompatible pointer type
libswscale/swscale.c: In function ‘planarCopyWrapper’:
libswscale/swscale.c:1750: warning: cast discards qualifiers from pointer target type
libswscale/swscale.c: In function ‘sws_scale’:
libswscale/swscale.c:1990: warning: passing argument 1 of ‘check_image_pointers’ from incompatible pointer type
libswscale/swscale.c:1994: warning: passing argument 1 of ‘check_image_pointers’ discards qualifiers from pointer target type
CC	libswscale/utils.o
CC	libswscale/yuv2rgb.o
CC	libavutil/adler32.o
CC	libavutil/aes.o
libavutil/aes.c: In function ‘av_aes_init’:
libavutil/aes.c:160: warning: passing argument 1 of ‘init_multbl2’ from incompatible pointer type
libavutil/aes.c:161: warning: passing argument 1 of ‘init_multbl2’ from incompatible pointer type
CC	libavutil/arm/cpu.o
CC	libavutil/audioconvert.o
CC	libavutil/avstring.o
libavutil/avstring.c: In function ‘av_stristr’:
libavutil/avstring.c:54: warning: return discards qualifiers from pointer target type
libavutil/avstring.c:58: warning: return discards qualifiers from pointer target type
CC	libavutil/base64.o
CC	libavutil/cpu.o
CC	libavutil/crc.o
CC	libavutil/des.o
CC	libavutil/error.o
CC	libavutil/eval.o
CC	libavutil/fifo.o
CC	libavutil/file.o
CC	libavutil/imgutils.o
CC	libavutil/intfloat_readwrite.o
CC	libavutil/inverse.o
CC	libavutil/lfg.o
CC	libavutil/lls.o
CC	libavutil/log.o
CC	libavutil/lzo.o
CC	libavutil/mathematics.o
CC	libavutil/md5.o
CC	libavutil/mem.o
CC	libavutil/opt.o
CC	libavutil/parseutils.o
libavutil/parseutils.c: In function ‘av_parse_video_size’:
libavutil/parseutils.c:109: warning: assignment discards qualifiers from pointer target type
libavutil/parseutils.c: In function ‘av_parse_time’:
libavutil/parseutils.c:566: warning: cast discards qualifiers from pointer target type
CC	libavutil/pixdesc.o
CC	libavutil/random_seed.o
CC	libavutil/rational.o
CC	libavutil/rc4.o
CC	libavutil/samplefmt.o
CC	libavutil/sha.o
CC	libavutil/tree.o
CC	libavutil/utils.o
AR	libavdevice/libavdevice.a
AR	libavfilter/libavfilter.a
AR	libavformat/libavformat.a
AR	libswscale/libswscale.a
/usr/bin/ranlib: file: libavformat/libavformat.a(os_support.o) has no symbols
ranlib: file: libavformat/libavformat.a(os_support.o) has no symbols
AR	libavcodec/libavcodec.a
AR	libavutil/libavutil.a

你可能感兴趣的:(ios,function,xcode,deprecated,initialization,protocols)