FFmpeg编译和移植???
> ffmpeg, a collection of libraries and tools to process multimedia content such as audio, video, subtitles and related metadata.
ffmpeg官网: https://ffmpeg.org/download.html
在Android/Ndk环境下FFmpeg的编译及使用, FFmpeg自带了H264、AAC、MP3的解码器,但却没有(或没有好的)相应的编码器。相应的编码器需要使用第三方库。推荐使用的第三方库为x264(H264编码) 、FDK_AAC(AAC编码),lame(MP3编码)。在顺序上,应该先编译好第三方库,最后再编译FFmpeg库。
ffmpeg- http://baike.baidu.com/link?url=KUTLmroDNbtVBFB5o3YvEwp7j8_2p-FTY_6fFI_plGef3l-VZ4nkXpnf_AR-GR3XnhEMYuf1drgnSSxiHM07Ka
FFmpeg 是一个集录制、转换、音/视频编码解码功能为一体的完整的开源解决方案.FFmpeg 支持 MPEG、DivX、MPEG4、AC3、DV、FLV 等40多种编码,支持AVI、MPEG、OGG、Matroska、ASF 等90多种解码.记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。
FFmpeg 主目录下主要有 libavcodec 、 libavformat 和 libavutil 等子目录。其中 libavcodec 用于存放各个encode/decode模块.
ffmpeg下各个包的作用:
libavformat:媒体格式,用于各种音视频封装格式的生成和解析,包括获取解码所需信息以生成解码上下文结构和读取音视频帧等功能;
libavcodec:用于各种类型声音/图像编解码;
libavutil:包含一些公共的工具函数;核心工具
libswscale:用于视频场景比例缩放、色彩映射转换;
libpostproc:用于后期效果处理;
libavdevice:设备,support many input/output devices,用于视频采集访问摄像头等
libavfilter:后处理,provides a generic audio/video filtering,用做滤镜处理
libswresample:highly optimized audio resampling,rematrixing and sample format conversion operations.用于重采样
libavresample:highly optimized image scaling and colorspace and pixel format conversion operations.
ffmpeg:该项目提供的一个工具,可用于格式转换、解码或电视卡即时编码等;
ffsever:一个 HTTP 多媒体即时广播串流服务器;
ffplay:是一个简单的播放器,使用ffmpeg 库解析和解码,通过SDL显示;
Android Multimedia框架总结(二十六)利用FFmpeg进行解码直播流- https://mp.weixin.qq.com/s?__biz=MzI2OTQxMTM4OQ==&mid=2247484660&idx=1&sn=462bb0c08bcc06ed57046cf2bf57a659&chksm=eae1f1a6dd9678b0ede52250daf275c5ff840de0ee55c4628509b48ec5b932890031be3c67b8#rd
手把手图文并茂教你用Android Studio编译FFmpeg库并移植- http://mp.weixin.qq.com/s?__biz=MzI2OTQxMTM4OQ==&mid=2247484013&idx=1&sn=3cfdb06c7a4f470555402459c30685df&chksm=eae1f73fdd967e2955ffc79f7cf042440a7e63a60f5650e0a4098aa78feb0566bbe0793cf7b1&scene=21#wechat_redirect
利用FFmpeg玩转Android视频录制与压缩(一)- http://blog.csdn.net/mabeijianxi/article/details/63335722
> Windows下用ndk编译ffmpeg- http://blog.csdn.net/miller1026/article/details/49717025
编译FFmpeg库并移植(important)
Android Studio编译FFmpeg库并移植- https://pan.baidu.com/s/1eRVON4m
最简单的基于FFmpeg的移动端例子:Android HelloWorld- http://blog.csdn.net/leixiaohua1020/article/details/47008825
手把手图文并茂教你用Android Studio编译FFmpeg库并移植- http://blog.csdn.net/hejjunlin/article/details/52661331
实现了一款基于FFMpeg的支持多路视频的实时流媒体播放器:https://github.com/huweijian5/RtspPlayer
最简单的基于FFmpeg的移动端例子:Android HelloWorld- http://blog.csdn.net/leixiaohua1020/article/details/47008825
window环境下使用ndk编译出android studio/Eclipse能使用的ffmpeg动态库- http://blog.csdn.net/u013252711/article/details/52262514
音视频聊天开发: 7 Android下ffmpeg+x264编译- http://blog.chinaunix.net/uid-15063109-id-4579915.html
windows下用ndk r9编译ffmpeg- http://blog.csdn.net/gycs626/article/details/36378717
windows 下使用 MinGW + msys 编译 ffmpeg- http://blog.csdn.net/leixiaohua1020/article/details/12755173
windows10下编译ffmpeg for android- http://blog.csdn.net/huweijian5/article/details/52840177
1.下载并安装mingw,配置mingw的path环境变量
2.双击mingw目录下的msys.bat,MinGW\msys\1.0\msys.bat
3.修改ffmpeg的一些变量及配置
4.在msys.bat的DOS界面中,cd 切换到ffmpeg目录E:/workplace_eclipse_android/DesacoAV/jni/ffmpeg-3.3.1,并输入执行./build_android.sh命令
生成的so有:swresample,avcodec,avformat,swscale,postproc,avfilter,avdevice,sffstreamer。。。
#!/bin/bash
export TMPDIR=E:/workplace_eclipse_android/ffmpeg/temp
NDK=F:/software_ide/android_eclipse_ide/android-ndk-r10b
SYSROOT=$NDK/platforms/Android-18/arch-arm
TOOLCHAIN=$NDK/toolchains/arm-linux-androideabi-4.8/prebuilt/windows
CPU=arm
PREFIX=E:/workplace_eclipse_android/ffmpeg/temp
ADDI_CFLAGS="-Os -fpic -marm"
function build_one
{
./configure \
--prefix=$PREFIX \
--enable-shared \
--enable-static \
--enable-asm \
--enable-neon \
--disable-doc \
--disable-ffmpeg \
--disable-ffplay \
--disable-ffprobe \
--disable-ffserver \
--disable-doc \
--disable-symver \
--enable-pthreads \
--enable-small \
--enable-jni \
--enable-mediacodec \
--enable-runtime-cpudetect \
--cross-prefix=$TOOLCHAIN/bin/arm-linux-androideabi- \
--target-os=android \
--arch=arm \
--enable-cross-compile \
--sysroot=$SYSROOT \
--extra-cflags="$ADDI_CFLAGS" \
--extra-ldflags="$ADDI_LDFLAGS" \
$ADDITIONAL_CONFIGURE_FLAG
make clean
make
make install
}
build_one
read -p "Press any key to continue."
---------------------------------------
FFmpeg自带了H264、AAC、MP3的解码器,但却没有(或没有好的)相应的编码器。相应的编码器需要使用第三方库。推荐使用的第三方库为x264(H264编码) 、FDK_AAC(AAC编码),lame(MP3编码)。
ffmpeg(视频采集/编码/传输/解码/播放),音视频的格式转换;FFMPEG数据封装格式、多媒体传输协议以及音视频编解码器
Android 使用FFmpeg实现视频录制和视频播放- http://download.csdn.net/download/somnus_comm/8691523
Android最简单的编译FFmpeg成一个SO库- http://blog.csdn.net/chengkaizone/article/details/52984002
NDK环境下FFmpeg及AAC,MP3,X264的编译- http://blog.csdn.net/iamshaofa/article/details/44116743
使用 NDK r9 编译ffmpeg- http://blog.csdn.net/lihenair/article/details/22787547
如何发送RTMP请求??如何搭建RTMP服务器?
RTMP是Real Time Messaging Protocol(实时消息传输协议)的首字母缩写。该协议基于TCP,是一个协议族,包括RTMP基本协议及RTMPT/RTMPS/RTMPE等多种变种。RTMP是一种设计用来进行实时数据通信的网络协议,主要用来在Flash/AIR平台和支持RTMP协议的流媒体/交互服务器之间进行音视频和数据通信。支持该协议的软件包括Adobe Media Server/Ultrant Media Server/red5等。
Android 使用Rtmp音视频推流- http://blog.csdn.net/a992036795/article/details/54583571 , https://github.com/blueberryCoder/LiveStream
“如何在android上播放m3u8视频”是android开发者最常见的问题之一。通过Http 协议进行视频流直播最简单的办法就是使用标准的 VideoView. 但只能在android3.0以上的设备上播放m3u8流。因为在Android 3.0引入HTTP/ HTTPS直播和HTTP/ HTTPS渐进式流媒体协议,在android3.1完全支持HTTPS。
流媒体协议(RTP RTCP RTSP RTMP HLS)
Vitamio 是收费的,其实百度的解码库也很强大,而且针对不同架构的CPU做了优化,不过后来好像更新比较慢了,如果公司不舍得花钱的话,可以看下百度的云媒体服务。
vitamio ,webRTC ,ffmpeg ,vlc ,ijkplayer
先说下 vitamio这个是功能很强大,但是企业收费版的,个人用户可以玩玩.
目前WebRtc只适合小范围(8人以内)音视频会议,不适合做直播可以用WebRTC来做视频直播吗?
接下来介绍下 ffmpeg vlc ijkplayer以及选择方案
ffmpeg是一个非常强大的音视频编解码开源库,目前市场上流行的播放器,大部分都是基于此开发的,包括暴风,腾讯,等等以及上面提到的vitamio,vlc,ijkplayer
关于ffmpeg源码分析,有兴趣的请看雷霄骅(leixiaohua1020)的专栏
vlc 支持android开发 ,ijkplayer也支持. 通过反编译网易云音乐,以及YY等音视频app.发现网易云音乐,斗鱼用的ijkplayer,YY用的VLC.
那么vlc&ijkplayer相比较各有什么优缺点呐,该如何选择呐?[待深入使用,或者用过的可以交流下]
其实这个没有深入分析,ijkplayer是bilibili开源的音视频编解码库,对android,iOS进行和很好的抽取封装,易于编译使用.vlc尝试过,稍微复杂些.
RTMP直播推流方案:FFmpeg进行直播推流 百度云推流SDK,七牛推流SDK