自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(30)
  • 收藏
  • 关注

原创 在form中的button点击同时触发onSubmit和onClick的坑

button的默认type是submit类型的,所以,不设置type的情况下,点击,会同时走onSubmit方法,和自身设置的点击事件 onClick方法。所以在表单中,button不做提交按钮使用的时候,需要设置type = 'button'.

2023-06-06 15:21:13 447

原创 node、npm 、yo 配置相关问题

因为Node版本太高,回退到 15.14.0 左右的一个稳定版本即可。

2023-06-02 01:09:08 303

原创 CMakeLists的基础使用

cmake在Android Studio中的基础使用架构概述

2022-11-25 23:23:29 1075

原创 项目的自动化构建和Gradle

1、为什么要自动化构建2、自动化构建可以干什么3、有哪些工具4、android 上使用的gradle5、gradle 详解============gradle脚本中也可以写java

2022-01-08 15:41:49 1649 1

原创 LiveDate、ViewModel、Activity之间的关系

1、主要依托 ComponentActivity 来讲它们之间的关系2、Activity实现的mvvm相关接口 LifecycleOwner, ViewModelStoreOwner, HasDefaultViewModelProviderFactory, SavedStateRegistryOwner,3LiveData和Activity的关系主要还是通过Actvity获取到Activiry的Lifecycle,并将

2021-11-12 10:14:45 1157

原创 二分查找求右区间

二分查找求右区间,也就是求大于等于 target的区间的索引。在很多二分查找相关题目中,会涉及到。 public int binarrySearch(int target,int[] arr){ int left=0; int right=arr.length-1; while(left<right){ int mid = left+(right-left)/2;

2021-11-08 09:45:09 103

原创 LiveData结合协程使用-LiveDataScope文档注释

/* * Copyright 2019 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.

2021-09-23 17:53:41 715

原创 105.从前序与中序遍历序列构造二叉树

/** * 105. 从前序与中序遍历序列构造二叉树 * 给定一棵树的前序遍历 preorder 与中序遍历 inorder。请构造二叉树并返回其根节点。 * * * * 示例 1: * * * Input: preorder = [3,9,20,15,7], inorder = [9,3,15,20,7] * Output: [3,9,20,null,null,15,7] * 示例 2: ..

2021-09-23 09:02:01 71

原创 彻底弄明白什么是算法的时间复杂度

一、概述衡量一个算法好坏的条件有两个:时间复杂度和空间复杂度。时间复杂度,代表了算法执行的快慢。空间复杂度,代表了一个算法需要开辟的内存空间的大小。二、时间复杂度时间复杂度,并不代表具体的执行时间,而是代表算法执行时间大小一种衡量方式。==影响算法快慢的条件除了算法的时间复杂度,还跟算法的规模有关。算法规模即,输入数据的多少。...

2021-09-06 09:43:50 1072

原创 while循环和for循环的选择

1、应用场景for循环更偏重于从头到尾的范围的便利,如遍历一个数组。while循环,更偏重于满足于某个条件下的数据的处理。2、二者又是可以完全互换的for转while int [] arrray={1,2,3}; int i=0; // for (i = 0; i < arrray.length-1; i++) { //处理数据 //} //for 转while

2021-08-18 09:03:59 525

原创 kotlin协程相关类之间的关系

一、相关类图弄清协程一些类和接口的关系,有助于大家整体对协程的理解二、相关类概述协程作用域 协程上下文 协程的分发器 协程的构建器 Job 协程和线程的关系三、相关类之间的关系通过一个简单的示例简述上面相关类的关系一个协程作用域,以CoroutineSope为例,包含了一个协程的上下文CoroutineContext,协程fen...

2021-08-04 01:24:41 283

原创 二分查找取中间值的计算方式

1、二分查找通常写法(leetcode 704)给定一个n个元素有序的(升序)整型数组nums 和一个目标值target ,写一个函数搜索nums中的 target,如果目标值存在返回下标,否则返回 -1。public int question1(int[] nums, int target){ int left=0; int right=nums.length-1; while (left<=right) { int index=l...

2021-08-03 09:36:46 2028

原创 AVFrame的使用方式和一些关键参数详解

1、内存的申请av_frame_alloc2、内存的重复使用3、内存的释放av_frame_unref

2021-06-30 00:10:11 3748

原创 日常代码提交流程

一、新的任务开发开始后,大家各自建立自己的分支 分支名称示例:feature-136-zgj 136:版本号最后一个小数点后面的数字 zgj:自己名字全拼的首字母 二、开发完一个最小的功能粒度,提交mergerequest 小的功能粒度:一小块完整的UI或者加上接口的一小块完整的功能 提交mr前,先将develop分支的代码merge到自己的分支,如果有冲突,解决下冲突,再提交mr 直接提交到develop分支,并指定好代码审查人 代码审查.

2021-06-05 10:26:30 1312

原创 gitLab工作流

一、分支功能和名称定义1、master分支生产分支测试无误,发版后,将生产分支,即develop分支,合并到master分支2、develop分支(生产环境分支)供测试使用,代表当前最新的可以测试的代码分支,feature分支代码被review后,都merge到develop分支,随时可以供测试使用。3、feature分支组内所有人日常开发和提交代码使用,提交完代码后,创建mergerequest请求,指定代码受让人和审阅人,代码被审查人审阅且没有任何问题后,会被受让人合并到dev.

2021-06-05 09:19:30 3823 1

原创 程序员的职业规划总结反思

1、程序员的职业规划2、程序员的日常3、在管理路上的程序员

2021-05-30 14:37:21 614 4

转载 H264格式详解

H264基础简介前言H264是属于视频的编码层的标准格式,视频编码显然是为了压缩大小。我们看下一个完全没压缩的视频数据大小。假设视频是高清(1280 * 720),每秒30帧,也就是每秒的数据1280 * 720 *30 / 8(字节) /1024(KB)/1024(MB) = 3.11MB那么90分钟的电影就要16.7GB,这个数据量显然在当前网络下是不现实的。视频压缩的原理就是去除视频冗余部分,下面列举下1,时间冗余时间冗余是序列图像(电视图像、动画)和语音数据中所经常包

2021-03-09 15:30:24 11443

原创 码率 、分辨率、帧率的关系以及对视频质量的影响

1、fps(frames per second)帧率视频播放的时候,每秒钟在显示设备上刷新的帧数,一帧可以理解为一张图片。2、分辨率是指屏幕上有多少个像素点,720p的视频,屏幕上像素点的个数(1080x720).3、码率的计算公式(这里单指视频的码率)视频播放的时候,每秒钟显示设备需要的数据的量的大小(也可以理解为每秒钟播放器解码输出的数据的大小)。码率= 帧率x每帧像素点的个数x每个像素点的大小(单位byte)4、位深上述3中像素点的大小是固定不变的吗?如果不是又是什

2021-01-25 22:11:03 10138 3

转载 WebRTC RTP Header Extension 分析

0x00 WebRTC RTP Header Extension 格式说明在 RTP协议 rfc3550 section 3.5.1 中定义 RTP header extension 结构如下图所示: 0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-

2021-01-08 18:25:09 749

转载 WebRTC SDP详解

TL;NR 更详细的 WebRTC SDP 解析请参考https://tools.ietf.org/html/draft-ietf-rtcweb-sdp-120x00 前言SDP (Session Description Protocol) 格式是一种很有历史的格式,在 20 世纪的会议系统中通常都是使用 SDP 格式的文本来交互多媒体通信双方的连接属性信息和媒体属性信息,在今天 JSON 这种对象化和可拓展的格式面前确实显得不够通用,尤其是在进行 RPC 通信时通常要将 SDP 信息解析成模..

2021-01-08 18:22:36 1206 1

原创 WebRTC android 端支持H264编解码

一、WebRTC源码中默认使用的H264编解码的库1、WebRTC源码的video_coding模块中,包含了H264编解码相关的类打开画红线的两个头文件,分别可以看到解码类中导入了ffmpeg的avcodec.h,extern "C" {#include "third_party/ffmpeg/libavcodec/avcodec.h"} // extern "C"编码类中导入了openh264库的相关文件,来进行编码#include "third_party/openh

2020-12-16 09:40:21 2378 11

原创 WebRTC基础知识体系构建-隐私设置

待发布,仅提供之前文章的连接跳转,谢谢!。

2020-12-07 09:29:26 118

原创 WebRTC基础知识体系构建-NAT

待发布,仅提供之前文章的连接跳转,谢谢!。

2020-12-07 09:28:11 126

原创 WebRTC基础知识体系构建-协议

待发布,仅提供之前文章的连接跳转,谢谢!。

2020-12-07 09:18:17 93

原创 WebRTC基础知识体系构建-建立连接

建立WebRTC绘话的四个步骤1、获取本地媒体(本地媒体,请参考。。。。WebRTC基础知识体系构建-媒体定义)getUserMedia获取单个本地MediaStream,获取到一个或者多个MediaStream。2、建立WebRTC端和端之间的连接RTCPeerConnection 是用来在两个对等端(对等端:两个通过服务器,在web上直接进行通信的端)建立连接的的的类。创建RTCPeerConnection的时候,需要添加一个options配置项目,具体如何添加,请参照不同客户端的相关api

2020-12-07 08:56:59 259

原创 WebRTC基础知识体系构建-媒体定义

WebRTC既定义了如何传输媒体,又定义了媒体该如何表示。一、轨道1、定义:MedaiStreamTrack ,是WebRTC中媒体的基本单元。2、源:代表某录制设备或录制内容能返回的单一类型媒体,如 手机摄像头可录制的视频,可以作为一个源,手机Mic录制的音频也可以作为一个源。一段录好的mp4视频,其中的视频可以作为一个源,音频也可以作为一个源。每个WebRTC轨道都有一个源与之关联,通过WebRTC不能直接访问或控制源,对源的一切操作,都要通过轨道。不同的MedaiStrea

2020-12-04 11:17:30 227

原创 WebRTC基础知识体系构建-穿透

一、什么是穿透两个WebRTC之间是采用端对端的流来进行数据交互的,也就是两个客户端直接进行连接,交互。但是,两个客户端并不知道对方是谁?对方在哪儿?因为两个客户端之间还隔着一些屏障,这些屏障就是NAT(关于NAT,请参考 。。。。)和防火墙。穿过这些屏障,并使用一种叫ICE的协议,使两端找到对方,并建立连接,就叫穿透。二、穿透需要的条件1、尝试建立连接的两端必须同时发送“穿透”数据包。所以必须都知道要建立的会话,以及对方的地址。穿透数据包只是普通的IP数据包,发送此包的目的是确定是否可

2020-12-04 10:45:04 752

原创 WebRTC基础知识体系构建-信令

一、为什么要使用信令服务器信令在WebRTC的端到端的交互中,是必不可少的。没有信令服务器,一个完整的WebRTC端到端连接,交换完数据的过程是无法完成的。主要作用表现在以下几方面:1、协商媒体功能和设置(什么是媒体参考。。。。。。。。WebRTC基础知识体系构建-媒体定义)在两个端到端的WebRTC连接中,交换SDP(Session Description Protocal)会话描述协议中包含的信息。SDP中包括音视频类型,编解码器,编解码的各项参数,以及带宽等信息。关于SDP的交换过程,请参

2020-12-03 18:15:15 247

原创 WebRTC基础知识体系构建-开篇

WebRTC基础知识体系构建 系列文章,是本人基于《WebRTC权威指南》,加上个人的理解整理出来的,如果遇到错误,请大家不吝指正。读完本系列文章,会在大脑中建立一个完整的WebRTC基础知识体系架构。一、定义WebRTC (Web Real-Time Communication Web实时通信技术)二、技术目标目的,将所有实时通信功能引入到浏览器中。不用在浏览器中安装任何软件和插件,即可使用该功能。下图为浏览器的的(应用程序、浏览器的交互模式)。1、传统的即时通讯模块采用了标准ap

2020-12-03 18:05:31 147

原创 FFmpeg解码,并将yuv和pcm数据分成单个文件保存到本地

一、本文整体思路开发基本流程,yuv和pcm的正确性验证,以及遇到的问题和解决方案。全文依托的媒体文件是mp4格式,视频数据的格式是yuv420p,其它格式的视频数据,请自行根据对应的格式进行数据的适配。二、视频解码基本流程1、解封装 :将某种格式的媒体文件(AVI、mov、rmvb、rm、FLV、mp4、3GP等)得到某种编码格式的音频流(H.264、H.265、VP8、VP9等)和视频流(MP3、AAC、WAV、FLAC等)2、解码 :将对某种格式的音频和视频流文件解码成基本数据类型

2020-11-02 14:59:02 866 2

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除