[一]ffmpeg音视频解码

[一]ffmpeg音视频解码

一.编译ffmpeg

1.安装vmware虚拟机

2.vmware虚拟机安装linux操作系统

3.安装ftp和fshell软件

4.在Ubuntu(Linux)中编译Android平台的FFmpeg( arm和x86 )

(1)下载FFmpeg源码(v3.3.6)

下载地址( http://www.ffmpeg.org/download.html#releases

(2)下载NDK(r14b)

下载地址( https://developer.android.google.cn/ndk/downloads/index.html)

(3)编写Android编译脚本

5.解压FFmpeg

(1)用ftp上传到Ubuntu中

(2)解压Ffmpeg(tar -zxvf ffmpeg-3.3.6.tar.gz)

(3)解压NDK(unzip android-ndk-r14b-linux-x86_64.zip)

6.Android编译脚本

(1)修改FFmpeg的configure文件

因为android只能加载*.so结尾的动态库,不能识别如*.so.57结尾的

java 复制代码
#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)编写Android编译脚本

java 复制代码
#!/bin/bash
export NDK_HOME=/usr/work/ndk/android-ndk-r14b
export PLATFORM_VERSION=android-9
function build
{
	echo "start build ffmpeg for $ARCH"
	./configure --target-os=linux \
	--prefix=$PREFIX --arch=$ARCH \
	--disable-doc \
	--enable-shared \
	--disable-static \
	--disable-yasm \
	--disable-asm \
	--disable-symver \
	--enable-gpl \
	--disable-ffmpeg \
	--disable-ffplay \
	--disable-ffprobe \
	--disable-ffserver \
	--cross-prefix=$CROSS_COMPILE \
	--enable-cross-compile \
	--sysroot=$SYSROOT \
	--enable-small \
	--extra-cflags="-Os -fpic $ADDI_CFLAGS" \
	--extra-ldflags="$ADDI_LDFLAGS" \
	$ADDITIONAL_CONFIGURE_FLAG
	make clean
	make
	make install
	echo "build ffmpeg for $ARCH finished"
}
java 复制代码
#arm
ARCH=arm
CPU=arm
PREFIX=$(pwd)/android/$ARCH
TOOLCHAIN=$NDK_HOME/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64
CROSS_COMPILE=$TOOLCHAIN/bin/arm-linux-androideabi-
ADDI_CFLAGS="-marm"
SYSROOT=$NDK_HOME/platforms/$PLATFORM_VERSION/arch-$ARCH/
build

#x86
ARCH=x86
CPU=x86
PREFIX=$(pwd)/android/$ARCH
TOOLCHAIN=$NDK_HOME/toolchains/x86-4.9/prebuilt/linux-x86_64
CROSS_COMPILE=$TOOLCHAIN/bin/i686-linux-android-
ADDI_CFLAGS="-march=i686 -mtune=intel -mssse3 -mfpmath=sse -m32"
SYSROOT=$NDK_HOME/platforms/$PLATFORM_VERSION/arch-$ARCH/
build

7.开始编译

(1)执行configure文件生成makefile文件

chmod 777 configure(修改权限)

./configure(执行脚本)

(2)执行android编译脚本

chmod 777 build_android.sh(修改权限)

./build_android.sh(执行脚本)

8.编译结果

二.封装格式和编码格式

三.ffmppeg+opensl es音频播放器

1.ffmpeg解码流程

2.生产者消费者

3.使用ffmpeg进行重采样

4.使用opensl-es播放音乐:

opensl-es:嵌入式、跨平台、免费、音频处理库

四.ffmppeg+opengl es 视频播放器

1.ffmpeg解码视频:

2.软解码:opengl es 渲染YUV数据




3.硬解码:使用MediaCodec直接解码AVpacet 用OpenGl sl渲染


4.难点:黑色闪屏

5.音视频不同步




相关推荐
EasyCVR2 小时前
ISUP协议视频平台EasyCVR萤石设备视频接入平台银行营业网点安全防范系统解决方案
大数据·人工智能·物联网·安全·音视频·监控视频接入
Black蜡笔小新4 小时前
H.265流媒体播放器EasyPlayer.js网页全终端安防视频流媒体播放器可以播放本地视频吗
javascript·音视频·h.265
菊风 Juphoon5 小时前
菊风视频能力平台开发服务正式入驻华为云云商店,成为华为云联营联运合作伙伴
华为云·音视频
无法雾题啊5 小时前
视频偏黄怎么调色?去黄提亮视频的方法
音视频·视频编解码
内核工匠6 小时前
WebRTC音视频同步原理与实现详解(上)
音视频·webrtc
mo47767 小时前
webrtc音频模块介绍(二) ADM
音视频·webrtc
索迪迈科技7 小时前
渣土车治理新方案:智能化引领安全与环保新时代
人工智能·安全·音视频·视频监控·车载监控·车辆安全
ziqibit10 小时前
linux部署Whisper 视频音频转文字
whisper·音视频
@Crazy Snail11 小时前
C# Winform--ffmpeg图片合成视频以及参数设置
开发语言·ffmpeg·c#
runing_an_min12 小时前
ffmpeg 视频滤镜:高斯模糊-gblur
ffmpeg·音视频·高斯模糊·gblur