织梦CMS - 轻松建站从此开始!

罗索

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

落鹤生 发布于 2013-02-25 17:34 点击:次 
正在做一个基于RTMP+H264的手机端实时视频流项目。 按以前的方案需要分别用librtmp/JUV和opencore的H264解码库实现。 在进一步了解FFmpeg后,决定全部使用ffmpeg来实现。 当然,在手机客户端上,多余的解码库是不需要的。因此需要对ffmpeg精简配置,最终jni代码编译链接
TAG:

正在做一个基于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

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

build_armeabi

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

build_armeabi-v7a

  1. #!/bin/bash  
  2. NDKRROOT=/home/aliang/Application/android-ndk  
  3. PREBUILT=$NDKRROOT/toolchains/arm-linux-androideabi-4.6/prebuilt/linux-x86  
  4. PLATFORM=$NDKRROOT/platforms/android-8/arch-arm  
  5. export PATH=$PATH:$PREBUILT/bin  
  6. ./configure --prefix=$PWD/armeabi-v7a --arch=arm --target-os=linux
  7.  --enable-cross-compile
  8.  --extra-cflags="-I$PLATFORM/usr/include -O3 -march=armv7-a -mfpu=neon -mfloat-abi=softfp"
  9.  --extra-ldflags="-L$PLATFORM/usr/lib -nostdlib  -lc -lm -ldl" --cc="ccache arm-linux-androideabi-gcc" 
  10.  --enable-small --disable-debug --cross-prefix=arm-linux-androideabi- 
  11.  --disable-ffmpeg --disable-ffplay --disable-ffprobe --disable-ffserver 
  12.  --disable-encoders --disable-muxers --disable-filters --disable-bsfs
  13.  --disable-indevs --disable-outdevs --disable-protocols
  14.  --enable-protocol=rtmp --disable-demuxers --enable-demuxer=flv 
  15.  --enable-demuxer=h264 --disable-parsers --enable-parser=h264
  16.  --enable-parser=aac  --disable-decoders --enable-decoder=h264
  17.  --enable-decoder=rawvideo --enable-dct --enable-dwt --enable-lsp
  18.  --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
(bashell)
本站文章除注明转载外,均为本站原创或编译欢迎任何形式的转载,但请务必注明出处,尊重他人劳动,同学习共成长。转载请注明:文章转载自:罗索实验室 [http://www.rosoo.net/a/201302/16510.html]
本文出处:http://bashell.sinaapp.com 作者:bashell 原文
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 验证码:点击我更换图片
栏目列表
将本文分享到微信
织梦二维码生成器
推荐内容