视频开发学习--ffmpeg

来源:互联网 发布:java中的工厂模式 编辑:程序博客网 时间:2024/05/29 12:06


前言:mac 下  Android studio 安装NDK

1. http://blog.csdn.net/u010350809/article/details/46840893  

2.打开as 。在gradle scripts 里 新建gradle.properties --- android.useDeprecatedNdk = true


ffmpeg的学习记录。研究此神的博客为主,http://blog.csdn.net/leixiaohua1020/(对于此神...一声长叹.....哎.....惋惜)



理论知识。http://blog.csdn.net/leixiaohua1020/article/details/18893769

解协议的作用,就是将流媒体协议的数据,解析为标准的相应的封装格式数据。视音频在网络上传播的时候,常常采用各种流媒体协议,

封装格式的主要作用是把视频码流和音频码流按照一定的格式存储在一个文件中

RTSP: http://baike.baidu.com/link?url=13Ng8IlMAhBqKGQxle1RDFOEGYMhdmnjlhnUpR0ac0mK-y0Zmgzs2bwAN0Ow1lGqZSXxjRyc8ft9aSCDlMIMQK

音频主要:AAC。 视频:H.264

视频编码的主要作用是将视频像素数据(RGB,YUV等)压缩成为视频码流,从而降低视频的数据量。

音频编码的主要作用是将音频采样数据(PCM等)压缩成为音频码流,从而降低音频的数据量

RTMP:http://baike.baidu.com/link?url=9QX1OX22Ijn09TrdNo57qW0nCs0Vudo6RiMqssmEu2TWGhRUpi2Pu-i0uJcZOuQN7xSElGixNCOv9n9BupLp9q



下载并编译ffmpeg放在ndk-sources目录下   (http://www.jb51.net/article/77720.htm)

git clone https://git.ffmpeg.org/ffmpeg.git /Users/cynthia/android/android-ndk-r10b/sources/FFmpeg


1.将ffmpeg 下 configure 文件做如下修改 :
 
   SLIBNAME_WITH_MAJOR='$(SLIBNAME).$(LIBMAJOR)'
LIB_INSTALL_EXTRA_CMD='$$(RANLIB) "$(LIBDIR)/$(LIBNAME)"'
SLIB_INSTALL_NAME='$(SLIBNAME_WITH_VERSION)'
SLIB_INSTALL_LINKS='$(SLIBNAME_WITH_MAJOR) $(SLIBNAME)'
⬇️
SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(FULLNAME)-$(LIBMAJOR)$(SLIBSUF)'
LIB_INSTALL_EXTRA_CMD='$$(RANLIB) "$(LIBDIR)/$(LIBNAME)"'
SLIB_INSTALL_NAME='$(SLIBNAME_WITH_MAJOR)'
SLIB_INSTALL_LINKS='$(SLIBNAME)'

2.在ffmpeg下新建 build_android.sh:
#!/bin/bash
NDK=/Users/cynthia/android/android-ndk-r10b
SYSROOT=$NDK/platforms/android-14/arch-arm/
TOOLCHAIN=$NDK/toolchains/arm-linux-androideabi-4.8/prebuilt/darwin-x86_64
function build_one
{
./configure \
 --prefix=$PREFIX \
 --enable-shared \
 --disable-static \
 --disable-doc \
 --disable-ffmpeg \
 --disable-ffplay \
 --disable-ffprobe \
 --disable-ffserver \
 --disable-avdevice \
 --disable-doc \
 --disable-symver \
 --cross-prefix=$TOOLCHAIN/bin/arm-linux-androideabi- \
 --target-os=linux \
 --arch=arm \
 --enable-cross-compile \
 --sysroot=$SYSROOT \
 --extra-cflags="-Os -fpic $ADDI_CFLAGS" \
 --extra-ldflags="$ADDI_LDFLAGS" \
 $ADDITIONAL_CONFIGURE_FLAG
make clean
make
make install
}
CPU=arm
PREFIX=$(pwd)/android/$CPU 
ADDI_CFLAGS="-marm"
build_one


3.
./configure --disable-yasm
.sudo chmod +x build_android.sh
./build_android.sh

编译成功后,会在FFmpeg文件下有个 Android 目录,里面有 include 和 lib两个文件夹。这就是以后要用到的

(http://blog.csdn.net/pi9nc/article/details/19936099     JNI 学习)
4.在local.properties中添加 ndk.dir 路径
5.as下创建ffmpegDemo  在 main下创建jni文件夹  在jni下创建Android.mk, Application.mk
6.修改build.gradle(app)

7.编写jni. 此处用的是雷神已写好的.c文件


总结:从0 开始创建一个新的工程,编译编写。是一个学习的过程, 如果不动手,有时候,在认为是对的时候,其实他并不一定对,如果不真实自己动手,就不会踩到一些坑,不踩坑,难以加深印象。其次,也是因为下载雷神demo后,没有跑起来,ffmpeg库也不是最新的,所以完全重新开始。  (http://blog.csdn.net/leixiaohua1020/article/details/47008825)


demo下载地址 https://github.com/yuanhaoHN/FFmpegForYH


后续将持续学习




1 0