使用ffmpeg-1.0内置RTMP协议实时解码H264视频流

转自:http://bashell.sinaapp.com/archives/using-ffmpeg-1_0-rtmp-protocol-decode-h264-stream.html

正在做一个基于RTMP+H264的手机端实时视频流项目。
按以前的方案需要分别用librtmp/JUV和opencore的H264解码库实现。
在进一步了解FFmpeg后,决定全部使用ffmpeg来实现。
当然,在手机客户端上,多余的解码库是不需要的。因此需要对ffmpeg精简配置,最终jni代码编译链接libavcodec.a libavformat.a  libavutil.a libswscale.a 后的so大小控制在1.2M左右,打包到apk后压缩到456k。
配置如下

build_i386

? View Code SHELL
1
2
#!/bin/bash 
./configure --disable-yasm --prefix=/usr --enable-small --disable-debug  --cc="ccache gcc" --disable-ffmpeg --disable-ffplay --disable-ffprobe --disable-ffserver --disable-everything --enable-protocol=rtmp --disable-demuxers --enable-demuxer=flv  --enable-demuxer=h264 --disable-parsers --enable-parser=h264 --enable-parser=aac  --disable-decoders --enable-decoder=h264 --enable-decoder=rawvideo

build_armeabi

? View Code SHELL
1
2
3
4
5
6
#!/bin/bash 
NDKRROOT=/home/aliang/Application/android-ndk 
PREBUILT=$NDKRROOT/toolchains/arm-linux-androideabi-4.6/prebuilt/linux-x86 
PLATFORM=$NDKRROOT/platforms/android-8/arch-arm 
export PATH=$PATH:$PREBUILT/bin 
./configure --prefix=$PWD/armeabi --arch=arm --target-os=linux --enable-cross-compile --extra-cflags="-I$PLATFORM/usr/include -O3 -msoft-float" --extra-ldflags="-L$PLATFORM/usr/lib -nostdlib  -lc -lm -ldl" --cc="ccache arm-linux-androideabi-gcc"  --enable-small --disable-debug --cross-prefix=arm-linux-androideabi-  --disable-ffmpeg --disable-ffplay --disable-ffprobe --disable-ffserver  --disable-encoders --disable-muxers --disable-filters --disable-bsfs --disable-indevs --disable-outdevs --disable-protocols --enable-protocol=rtmp --disable-demuxers --enable-demuxer=flv  --enable-demuxer=h264 --disable-parsers --enable-parser=h264 --enable-parser=aac  --disable-decoders --enable-decoder=h264 --enable-decoder=rawvideo --enable-dct --enable-dwt --enable-lsp --enable-mdct --enable-rdft --enable-fft

build_armeabi-v7a

? View Code SHELL
1
2
3
4
5
6
#!/bin/bash 
NDKRROOT=/home/aliang/Application/android-ndk 
PREBUILT=$NDKRROOT/toolchains/arm-linux-androideabi-4.6/prebuilt/linux-x86 
PLATFORM=$NDKRROOT/platforms/android-8/arch-arm 
export PATH=$PATH:$PREBUILT/bin 
./configure --prefix=$PWD/armeabi-v7a --arch=arm --target-os=linux --enable-cross-compile --extra-cflags="-I$PLATFORM/usr/include -O3 -march=armv7-a -mfpu=neon -mfloat-abi=softfp" --extra-ldflags="-L$PLATFORM/usr/lib -nostdlib  -lc -lm -ldl" --cc="ccache arm-linux-androideabi-gcc"  --enable-small --disable-debug --cross-prefix=arm-linux-androideabi-  --disable-ffmpeg --disable-ffplay --disable-ffprobe --disable-ffserver  --disable-encoders --disable-muxers --disable-filters --disable-bsfs --disable-indevs --disable-outdevs --disable-protocols --enable-protocol=rtmp --disable-demuxers --enable-demuxer=flv  --enable-demuxer=h264 --disable-parsers --enable-parser=h264 --enable-parser=aac  --disable-decoders --enable-decoder=h264 --enable-decoder=rawvideo --enable-dct --enable-dwt --enable-lsp --enable-mdct --enable-rdft --enable-fft

 

最大的好处就是统一了代码实现,在我们的IOS平台上可以使用相同的代码。

参考:

  1. http://stackoverflow.com/questions/9251747/record-rtsp-stream-with-ffmpeg-libavformat
  2.  https://github.com/lajos/iFrameExtractor

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值