前期准备

1:app/src/main下建立JniLibs文件包 复制大牛工程的so包以及jar包 jar包右键导入项目出现’>’

2:java下建立com.daniulive.smartpublisher文件包复制项目中的SmartPublisherJniV2.java

3:非正式需要把app的名字改成SmrtPublisherSDKDemo

public class VideoDataService extends Service {private SmartPublisherJniV2 publisherJniV2;private long publisherHandle = 0;private long before;//第一次开启服务记录的时间//加载包static {System.loadLibrary("SmartPublisher");}@Overridepublic IBinder onBind(Intent intent) {// TODO: Return the communication channel to the service.throw new UnsupportedOperationException("Not yet implemented");}@Overridepublic void onCreate() {super.onCreate();try {before=System.currentTimeMillis();publisherJniV2=new SmartPublisherJniV2();//audio_opt是否推送音频 video_opt是否推送视频 width height视频高宽publisherHandle=publisherJniV2.SmartPublisherOpen(getActivity(),0,2,480,360);VideoFeeder.VideoFeed videoFeed = VideoFeeder.getInstance().provideTranscodedVideoFeed();videoFeed.addVideoDataListener(new VideoFeeder.VideoDataListener() {@Overridepublic void onReceive(byte[] bytes, int i) {
//                    NativeHelper.getInstance().parse(bytes, i);//当前时间减去第一次时间拿到时间戳long time = System.currentTimeMillis() - before;
//                        Log.d("djdjdj", bytes[0] + "**"+bytes[1]+ "**"+bytes[2]+ "**"+bytes[3]+ "**"+bytes[4]+ "**"+bytes[5]+ "**"+bytes[6]+ "**"+bytes[7]+ "**"+bytes[8]+ "**"+bytes[9]+ "**"+bytes[10]+ "**"+bytes[11]+ "**"+bytes[12]+ "**"+bytes[13]+ "**"+bytes[14]+ "**"+bytes[15]+ "**"+bytes[16]+ "**"+bytes[17]+ "**"+bytes[18]);//H.264对应1||编码后的video数据||size data length||is_key_frame 是否I帧 if with key frame, please set 1, otherwise, set 0//   * timestamp video timestamp//   * @param pts Presentation Time Stamp, 显示时间戳//  * @return {0} if successfulpublisherJniV2.SmartPublisherPostVideoEncodedData(publisherHandle, 1, byte2Byffer(bytes), i, bytes[4] == 39 ? 1 : 0, time, time);}});//推流地址publisherJniV2.SmartPublisherSetURL(publisherHandle,"rtmp://stream.jizhenkeji.com/live/test");//开始推流publisherJniV2.SmartPublisherStartPublisher(publisherHandle);}catch (Exception e){e.printStackTrace();stopSelf();}}@Overridepublic int onStartCommand(Intent intent, int flags, int startId) {return super.onStartCommand(intent, flags, startId);}@Overridepublic void onDestroy() {super.onDestroy();}/*** byte 数组转byteBuffer* @param byteArray*/public static ByteBuffer byte2Byffer(byte[] byteArray) {//初始化一个和byte长度一样的bufferByteBuffer buffer=ByteBuffer.allocateDirect(byteArray.length);// 数组放到buffer中buffer.put(byteArray);//重置 limit 和postion 值 否则 buffer 读取数据不对buffer.flip();return buffer;}//10进制byte[]转16进制public static final String bytesToHexString(byte[] buffer) {StringBuffer sb = new StringBuffer(buffer.length);String temp;for (int i = 0; i < buffer.length; ++i) {temp = Integer.toHexString(0xff & buffer[i]);if (temp.length() < 2)sb.append(0);sb.append(temp);}return sb.toString();}//是否包含SPSPPSprivate boolean IsSPSPPS(@NonNull byte[] buffer) {if (buffer.length < 5) {return false;}//00 00 00 01if (buffer[0] == 0&& buffer[1] == 0&& buffer[2] == 0&& buffer[3] == 1) {int nalType = buffer[4] & 0x1f;if (nalType == 0x07 || nalType == 0x08) {return true;}}//00 00 01if (buffer[0] == 0&& buffer[1] == 0&& buffer[2] == 1) {int nalType = buffer[3] & 0x1f;if (nalType == 0x07 || nalType == 0x08) {return true;}}return false;}//是否是I帧private boolean IsKeyFrame(@NonNull byte[] buffer) {if (buffer.length < 5) {return false;}//00 00 00 01if (buffer[0] == 0&& buffer[1] == 0&& buffer[2] == 0&& buffer[3] == 1) {int nalType = buffer[4] & 0x1f;if (nalType == 0x05) {return true;}}//00 00 01if (buffer[0] == 0&& buffer[1] == 0&& buffer[2] == 1) {int nalType = buffer[3] & 0x1f;if (nalType == 0x05) {return true;}}return false;}}

Android大疆无人机对接大牛直播sdk视频H.264码推流相关推荐

  1. Android大疆无人机对接声网sdk

    项目下gradle导入 implementation 'io.agora.rtc:agora-full-beta:4.0.0-beta.1' 版本根据自身修改 public class AgoraUt ...

  2. android大疆无人机直播推流VLC

    官方给了直播的方法:startStream,最近公司需求是大疆无人机做直播推流给后台服务器,然后在后台可以看到无人机拍摄的内容,实时监控无人机的状态 因为这个最新的大疆官方给出了方法,所以做起来是非常 ...

  3. Android 大疆无人机Mobile Sdk开发,如何输出Log日志

    职场小白迷上优美句子: <断章> -- 卞之琳 你在桥上看风景, 看风景的人在楼上看你. 明月装饰了你的窗子, 你装饰了别人的梦. 通过大疆 "桥" 连接,查看日志 精 ...

  4. 大疆无人机M100的onboard sdk开发-激活(QT平台)

    1.这篇主要围绕osdk的M100激活进行展开,M100要进行OSDK开发,第一步就是现将设备激活,才能通过SDK对它进行控制: 一.硬件条件: 1.通过usb接口连接dji assistant,视频 ...

  5. 记录:无人机回传管理软件Springboot对接大疆无人机实现视频音频实时回传以及录制视频回放功能

    项目场景: 在前段时间,我们在对接机关单位的业务对接中涉及到了大疆无人机,型号是御Air2的,然后操作无人机我们使用的大疆平台的DJIGO来操作的,不过好像目前大疆的无人机都是用这个app操作,自带触 ...

  6. 大疆无人机DJI Mobile SDK入门(一)

    目录: 大疆无人机DJI Mobile SDK(Android)入门(一) 大道无疆,创新无限! 将您的想法变为现实! 未来,无所不能! 小Z码农有幸能接触到这么高逼格的玩具.就将这段爱恨往事作为笔记 ...

  7. 大疆无人机安卓Mobile Sdk开发

    大疆无人机安卓Mobile Sdk开发 地址 开发步骤 使用接口 地址 大疆sdk文档地址 大疆sdk github 开发步骤 步骤: 进行开发前首先需要注册大疆开发者账号,然后注册一个基于mobil ...

  8. 基于大疆无人机SDK二次开发

    基于大疆无人机SDK二次开发 近期公司项目需求,需要基于大疆无人机SDK开发一款手机 APP,用于配合后台实现对无人机的管理.当然大疆本身也给我们提供了管理平台-----大疆司空.通过大疆的官方 AP ...

  9. Android调试DJI大疆无人机方法

    0 不方便调试 大疆无人机官网是提供了用户自定义开发的Dji SDK的,这样有助于用户自己开发一些个性化的程序,这一点非常好. 我在创建自己程序的过程中,发现调试很是不方便. 通常,我们的调试信息主要 ...

最新文章

  1. 如何确定最初克隆本地Git存储库的URL?
  2. python-mysql
  3. 微软推出Python免费在线教程视频
  4. 谷歌Chrome浏览器发布10年成霸主
  5. F - 数据结构实验之链表四:有序链表的归并
  6. PHP字符串中的变量解析(+教你如何在PHP字符串中加入变量)
  7. 【干货】2021短视频营销攻略:短视频内容策略下的5i沟通法则.pdf(附下载链接)...
  8. DAO基本登录(1)
  9. Debian 10截图小工具 flameshot
  10. 使用 NVIDIA Kaolin Wisp 重建3D场景
  11. ps、ai超强辅助类插件,神器一样的存在
  12. 开发人员的windows工具箱
  13. 银保监会计算机类专业知识,国家公务员局2019中国银保监会国考内容:计算机类专业知识...
  14. 按键精灵找图并点击图片中间
  15. 随笔感悟:Mysql悲观锁和乐观锁
  16. 2020年蓝桥杯省赛题目——既约分数
  17. 乖离率背离公式_股市偏离率怎么计算 公式是怎么样的?-BIAS-技术指标-股票入门基础知识学习网...
  18. 【3ds MAX插件】近期发布的几个小插件,总有一款适合你
  19. 开发者和你聊:角色的定位
  20. Python 实现验证身份证号真假以及查询归属地、出生年月等信息

热门文章

  1. dreamweaver作业静态HTML网页设计——摩尔庄园7页HTML+CSS+JS DW大学生网页作业制作设计 Dreamweaver简单网页
  2. 华为OD机试 - 最优高铁城市修建方案(Java JS Python)
  3. spark streaming 自定义接收数据源Receiver测试
  4. clickhouse建表,字段类型设置为可为null类型
  5. 扫描仪 php,紫光扫描仪
  6. 在java中String a=a,b=a;a==b为什么返回true?
  7. 养成哪些上网习惯可以避免泄露重要的个人隐私?
  8. 《拆掉思维里的墙》 古典 (初读此书,相见恨晚!)
  9. excel查找定位删除0值_查找和删除Excel行的快速方法
  10. Excel 之查找特定字符所在行列的简易方法