- 博客(47)
- 资源 (11)
- 收藏
- 关注
原创 rtp序号,时间戳的会绕问题
比如一个RTP包,序列号为4890,另一个RTP包序列号为59900,可以说59900一定比4890大,是个更新的RTP包吗?输入当前数字和之前的数字,如果当前数字是更新的数字则返回。结论,当然不是这样,因为在判断序列号的连续性时要考虑回绕问题,不能直接根据数学意义上的大小进行比较。再如,序列号为 65535 的包一定比序列号为 255 的包大,是最新的包吗?该函数用于展开回绕的数字,得到更大类型的真正的数字,其核心逻辑通过调用。序列号为 0 的包一定比序列号为 65535 的包小,是旧的包吗?
2023-07-04 22:24:33
836
原创 rtp时间戳或媒体时间戳
RTP timestamp是用时钟频率(clock rate)计算而来表示时间的。RTP timestamp表示每帧的时间,由于一个帧(如I帧)可能被分成多个RTP包,所以多个相同帧的RTP timestamp相等。(可以通过每帧最后一个RTP的marker标志区别帧,但最可靠的方法是查看相同RTP timestamp包为同一帧。RTP包头的第2个32Bit即为RTP包的时间戳,Time Stamp ,占32位。时间戳反映了RTP分组中的数据的第一个字节的采样时刻。
2023-07-02 21:39:28
2249
2
原创 rtcp-NTP时间戳
网络时间协议NTP(Network Time Protocol)的主要开发者是美国特拉华大学的MILLS David L教授设计实现的,由时间协议、ICMP时间戳消息及IP时间戳选项发展而来。NTP用于将计算机客户或服务器的时间与另一服务器同步,使用层次式时间分布模型。在配置时,NTP可以利用冗余服务器和多条网络路径来获得时间的高准确性和高可靠性。即使客户机在长时间无法与某一时间服务器相联系的情况下,仍可提供高准确度时间。
2023-06-29 17:18:04
855
原创 【owt】WebrtcNode,linkup
b801af2aac214c09ae0100bdc52b2f0f-1 是subscribe的 publicTrackId。7c497d10719d48d192fc355cd8a9d38a-1 是 publish的 publicTrackId。
2023-06-07 21:51:51
555
原创 【owt】WebrtcNode, subscirbe-sdp offer 流程(2)
- 创建MediaStream, MediaStream一方面作为从VideoFramePacketizer接收到媒体数据; - 创建VideoFramePacketizer,MediaStream 把sink 注册到VideoFramePacketizer,这样VideoFramePacketizer(继承了MediaSource)的视频数据会流向到MediaStream。即MediaStream作为视频源,VideoFramePacketizer作为接收者。VideoFramePacketizer
2023-06-05 23:03:03
461
原创 【owt】WebrtcNode, subscribe流程
存放 WrtcConnection,transportId与connection一一对应。的时候,只是创建了空的Map,而Map中存放的。创建WebRtcConnection。
2023-06-04 00:57:16
424
原创 【owt】WebrtcNode, publish-sdp offer 流程(3)
1. 因为erizon::VideoFrameConstructor(继承于VideoFrameSource)作为视频源,从mediaStream把数据接收过来,VideoFrameSource中,然后分别存到owt_base.InternalServer的m_sourceMap(以publicTrackId = transportId + '-' + track.id 为key,addon.VideoFrameSource 为value)(这里什么时候使用???)中和Connections中(这里是子在视
2023-06-02 22:05:51
602
原创 【owt】WebrtcNode, publish-sdp offer 流程(2)
1. 创建MediaStream, MediaStream一方面作为从客户端接收到媒体数据,另外一方面做为视频源; 2. 创建VideoFrameConstruc=tor,VideoFrameConstructor 把sink 注册到MediaStream,这样MediaStream(继承了MediaSource)的视频数据会流向到VideoFrameConstructor。即MediaStream作为视频源,VideoFrameConstructor作为接收者。
2023-06-01 22:39:05
516
原创 【owt】addon.MediaStream,erizo::MediaStream 还有addon.MediaXXX,erizo::MediaXXX
【代码】addon.MediaStream,erizo::MediaStream 还有addon.MediaXXX,erizo::MediaXXX。
2023-05-31 22:00:09
558
原创 WebrtcNode, publish-sdp offer 流程(1)
通知到WebrtcNode(/dist/webrtc_agent/webrtc/index.js)的createWebRTCConnection 中注册的callback, 回调一个对象,通过offer到sdp,进行对应的修改,作为answer的sdp。operationMap 的元素就是WrtcConnection.addTrackOperation中添加的,这里是给finalFormat赋值。的addTrackOperation 小节 有详细说明。详细的看3.3, 3.4 小节。
2023-05-31 01:01:57
500
原创 android的开发注意事项之更好的使用Handler,处理线程
在Android开发中经常会使用到线程,一想到线程,一般都会想到 new Thread(){...}.start();这样的方式。这样如果在一个Activity中多次调用上面的代码,那么将创建多个匿名线程,如果这些线程的没有被销毁,那肯定会影响性能呢。这个时候我么就想到了android提供的一个异步处理线程的类HandlerThread。一般Handler的用法
2013-06-16 10:52:23
4983
原创 进程(一) 1.7 Handler的源码解析
这篇其实是体外的,对于想了解人,可以研究下,或者说助于理解handler吧。。。先说下handler的三个构造函数开始我们的源码解析之旅吧。。。(一)默认的构造函数 /** * Default constructor associates this handler with the queue for the * current thread.
2012-06-18 22:43:54
4228
原创 进程(一) 1.6 Android中异步处理大杀器——Handler,HandlerThread
不知大家是否发现,Handler中有一个构造函数式传入一个消息循环的对象Looper,而在1.2,1.3中说过,如果在一般的子线程中是不能创建handler对象的,因为自身没有带Looper对象,而主线程中是自带有这个对象的,从主线程拿出这个对象的;所以Andriod为了方便,不要开发者自己创建消息循环,所以提供了令外一个类HandlerThread。HandlerThread继承与T
2012-06-17 20:11:47
3035
原创 进程(一) 1.5 进程的生命周期(Process lifecycle)
大家都知道,手机系统中,手机的内存是有限的,那就是说资源是有限的,那么这么多的程序在手机上运行,那不是会消耗很多的资源,最终消耗到没有。。。。这该怎么办,当然android系统当然不允许这样的事情发生,所以系统就需要把一些不重要的进程和线程强制的kill掉,为了能运行更多新的程序和更重要的进程。所以必须给我们的线程排个等级,这样系统就可以按照等级来决定哪个线程该kill掉。当然,一般的,进程优先级
2012-06-14 22:52:23
2566
原创 进程(一) 1.4Android中异步处理大杀器——Handler(3),Looper,Message,MessageQueue
介绍下handler运用中用到的相关类:Looper,Message ,MessageQueue LooperLooper类用来创建消息队列. 每个线程最多只能有一个消息队列,android中UI线程(一般指主线程)默认具有消息队列,但非UI线程在默认情况下是不具备消息队列的(这也很好的说明了,前面文章说的,只有在主线程可以直接创建handler对象,而在别的线程需要有lo
2012-06-12 19:48:18
2013
原创 进程(一) 1.3 Android中异步处理大杀器——Handler(2)
这里介绍下handler中除了sendMessage外还有post的方法发送和处理消息;介绍几个方法:final boolean post(Runnable r)final boolean postAtFrontOfQueue(Runnable r)final boolean postAtTime(Runnable r, Object token, long uptimeMi
2012-06-11 22:37:23
2154
原创 进程(一) 1.2 Android中异步处理大杀器——Handler(1)
Android中处理异步的第一选择和最佳选择,就是AsynTask这个类,因为他使用起来最方便,安全。再介绍另外一个在开发中用的很多的异步大杀器,用于处理异步消息的,处理一些耗时操作,处理后台运行的程序并且要更新ui的情况,他就是Handler。Handler主要接受子线程发送的数据, 并用此数据配合主线程更新UI.。当应用程序操作应用程序的时候,出现一些比较耗时的操作,譬如 从网
2012-06-10 14:48:32
3145
进程(一) 1.2 Android中异步处理大杀器——Handler
Android中处理异步的第一选择和最佳选择,就是AsynTask这个类,因为他使用起来最方便,安全。再介绍另外一个在开发中用的很多的异步大杀器,用于处理异步消息的,处理一些耗时操作,处理后台运行的程序并且要更新ui的情况,他就是Handler。主要接受子线程发送的数据, 并用此数据配合主线程更新UI. 解释: 当应用程序启动时,Android首先会开启一个主线程 (也就是UI
2012-06-10 13:36:02
431
原创 进程(一) 1.1 Android中异步处理大杀器——AsyncTask
进程和线程,打算在后面一节会细说下,这里先简单那的介绍他们在android中是怎么回事。在android,当一个应用启动的时候,linux内核会启动一个进程和一个单线程(就是我们所说的主线程),主线程处理与UI相关的事情,如: 绘图事件,触摸,点击事件等;但是有些时候我们需要做一些操作会阻塞主线程,如:网络下载,文件的读取,写入等,这样造成用户体验不好,容易产生ANR的错误。所以一般对
2012-06-09 00:37:10
2358
原创 windows开发中的字符串问题的大集合
在windows的开发中,我想,很多人都会遇到字符串乱码;字符串拷贝不正确;在已经赋值的字符串,另一个字符串进行拷贝,发现值不对;或者编码方式不正确;宽字符,非宽字符等问题;下面我将统一整理下这下问题,把常用的一些CString,std::string,std::wstring,char,TCHAR,WCHAR的一些相关函数和转换的关系进行整理。先介绍几种在windows开
2012-05-16 22:09:33
1935
原创 Android的数据存储之一------SharedPreferences
下面将介绍下Android的数据存储,Android提供了5种方式存储数据:1.SharedPreferences存储数据; 2.文件存储数据; 3.SQLite数据库存储数据; 4.使用ContentProvider存储数据;5. 网络存储数据;今天我先介绍下最简单的SharedPreferences存储数据;SharedPreferences是Andro
2011-12-18 17:32:10
4907
原创 Handler的相关知识和应用
最近我在网路上查了很多关于handler的知识,但是感觉总是觉得有很多问题??1.为什么要使用handler?( Answer: 1)按计划发送消息或执行某个Runnanble(使用POST方法),类似定时器; 2)从其他线程中发送来的消息放入消息队列中,避免线
2011-12-11 01:17:20
5353
1
原创 Android的四大组件之三--Activity(4)----->Activity的启动方式和相关参数
在前面几节讨论了activity的生命周期,状态的保存,横竖屏切换和全屏显示相关的内容;下面将介绍如下内容:1.如何启动activity;2.如何在关闭activity的时候返回值给前一个activity;3.如何传递值给将要启动的activity;4.activity,Task相关参数的等内容。如何启动activityactivity的显示启动,and
2011-12-10 14:05:16
3707
原创 Android的四大组件之三--Activity(3)----->横竖屏切换不销毁activity,全屏显示
1.横竖屏切换不销毁activity在编写android应用的时候,碰到了这样的一个问题:屏幕由竖屏转换为横屏,此时应用的Activity就会被销毁而重新创建,这个让人比较郁闷。如何才能让这个activity不被销毁呢???方法如下:(1)在Mainifest.xml的Activity元素中加入android:configChanges="orientation|k
2011-12-08 20:15:56
2470
原创 Android的四大组件之三--Activity(2)----->onSaveInstanceState的运用
当横竖屏切换,activity切换到后台,系统内存不足关闭了activity的时候,我们想保留一些数据,这时候怎么办呢 ???下面就围绕这个问题,如何解决这个问题展开讨论。。。。。。。。。。这是官网提供的图,关于状态保存和恢复的在上面的生命周期中简单的提到了一个activity被paused和stopped,而activity的状态仍维持。这是因为当它被paused或stopp
2011-12-04 19:44:34
2420
原创 Android的四大组件之三--Activity(2)-----关于保存activity状态(onSaveInstanceState()和onRestoreInstanceState()的运用)
当横竖屏切换,activity切换到后台,系统内存不足,关闭了activity的时候,我们想保留一些数据,这时候怎么办呢 ???下面就围绕这个问题,如何解决这个问题展开讨论。。。。。。。。。。在上面的生命周期中简单的提到了一个activity被paused和stopped,而activity的状态仍维持。这是因为当它被paused或stopped时,activity对象仍然在内存中
2011-12-04 18:35:58
481
原创 Android的四大组件之三--Activity(1)----->生命周期
前面介绍了Service和Braoadcast Receiver,下面介绍android的开发中用的最多的组件Activity;对于Activity,关键是其生命周期的把握(如下图),其次就是状态的保存和恢复(onSaveInstanceState onRestoreInstanceState),以及Activity之间的跳转和数据传输(intent)。Activity是一个应用程序组件,
2011-12-04 17:26:18
2586
原创 Gesture的的相关知识介绍(触摸屏的Fling、Scroll等手势操作来)
很多时候,利用触摸屏的Fling、Scroll等Gesture(手势)操作来操作会使得应用程序的用户体验大大提升,比如用Scroll手势在 浏览器中滚屏,用Fling在阅读器中翻页等。在Android系统中,手势的识别是通过 GestureDetector.OnGestureListener接口来实现的,不过William翻遍了Android的官方文档也没有找到一个相 关的例子,API Demo中
2011-11-30 22:08:24
5311
原创 Android的gesture的识别和自定义gesture
今天起介绍下和手势和多点触摸相关的知识。。。。。。先上个一道菜,手势的识别。。。。。java.lang.Object ↳ android.view.View ↳ android.view.ViewGroup ↳ android.widget.FrameLayout ↳ android.gesture.GestureOverlayVie
2011-11-30 21:23:39
7944
原创 Android的四大组件之二--BroadcastReceiver(相关内容,开机启动Service)
前面介绍了Service,接着介绍下相对简单的BroadcastReceiver;Base class for code that will receive intents sent by sendBroadcast(). You can either dynamically register an instance of this class with Context.registerRec
2011-11-28 16:41:35
10975
1
Android的四大组建之一--BroadcastReceiver
前面介绍了Service,接着介绍下相对简单的BroadcastReceiver;Base class for code that will receive intents sent by sendBroadcast(). You can either dynamically register an instance of this class with Context.registerRec
2011-11-28 15:07:21
165
原创 Android的四大组件之一--Service(二)
前面介绍了service的生命周期和Local Sevice,下面介绍下Remote Service以及AIDL(Android Interface Definition Language)的相关内容;官方文档特别提醒我们何时使用AIDL是必要的:只有你允许客户端从不同的应用程序为了进程间的通信而去访问你的service,以及想在你的service处理多线程。为什么需要
2011-11-27 08:44:50
3747
原创 Android的四大组件之一--Service(一)
android有四大组件,Activity,Broadcast Receiver,Service,Content Providers;今天我先介绍下Service,Service功能和Activity类似(这个会在后续的文章中详细说明),Service可以说是一个没有试视图的Activity,就是隐藏的activity。下面是官网给出的:A Service is an applicat
2011-11-20 11:36:06
4140
1
原创 View的xml的属性作用大剖析
android:orientation horizontal/vertical 设置布局水平还是垂直,默认是垂直android:checked true/false 标记默认选中,如果是单选则选中最后一个android:layout_gravity center/right/left/bottom/top 位置android:gravity ce
2011-11-14 13:58:19
1831
原创 Android控件开发之四----ListView(4)
下面介绍下baseAdapter这个迭代器的基类,可以任由自己发挥,实现自己的迭代器。。。。继承图如下:public abstract class BaseAdapter extends Object implements ListAdapter SpinnerAdapter java.lang.Object ↳ android.widget.BaseAdapterKnow
2011-11-06 09:42:14
908
原创 Android控件开发之四----ListView(3)
下面介绍下SimpleAdapter的相关知识以下是官方网上对SimpleAdapter的介绍:An easy adapter to map static data to views defined in an XML file. You canspecify the data backing the list as an ArrayList of Maps. Each entry
2011-11-05 21:15:53
875
broadcast功能大集合
2011-11-29
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人