基于NDK开发Android平台RTSP播放器 最近做了不少android端的开发,有推流、播放、直播、对讲等各种应用,做了RTMP、RTSP、HTTP-FLV、自定义等各种协议,还是有不少收获和心得的...我这边做,核心模块和核心代码部分,都是基于NDK,用C++开发的,然后将so动态库,在Android java环境中使用,这个既能保证核心部分的代码性能,也能最大程度复用之前写的流媒体相关的大量代码,实践证明...这篇文章里,我打算描述一下我对于开发Android端RTSP播放器的程序框架,和设计思路,有相关需求的,希望能借此扩展下思路。...我在之前的一篇文章里也写了这部分,可以参考一下:"NDK开发Android端RTMP直播推流程序"。1....之前有篇文章里也有简单介绍,可以参考"NDK开发Android端RTMP直播推流程序",具体的语法可以参考官方网站Android Developer。图片写好后,调用ndk-build脚本编译,OK。
无需赘述,全自研内核,行业内一致认可的跨平台RTSP、RTMP直播播放器。本文以Android平台为例,介绍下如何集成RTSP、RTMP播放模块。...接口调用详解本文以大牛直播SDK Android平台SmartPlayerV2为例,播放之前,设置初始化参数配置(软解还是硬解、buffer time等)和需要播放的RTSP或RTMP URL,点开始播放即可...;import android.util.Log;import android.view.Surface;import android.view.SurfaceView;import android.view.View...平台RTSP、RTMP直播播放模块对接说明,在此之前,我们针对SmartPlayer做过一些技术方面的探讨,从低延迟、音视频同步处理、多实例实现、解码效率、性能占用、解码后数据对接、实时截图、录像、网络抖动处理等各个维度...感兴趣的开发者,可以单独跟我们探讨。
我们需要怎样的直播播放器?很多开发者在跟我聊天的时候,经常问我,为什么一个RTMP或RTSP播放器,你们需要设计那么多的接口,真的有必要吗?...带着这样的疑惑,我们今天聊聊Android平台RTMP、RTSP播放器常规功能,如软硬解码设置、实时音量调节、实时快照、实时录像、视频view翻转和旋转、画面填充模式设定、解码后YUV、RGB数据回调等...:图片延迟延迟延迟RTMP或RTSP直播播放器,特别是在一些交互场景下,对延迟要求近乎苛刻,所以,毫秒级的延迟,是一个直播播放器聊下去的基础,200-400ms的整体时延,是大家比较期望的,是的,你没看错...软硬解码设置Android平台特别是超过1080p的分辨率的流数据,如果设备性能一般,软解效率不一定高,这时候建议硬解码,硬解码我们分两种,一种是设置surface模式的硬解码,这种无法快照和回调yuv...播放器,还需要支持的客制化功能有支持回调H.264/H.265/AAC数据,或回到解码后的YUV或RGB数据,设置播放缓冲、设置快速播放、设置音频输出类型等,一个通用的RTSP、RTMP播放器,延迟是基础
Makefile 程序 ) 博客 , 安装 make 工具 ; 刚创建完项目后 , 项目是空的 ; 二、配置 Makefile 文件 ---- 如果 Windows 端没有 make 功能 , 参考 【开发环境...项目的通用 Makefile 配置 : 使用前只需要修改 NDK 和 NDK_ROOT 中的自己的 NDK 即可 ; NDK = D:/001_Develop/001_SDK/Sdk/ndk/android-ndk-r14b.../ndk-build.cmd NDK_ROOT = D:/001_Develop/001_SDK/Sdk/ndk/android-ndk-r14b MAKE = "$(NDK_ROOT)/prebuilt.../Android.mk NDK_APPLICATION_MK=....平台 , 一般是 Android 兼容的最低版本 APP_PLATFORM := android-19 五、主函数源码 ---- main.c 源码 : #include
尽管Java一贯以其良好的跨平台性而著称,但真正的跨平台非C/C++莫属,因为当前世上90%的系统都是基于C/C++编写的。...应用程序框架层 Android平台最常用的组件和服务都在这一层,是每个Android开发者必须熟悉和掌握的一层,是应用开发的基础。...NDK NDK是什么 NDK(Native Development Kit缩写)一种基于原生程序接口的软件开发工具包,可以让您在 Android 应用中利用 C 和 C++ 代码的工具。...通过此工具开发的程序直接在本地运行,而不是虚拟机。 在Android中,NDK是一系列工具的集合,主要用于扩展Android SDK。...同时,NDK还集成了交叉编译器,并提供了相应的mk文件隔离CPU、平台、ABI等差异,开发人员只需要简单修改mk文件(指出“哪些文件需要编译”、“编译特性要求”等),就可以创建出so文件。
1、Android NDK简介 NDK全称为native development kit本地语言(C&C++)开发包。...而对应的是经常接触的Android-SDK,(software development kit)软件开发包(只支持java语言开发)。...简单来说利用NDK,可以开发纯C&C++的代码,然后编译成库,让利用Android-SDK开发的Java程序调用。...NDK开发的可以称之为底层开发或者jni(java native interface)层开发,SDK开发可以称为上层开发。...2、为何要用NDK 2.1、众所周知,利用SDK编写的代码,生成的APK,很容易就可以反编译了,安全性极为不高,而利用NDK开发的库,不容易被反编译,保密性,安全性都提高了。
背景 我们在做Android平台RTSP或者RTMP播放器开发的时候,需要注意的点非常多,以下,以大牛直播SDK(官方)的接口为例,大概介绍下相关接口设计: 接口设计 1....网络状态回调 一个好的播放器,好的状态回调必不可少,比如网络连通状态、快照、录像状态、当前下载速度等实时反馈,可以让上层开发者更好的掌控播放端状态,给用户更好的播放体验。...音频输出类型 音频输出,android平台支持audiotrack模式和opensl es模式,一般来说,考虑到设备通用性,建议采用audiotrack模式。...平台RTSP、RTMP播放器接口设计需要参考的点,对于大多数开发者来说,不一定需要实现上述所有部分,只要按照产品诉求,实现其中的40%就足够满足特定场景使用了。...一个好的播放器,特别是要满足低延迟稳定的播放(毫秒级延迟),需要注意的点远不止如此,感兴趣的开发者,可以参考blog其他文章。
前言 NDK即Native Development Kit,是Android上用来开发c/c++的开发工具包。...安装步骤:developer.android.com/studio/proj… 一、基础用法 在local.properties中配置ndk目录: ndk.dir=/Users/bc/android-ndk-r17c...(2)ndk-build:可在Android.mk 和 Application.mk文件中配置编译选项,ndk-build的C++运行时默认值为none,ndk-build中默认停用C++异常,默认停用...更多NDK native api请参考官方文档developer.android.com/ndk/referen… 。...身份证识别技术项目实战 Android(安卓)开发零基础从入门到精通 本文转自 https://juejin.cn/post/6952049081464127518,如有侵权,请联系删除。
好多开发者提到,在目前开源播放器如此泛滥的情况下,为什么还需要做自研框架的RTSP播放器,自研和开源播放器,到底好在哪些方面?以下大概聊聊我们的一点经验,感兴趣的,可以关注 github: 1....低延迟:大多数RTSP的播放都面向直播场景,如果延迟过大,严重影响体验,所以,低延迟是衡量一个好的RTSP播放器非常重要的指标,目前大牛直播SDK的RTSP直播播放延迟比开源播放器更优异(大牛直播SDK...支持多实例:大牛直播SDK提供的RTSP直播播放SDK支持在设备性能允许的情况下,支持多实例播放RTSP流数据,大多开源播放器对多实例支持不太友好; 4....支持解码后audio/video数据输出:大牛直播SDK接触到好多开发者,希望能在播放的同时,获取到YUV或RGB数据,进行人脸匹配等算法分析,开源播放器不具备此功能; 8....总结 基于上述因素,想做好一个RTSP或者RTMP播放器,需要考虑的点实在太多了,特别是细节问题,开源的表面看省了前80%的经历,但是因为大多开源播放器系统比较庞大,适用于点播播放,却对直播播放支持很差
首先,什么是NDK开发,听到这个词,我的第一感觉是高大上的,其实倒也没错,NDK在Android开发中属于偏底层的,需要与C++等进行联系,它没有像应用层开发那么灵活,但是作为开发者,我们必须了解其简单的使用...NDK是Android所提供的一个工具集合,通过NDK可以在Android中更加方便的通过JNI来访问本地代码,比如C或者C++。...NDK还提供了 交叉编译器(在一种平台上编译,编译出来的程序,是放到别的平台上运行即编译的环境,和运行的环境不一样,属于交叉的,此所谓cross。)...,开发人员只需要简单修改 mk 文件就可以生成特定cpu 平台的动态库。使用ndk有以下好处: 提高代码的安全性。...(so包很难反编译) 可以很方便的使用目已有的C/C++开源库 (比如音视频开发使用ffmpeg) 便于平台之间的移植。
我们在实现Windows平台RTSP播放器或RTMP播放器的时候,需要考虑的点很多,比如多实例设计、多绘制模式兼容、软硬解码支持、快照、RTSP下TCP-UDP自动切换等,以下就其中几个方面,做个大概的探讨...视频绘制模式 我们在实现Windows平台播放的时候,一般首选D3D,D3D不支持的情况下,考虑数据回上来,采用GDI模式,一般实现如下,先做D3D检测,以大牛直播SDK播放端为例(Github),调用...视频view旋转 好多现场的开发人员有这样的困惑,有些设备,在安装时,可能没调整好角度,导致拍出来的角度倒立等,看着很不方便,这时候,如果现场设备比较多的话,不可能每台设备都到现场重新安装,实时view...实时快照 实时快照功能不表,是一个好的RTSP播放器和RTMP播放器必备的功能,实时快照是把解码后的yuv数据重新编码成png,所以有一定的CPU消耗,不建议过于频繁操作,具体实现如下:...和RTMP播放器设计过程中的其他点,做更进一步的探讨,谢谢大家的关注。
branch=master)] 项目特点 基于C++11开发,避免使用裸指针,代码稳定可靠;同时跨平台移植简单方便,代码清晰简洁。...支持linux、macos、ios、android、windows平台 支持画面秒开(GOP缓存)、极低延时(500毫秒内,最低可达100毫秒) 支持websocket-flv直播 ZLMediaKit...网络编程二次开发SDK。 功能清单 RTSP RTSP 服务器,支持RTMP/MP4转RTSP。...android-ndk-r14b 编译 编译(Windows) 我的编译环境 windows 10 visual studio 2017 cmake-gui 编译 1 进入ZLMediaKit目录执行...IOS rtmp/rtsp播放器,视频推流器 支持linux、windows、mac的rtmp/rtsp播放器 上述工程可能在最新的代码的情况下编译不过,请手动修改 授权协议 本项目自有代码使用宽松的
文章目录 一、下载指定历史版本 NDK 一、下载指定历史版本 NDK ---- 进入到 ndk 下载的 " 修订历史记录 " 页面 https://developer.android.google.cn.../ndk/downloads/revision_history ; 在该页面中 , 有 Android NDK r1(2009 年 6 月)~ Android NDK r23 LTS(2021 年 8...月)之间的所有版本下载 ; 点开 Android NDK r10e(2015 年 5 月) 选项 , 点击 " 请从此处下载此归档版本。..." 链接 ; 进入 https://developer.android.google.cn/ndk/downloads/older_releases#ndk-10c-downloads 页面 , 需要同意相关条款.../android-ndk-r10e-linux-x86_64.zip
---- 【Android】NDK开发Crash问题 手机user版本还是userdebug或是eng版本:adb shell getprop ro.build.type 因为使用的user版本的手机.../aarch64-linux-android-4.9/prebuilt/darwin-x86_64/bin/aarch64-linux-android-addr2line 其中NDK_HOME表示...ndk-stack Android NDK自从版本r6开始,提供了一个工具ndk-stack。这个工具能自动分析tombstone文件,能将崩溃时的调用内存地址和C++代码一行一行对应起来。...ndk-stack工具同样也位于NDK包中,它的路径如下所示: $NDK_HOME/ndk-stack ndk-stack的使用说明如下所示: Usage: ndk-stack -sym PATH [...objdump也是ndk自带的一个工具,通常与addr2line在同一目录: $NDK_HOME/toolchains/aarch64-linux-android-4.9/prebuilt/darwin-x86
在Android项目中使用bspatch Step1:下载依赖库bzip的源码(官网域名过期),可以从我的GitHub项目中拷贝: 下载地址:https://github.com/xch168/BsPatchTest...Step2:将bzip库,导入到Android项目中; ?...Step3:将bsdiff中的bspatch.c文件导入到Android项目中,并将bspatch.c中的#include 改成#include "bzip2/bzlib.h" ?
之前的两篇文章主要介绍了音视频SDK中的线程设计和消息队列,其实对那些想从Android转向音视频开发的同学来说,NDK方面的知识是不得不提的“前置条件”,因为音视频开发的主要是C/C++开发,也许有些同学会反驳...这些工具我们应该学会怎么使用,但是它并不能支持我们深入学习音视频技术,很多跨平台和使用广泛的库都是C/C++的,所以NDK开发是音视频技术学习的“门槛”,本文的目的就是带你从0开始开始学习NDK相关的知识点...对于没有做过嵌入式开发的人来说,也许很陌生,一些Android的开发,如果没有过多涉及JNI方面,也不太清楚什么是交叉编译,通俗来讲,交叉编译就是在一个平台上生成另外一个平台可以执行的代码。...现在的CMake结构整体看上去还是比较简单一些,降低了NDK开发的门槛。 CMake 是一个开源、跨平台的工具系列,旨在构建、测试和打包软件。...本文篇幅比较长,但也只是介绍了NDK开发的基本知识,NDK开发还有很多疑难的点,我们留到后面吧。
最近博主在做android平台的游戏开发,不得不说android开发是真的麻烦。 ndk下载 android开发需要安装android ndk,这里对ndk的版本有着高要求。...chmod a+x android-ndk-r10c-darwin-x86_64.bin ..../android-ndk-r10c-darwin-x86_64.bin //在这个过程中可能需要安全认证 输入第二行命令后,就会看到文件再解压了,解压需要一小小小会儿,稍等一下下就行。...sdk路径 export ANDROID_NDK_ROOT=/Users/cxf/Documents/android-ndk-r10e // ndk路径 export NDK_ROOT=/Users.../cxf/Documents/android-ndk-r10e export NDK_ROOT_quick=/Users/cxf/Documents/android-ndk-r10e 注意:上面的路径都要改成自己的路径
我们在Windows平台实现RTSP或者RTMP播放的时候,有个功能是绕不开的,那就是播放窗口全屏。...本文就以大牛直播SDK(官方)的Windows播放器为例,大概讲下大概实现: 全屏播放需要考虑的点不多: 第一:视频播放后,全屏的意义; 第二:全屏后,是否等比例显示,我们的设计原则是,之前等比例显示的
个人博客地址 http://dandanlove.com/ 记得前年开始自己在项目中使用第三方so库的时候就接触NDK编程开发了,只不过哪个时候自己是输出了"Hello Wrold~!"。...NDK NDK是一系列工具的集合。它提供了一系列的工具,帮助开发者快速开发C(或C++)的动态库,并能自动将so和java应用一起打包成apk。这些工具对开发者的帮助是巨大的。...它集成了交叉编译器,并提供了相应的mk文件隔离CPU、平台、ABI等差异,开发人员只需要简单修改mk文件(指出“哪些文件需要编译”、“编译特性要求”等),就可以创建出so。...对于我们Android开发者来说,我们的app需要能在大多数手机上运行。所以要么我们所有arm类型都兼容,要么只兼容armeabi。...android-ndk-env-config.jpg 以上是下边使用Android studio 进行NDK开发的基础,下边我们进入真正的开发环节。
---- 概述 通过本篇教程,您将学习如何使用 Android Studio 轻松启动 Android NDK 项目开发。...开发环境 Android Studio 2.2 或以上的版本 Android NDK 11c+ 或以上的版本 Android SDK 最新版,这个一般会包含在 Android Studio 中。...,我更推荐如下方式通过 Android SDK Manager 自动安装,它会将 NDK 放入 /android-sdk/ndk-bundle/ 下 ?...Android.mk 等构建文件就可以进行开发,我们来将其添加到我们的项目中。...你学会用 NDK 开发了✧。٩(㉨)و✧*。
领取专属 10元无门槛券
手把手带您无忧上云