All Projects → jkkj93 → Freya Live Library Optimizer For Android

jkkj93 / Freya Live Library Optimizer For Android

Licence: gpl-2.0
⚡️一套RTMP直播推流常用库的编译简化/优化工具(面向安卓设备),简单配置后能一键完成库文件的编译与优化(FFMPEG+X264+FDKAAC+LIBRTMP/FFMPEG NATIVE RTMP+LIBYUV),针对ARM、ARMV7-A、ARM64-V8A、X86、X86_64、MIPS、MIPS64全平台极致优化。

Programming Languages

c
50402 projects - #5 most used programming language

Projects that are alternatives of or similar to Freya Live Library Optimizer For Android

Ovenmediaengine
OvenMediaEngine (OME) is a streaming engine for real-time live broadcasting with sub-second latency.
Stars: ✭ 760 (+544.07%)
Mutual labels:  rtmp
Starrysky
🔥A Powerful and Streamline MusicLibrary(一个丰富的音乐播放封装库,支持多种音频格式,完美解决你的问题。)
Stars: ✭ 1,022 (+766.1%)
Mutual labels:  rtmp
Rtmp Rtsp Stream Client Java
Library to stream in rtmp and rtsp for Android. All code in Java
Stars: ✭ 1,338 (+1033.9%)
Mutual labels:  rtmp
Live Rtmp Publisher
a simple rtmp publisher under linux
Stars: ✭ 17 (-85.59%)
Mutual labels:  rtmp
Gpuhaishinkit.swift
Camera and Microphone streaming library via RTMP, HLS for iOS. Powered by GPUImage + HaishinKit.
Stars: ✭ 35 (-70.34%)
Mutual labels:  rtmp
Javelin
[Mirror] RTMP streaming server written in Rust
Stars: ✭ 77 (-34.75%)
Mutual labels:  rtmp
Docker Nginx Rtmp
🐋 A Dockerfile for nginx-rtmp-module + FFmpeg from source with basic settings for streaming HLS. Built on Alpine Linux.
Stars: ✭ 608 (+415.25%)
Mutual labels:  rtmp
Media Server
RTSP/RTP/RTMP/FLV/HLS/MPEG-TS/MPEG-PS/MPEG-DASH/MP4/fMP4/MKV/WebM
Stars: ✭ 1,363 (+1055.08%)
Mutual labels:  rtmp
Analysisavp
音视频学习,相关文件格式/协议分析。h264 nalu aac adts flv
Stars: ✭ 38 (-67.8%)
Mutual labels:  rtmp
Docker Multistreamer
Dockerized multistreamer
Stars: ✭ 90 (-23.73%)
Mutual labels:  rtmp
Librestreaming
Android real-time effect filter rtmp streaming library.using Mediacodec HWencoding&librtmp stream.
Stars: ✭ 856 (+625.42%)
Mutual labels:  rtmp
Docker
Docker + Red5 items
Stars: ✭ 32 (-72.88%)
Mutual labels:  rtmp
Android Rtmp Muxer
Implementation of the RTMP protocol to broadcast video and audio on Android in pure Java
Stars: ✭ 78 (-33.9%)
Mutual labels:  rtmp
Rtsp Simple Server
ready-to-use RTSP / RTMP server and proxy that allows to read, publish and proxy video and audio streams
Stars: ✭ 882 (+647.46%)
Mutual labels:  rtmp
Clappr Rtmp Plugin
📺 RTMP support for Clappr player.
Stars: ✭ 99 (-16.1%)
Mutual labels:  rtmp
Ffmpeg
Mirror of https://git.ffmpeg.org/ffmpeg.git
Stars: ✭ 27,382 (+23105.08%)
Mutual labels:  rtmp
Rtp Streamer
rtp record and rtp streamer
Stars: ✭ 60 (-49.15%)
Mutual labels:  rtmp
Streaming Room
Streaming room in Node.js, rtmp, hsl, html5 videojs player
Stars: ✭ 106 (-10.17%)
Mutual labels:  rtmp
Smarterstreaming
业内为数不多致力于极致体验的超强全自研跨平台(windows/linux/android/iOS)流媒体内核,通过模块化自由组合,支持实时RTMP推流、RTSP推流、RTMP播放器、RTSP播放器、录像、多路流媒体转发、音视频导播、动态视频合成、音频混音、直播互动、内置轻量级RTSP服务等,比快更快,业界真正靠谱的超低延迟直播SDK(1秒内,低延迟模式下200~400ms)。
Stars: ✭ 9,835 (+8234.75%)
Mutual labels:  rtmp
Rtmpmindmap
rtmp protocol mindmap
Stars: ✭ 85 (-27.97%)
Mutual labels:  rtmp

FREYA-LIVE-LIBRARY-OPTIMIZER-FOR-ANDROID

⚡️FREYA LIVE LIBRARY OPTIMIZER FOR ANDROID是一套RTMP直播推流常用库的编译简化/优化工具(面向安卓设备),简单配置后能一键完成库文件的编译与优化(FFMPEG+X264+FDKAAC+LIBRTMP/FFMPEG NATIVE RTMP+LIBYUV) 针对ARM、ARMV7-A、ARM64-V8A、X86、X86_64、MIPS、MIPS64全平台极致优化。参阅了大量技术文档确定优化选项,并经过了实机测试,是目前最好的RTMP推流库编译简化及优化工具 版本:1.0.2 更新日期:2017.01.11 一、需准备的编译环境 1.操作系统:LINUX X64 (推荐UBUNTU-12.04.5-DESKTOP-AMD64或以上版本) 2.NDK版本:R13或以上版本 (本工具目前采用GCC编译所有库文件,因此NDK中必须包含GCC编译器。而从NDK R13开始谷歌停止了对GCC的更新,转用CLANG作为默认编译器,且在CLANG编译器稳定后有移除GCC的计划,但就目前而言还是GCC更有优势,在GCC被正式移除后我会开发对应CLANG的编译脚本) 3.编译X86/X86_64库文件需要安装:YASM 1.3.0或以上版本 二、编译脚本与库文件的对应关系 1.freya_compile_arm.sh用于编译ARM库文件 2.freya_compile_armv7a.sh用于编译ARMV7-A库文件 3.freya_compile_arm64v8a.sh用于编译ARM64-V8A库文件 4.freya_compile_x86.sh用于编译X86库文件 5.freya_compile_x86_64.sh用于编译X86_64库文件 6.freya_compile_mips.sh用于编译MIPS库文件 7.freya_compile_mips64.sh用于编译MIPS64库文件 三、如何使用本工具 1.按照第二部分所述对应关系,找到需要使用的编译脚本,并为脚本中需要配置的变量赋值 2.找到CURRENT_PATH变量,配置本脚本所在的目录位置 3.找到NDKROOT_PATH变量,配置NDK所在目录位置 4.FFMPEG_RTMP_OPTIONS变量可以配置使用LIBRTMP(RTMPDUMP)还是FFMPEG NATIVE RTMP作为RTMP推流库,默认使用LIBRTMP(RTMPDUMP) 5.PREBUILT_TOOL_*_PATH变量可以配置对应各平台的TOOLCHAIN目录与程序名,需要配置到TOOLCHAIN程序文件名共有的前半段,一般无需修改(*代表ARM、ARMV7A、ARM64V8A、X86、X86_64、MIPS、MIPS64) 6.PLATFORM_*_PATH变量可以配置对应各平台的ANDROID API目录(*代表ARM、ARMV7A、ARM64V8A、X86、X86_64、MIPS、MIPS64) 7.PLATFORM_*_API变量可以配置对应各平台的ANDROID API级别(必须与PLATFORM_*_PATH相对应,*代表ARM、ARMV7A、ARM64V8A、X86、X86_64、MIPS、MIPS64) 8.PLATFORM_NDK_TOOLCHAIN_VERSION变量可以配置对应各平台的TOOLCHAIN版本,默认为4.9,一般无需修改 9.对于X86/X86_64平台而言,必须使用YASM_*_PATH变量指出YASM编译器的所在位置(*代表X86、X86_64) 10.脚本中对于以上变量的配置均有详细注释,在配置时可以参考 11.配置完成后使用root用户运行对应各平台的编译脚本即可,编译完成后在freya_build_finished目录会生成相应的库文件 12.如果freya_build_finished/平台名/lib目录中生成如下.a文件,则编译成功: FFMPEG:libavcodec.a、libavdevice.a、libavfilter.a、libavformat.a、libavresample.a、libavutil.a、libpostproc.a、libswresample.a、libswscale.a X264:libx264.a FDKAAC:libfdk-aac.a LIBRTMP(RTMPDUMP):librtmp.a POLARSSL:libpolarssl.a LIBYUV:libyuv.a 13.用户可以自行替换ffmpeg、x264、fdkaac、rtmpdump、polarssl、libyuv目录下的文件进行组件版本更换 四、当前源码版本 1.FFMPEG 3.2.2 RELEASE 2.X264 2017.01.10 STABLE 3.FDKAAC 0.1.5 2017.01.11 FROM MSTORSJO 4.LIBRTMP(RTMPDUMP) 2.4 5.POLARSSL 1.2.19 6.LIBYUV REV 1638 会定期更新FFMPEG、FDKAAC、X264、LIBYUV的版本,并进行编译与实机推流测试,一般2-3个月更新一次 由于官方已经停止了LIBRTMP(RTMPDUMP)的维护,因此LIBRTMP(RTMPDUMP)、POLARSSL一般不会更新,除非官方再次更新 五、优化方案 本编译脚本针对ARM、ARMV7-A、ARM64-V8A、X86、X86_64、MIPS、MIPS64全平台极致优化。参阅了大量技术文档确定优化选项,具体优化方案如下 1.ARM优化方案: FFMPEG: VFP+针对ARMV5TE的CPU调优 X264: VFP+多核多线程优化+针对ARMV5TE的CPU调优 FDKAAC: VFP+针对ARMV5TE的CPU调优 LIBRTMP: 针对ARMV5TE的CPU调优 POLARSSL: 汇编优化+针对ARMV5TE的CPU调优 LIBYUV: VFP+针对ARMV5TE的CPU调优 2.ARMV7-A优化方案: FFMPEG: NEON指令集+VFPV3+针对ARMV7-A的CPU调优 X264: NEON指令集+VFPV3+多核多线程优化+针对ARMV7-A的CPU调优 FDKAAC: NEON指令集+VFPV3+针对ARMV7-A的CPU调优 LIBRTMP: 针对ARMV7-A的CPU调优 POLARSSL: 汇编优化+针对ARMV7-A的CPU调优 LIBYUV: NEON指令集+VFPV3+针对ARMV7-A的CPU调优 3.ARM64-V8A优化方案: FFMPEG: NEON指令集+VFPV4+针对ARM64-V8A的CPU调优 X264: NEON指令集+VFPV4+多核多线程优化+针对ARM64-V8A的CPU调优 FDKAAC: NEON指令集+VFPV4+针对ARM64-V8A的CPU调优 LIBRTMP: 针对ARM64-V8A的CPU调优 POLARSSL: 汇编优化+针对ARM64-V8A的CPU调优 LIBYUV: NEON指令集+VFPV4+针对ARM64-V8A的CPU调优 4.X86/X86_64优化方案: FFMPEG: SSSE3指令集+汇编优化+针对ATOM的CPU调优 X264: SSSE3指令集+汇编优化+多核多线程优化+针对ATOM的CPU调优 FDKAAC: 针对ATOM的CPU调优 LIBRTMP: 针对ATOM的CPU调优 POLARSSL: 汇编优化+SSE2指令集+针对ATOM的CPU调优 LIBYUV: SSSE3指令集+针对ATOM的CPU调优 5.MIPS优化方案: FFMPEG: DSP R2+MSA+MIPS FPU+针对MIPS32R2的CPU调优 X264: DSP R2+MSA+MIPS FPU+多核多线程优化+针对MIPS32R2的CPU调优 FDKAAC: DSP R2+MSA+MIPS FPU+针对MIPS32R2的CPU调优 LIBRTMP: 针对MIPS32R2的CPU调优 POLARSSL: 汇编优化+针对MIPS32R2的CPU调优 LIBYUV: DSP R2+MIPS FPU+针对MIPS32R2的CPU调优 6.MIPS64优化方案: FFMPEG: DSP R2+MSA+MIPS FPU+针对MIPS64R6的CPU调优 X264: DSP R2+MSA+MIPS FPU+多核多线程优化+针对MIPS64R6的CPU调优 FDKAAC: DSP R2+MSA+MIPS FPU+针对MIPS64R6的CPU调优 LIBRTMP: 针对MIPS64R6的CPU调优 POLARSSL: 汇编优化+针对MIPS64R6的CPU调优 LIBYUV: MIPS FPU+针对MIPS64R6的CPU调优 六、为何选用此套组件作为直播推流方案 1.为何选择X264作为H264编码器 目前流行的开源H264编码器主要有:X264与OPENH264 X264作为H264编码器,主要有以下优势: (1)X264(SUPERFAST模式)与OPENH264速度、画质持平,X264(ULTRAFAST模式)比OPENH264快20%-30%,X264能适合更多低端设备推流,在高端设备上也能通过调节参数获得更好的性能与画质表现 (2)X264编码器拥有更丰富的调节选项,OPENH264可调的选项很少 (3)X264支持BASELINE、MAIN、HIGH三种PROFILE,OPENH264仅支持BASELINE。在高端设备上通过提高PROFILE的等级(会增加CPU的计算量),在同画质下可节省带宽。 2.为何选择FDKAAC作为AAC编码器 FDKAAC作为AAC编码器,主要有以下优势: (1)FDKAAC是目前音质最好的AAC编码器。从FFMPEG 3.0开始,FFMPEG的NATIVE AAC编码器虽有大幅改进(已经优于除FDKAAC外的其他AAC编码器),但仍落后于FDKAAC (2)FDKAAC有很好的性能表现 (3)FDKAAC是目前唯一支持HE的AAC编码器。高端设备使用HE模式(会增加CPU的计算量),在服务器支持的情况下,同音质下可节省带宽 3.为何选择LIBRTMP(RTMPDUMP)/FFMPEG NATIVE RTMP作为RTMP推流库 LIBRTMP(RTMPDUMP)作为推流库,主要有以下优势: (1)LIBRTMP(RTMPDUMP)支持全RTMP协议(RTMP RTMPT RTMPE RTMPTE RTMPS)推流,FFMPEG新版本目前虽然也支持全RTMP协议,但兼容性不如LIBRTMP(RTMPDUMP) FFMPEG NATIVE RTMP作为推流库,主要有以下优势: (1)FFMPEG NATIVE RTMP仍有官方维护,可获得来自官方的代码更新。而LIBRTMP(RTMPDUMP)缺少官方维护 4.为何选择POLARSSL作为SSL库 (1)使用POLARSSL可以让LIBRTMP(RTMPDUMP)支持RTMPT RTMPE RTMPTE RTMPS协议 (2)POLARSSL支持汇编优化+SSE2指令集优化 (3)POLARSSL比OPENSSL更小巧 5.为何选择LIBYUV作为视频操作/转换库 LIBYUV作为视频操作/转换库,主要有以下优势: (1)LIBYUV支持NEON优化(ARMV7-A/ARM64-V8A),SSE2/SSSE3/AVX2优化(X86/X86_64),DSP R2优化(MIPS32/MIPS64),性能远超FFMPEG自带的LIBSWSCALE 作者:jkkj93

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].