这里主要分析一下,live555中关于RTP打包发送的部分.在处理完PLAY命令之后,就开始发送RTP数据包了(其实在发送PLAY命令的response包之前,就会发送一个RTP包,这里传输就已经开始了) 先介绍下主要的流程:RTP包的发送是从MediaSink::startPlaying函数调用开始的,在StartPlaying函数的最后会调用函数continuePlaying. continuePlaying函数是定义在MediaSink类中的纯虚函数,需要到特定媒体的sink子类中实现,对…
两个web项目之间的依赖引用方式.Web项目之间,通过war包的方式进行引用的.例如,有两个项目,puzzle-web和puzzle-web-demo,两个均是web项目,puzzle-web-demo依赖于puzzle-web,具体配置如下下载地址 . (1)puzzle-web项目pom.xml中对打包的相关配置 A.编译插件的版本要用2.4,否则,可以会出现打的war包中,出现带有日期的jar包. B.archiveClasses项配置为false,该配置用于控制:puzzle-web-d…
七 RTP打包与发送 rtp传送开始于函数:MediaSink::startPlaying().想想也有道理,应是sink跟source要数据,所以从sink上调用startplaying(嘿嘿,相当于directshow的拉模式). 看一下这个函数: Boolean MediaSink::startPlaying(MediaSource& source, afterPlayingFunc* afterFunc, void* afterClientData) { //参数afterFunc是在播…
概述 近期在和同事调试G729的编解码库时碰到一个语音质量的问题,问题产生的原因和RTP包中的时间戳设置有关,特此记录下来. 问题现象,1001和1002账号注册在fs,媒体设置为G729并通过fs中转,1001终端使用eyebean,1002终端使用自己开发的sip终端,从1001-1002的语音正常,从1002-1001的语音卡顿异常. 环境 centos:CentOS  release 7.0 (Final)或以上版本 freeswitch:v1.8.7 GCC:4.8.5 问题分析 fr…
NTP------网络时间协议 PTP------精确时间协议 PTS,DTS的关系: http://www.cnblogs.com/qingquan/archive/2011/07/27/2118967.html 都知道RTSP协议中,真正的数据传输是RTP协议来传输的,每个RTP包都有一个timestamp,(相对时间戳 relative timestamp)这个时间戳是需要经过换算的,我需要把它换算成相应的时间打印到播放器显示的每一帧上. 不过据http://stackoverflow.c…
<buizld> <plugins> <plugin> <artifactId>maven-assembly-plugin</artifactId> <configuration> <archive> <manifest> <mainClass>com.allen.capturewebdata.Main</mainClass> </manifest> </archive…
1.  预备 视频: 由一副副连续的图像构成,由于数据量比较大,因此为了节省带宽以及存储,就需要进行必要的压缩与解压缩,也就是编解码. h264裸码流: 对一个图像或者一个视频序列进行压缩,即产生码流,采用H264编码后形成的码流就是h264裸码流. 码流传输: 发送端将H264裸码流打包后进行网络传输,接收端接收后进行组包还原裸码流,然后可以再进行存储,转发,或者播放等等相关的处理. 存储转发可以直接使用裸码流,播放则需要进行解码和显示处理 解码显示:        一般会解成YUV数据,然后…
本文主要介绍WebRTC中的RTP/RTCP协议,作者:weizhenwei ,文章最早发表在编风网,微信ID:befoio 支持原创,转载必须注明出处,欢迎关注我的微信公众号blacker(微信ID:blackerteam 或 webrtcorgcn). 一 前言 RTP/RTCP协议是流媒体通信的基石.RTP协议定义流媒体数据在互联网上传输的数据包格式,而RTCP协议则负责可靠传输.流量控制和拥塞控制等服务质量保证.在WebRTC项目中,RTP/RTCP模块作为传输模块的一部分,负责对发送端…
H.264 视频 RTP 负载格式 1. 网络抽象层单元类型 (NALU) NALU 头由一个字节组成, 它的语法如下: +---------------+      |0|1|2|3|4|5|6|7|      +-+-+-+-+-+-+-+-+      |F|NRI|  Type   |      +---------------+ F: 1 个比特.  forbidden_zero_bit. 在 H.264 规范中规定了这一位必须为 0. NRI: 2 个比特.  nal_ref_idc…
最近在看RTP发送H264数据的文章,感觉很乱,没有比较清晰易懂的教程,自己整理了一下各种资料,备忘! --------Part A  ---- 先说说H264数据,H264在网络传输的是NALU(NAL单元),NALU的结构是:NAL头+RBSP,实际传输中的数据流如图所示: NALU头用来标识后面的RBSP是什么类型的数据,他是否会被其他帧参考以及网络传输是否有错误. NALU头结构为1个字节,既 forbidden_bit(1bit) + nal_reference_bit(2bit) +…
转载一篇帮助我了解h264 rtp的文档,地址http://www.cppblog.com/czanyou/archive/2009/12/25/67940.html 当packetization-mode的值为0时或不存在时,必须使用单一NALU单元模式. 当packetization-mode的值为1时必须使用非交错(non-interleaved)封包模式. 当packetization-mode的值为2时必须使用交错(interleaved)封包模式. 每个打包方式允许的NAL单元类型总…
live555中数据的发送最后是要使用RTP协议发送的,下面介绍一下RTP包格式. RTP packet RTP是基于UDP协议的,RTP服务器会通过UDP协议,通常每次会发送一个RTP packet.客户端通过解析RTP packet,读取其中的数据然后进行播放了. RTP packet的结构如下: RTP Header:RTP 包的头部 contributing sources:个数为0-n个,所以可以为空.具体定义参考rfc3550 RTP payload:即RTP要传输的数据 RTP H…
本文主要介绍WebRTC中丢包重传NACK的实现,作者:weizhenwei ,文章最早发表在编风网,微信ID:befoio 支持原创,转载必须注明出处,欢迎关注我的微信公众号blacker(微信ID:blackerteam 或 webrtcorgcn). 在WebRTC中,前向纠错(FEC)和丢包重传(NACK)是抵抗网络错误的重要手段.FEC在发送端将数据包添加冗余纠错码,纠错码连同数据包一起发送到接收端:接收端根据纠错码对数据进行检查和纠正.RFC5109[1]定义FEC数据包的格式.NA…
[原创] RFC3984是H.264的baseline码流在RTP方式下传输的规范,这里只讨论FU-A分包方式,以及从RTP包里面得到H.264数据和AAC数据的方法. 1.单个NAL包单元 12字节的RTP头后面的就是音视频数据,比较简单.一个封装单个NAL单元包到RTP的NAL单元流的RTP序号必须符合NAL单元的解码顺序. 2.FU-A的分片格式数据比较大的H264视频包,被RTP分片发送.12字节的RTP头后面跟随的就是FU-A分片:FU indicator有以下格式:      +--…
最近在做基于SIP的VoIP通信研究,使用Wireshark软件可以对网络流量进行抓包. VoIP使用RTP协议对语音数据进行传输,语音载荷都封装在RTP包里面.要对传输中的语音进行截获和还原,需要通过Wireshark对RTP包进行分析和解码.该过程如下: 1.打开截获的pcapng文件,点击Telephony-->RTP-->Show All Streams. 2.根据发送地址和目的地址,选择要分析的语音流,点击图中的Analyze进行分析处理.Packets数太少可能会播放不出声音. 3…
#黏包:发送端发送数据,接收端不知道应如何去接收造成的一种数据混乱现象. #关于分包和黏包: #黏包:发送端发送两个字符串"hello"和"word",接收方却一次性接收到"helloword" #分包:发送端发送字符串"helloword",接收方却受到了两个字符串"hello"和"word" #虽然socket环境有这些问题,但是TCP传输数据能保证几点: #顺序不变,发送端发送he…
关于war包 jar包 ear包 及打包方法 war包:是做好一个web应用后,通常是网站打成包部署到容器中 jar包:通常是开发的时候要引用的通用类,打成包便于存放管理. ear包:企业级应用 通常是EJB打成ear包 各种包的打法: 转: 兄弟,对java着迷吗,或者是为了自己的生计,不论怎样都欢迎你进入精彩java世界,welcome!可能你刚刚对每个人说:Hello World!也或者……ok!这已经足够了.那就让我们开始吧,开始这个魔幻世界的旅程: jar文件听说过吗,没有?或者陌生!…
java jar包解析:打包文件,引入文件 cmd下: jar命令:package包打包 javac命令:普通类文件打包 Hello.java: package org.lxh.demo; public class Hello{ public void print() { System.out.println("hello world"); } } 1例如: 生成class可以执行文件: javac -d . Hello.java #前提:先手动生成org目录 #系统会自动生成 org…
在使用maven进行jar包管理时,通过我们都是通过maven去下载一些jar包,但有些jar在maven上没有,所以就就可能在本地直接手动加入一些需要用到的外部jar包.但如果我们用maven package打包就会发现,本地的那些jar是不能被maven识别的,所以就需要解决Maven关于本地jar包的打包处理的问题. 还好maven中有提供这样的配置,在pom文件中通过配置附加指定本地jar的路径即可完成maven打包功能. <build> <plugins> <plu…
ramdisk.img system.img userdata.img介绍及解包.打包方法 Android 源码编译后,在out/target/product/generic下生成ramdisk.img.system.img.userdata.img三个镜像文件: 镜像 目录树 内容 目录映射 zImage.img 无 linux内核   ramdisk.img root 一个分区影像文件,它会在kernel 启动的时候,以只读的方式被 mount , 这个文件中只是包含了 /init以及一些配…
本文组织有点乱,先说结论吧: 1 在 project.json 文件中声明包引用. 而不是像以前那样可以直接引用 dll. 2 使用 dotnet restore 命令后,nuget 会把声明的依赖项下载 到本机全局package缓存(如果没有的话),而不是 以前那样在解决方案根目录下创建一个package目录. 这样的好处是一台机器共享同一个 package 库,免得每次都重新下载. 3 在发布时,这些引用的dll会被放到publish目录中,进入运行环境. 4 如果要引用自己的私有类库,也需…
Maven配置jar(war)包自动打包上传Maven服务器的配置 创建jar(war)包工程 创建一个maven工程 在工程中穿件一个测试类 配置pom.xml <distributionManagement> <repository> <id>nexus-releases</id> <url>http://127.0.0.1:8081/nexus/content/repositories/releases/</url> </…
使用apktool解包和打包apk 下载apktool工具 解包 apktool d xxx.apk -f 植入代码 使用apktool解包要植入代码的apk(下面称为A), 使用apktool解包包括待植入代码的apk(下面称为B). -将B的AndroidManifest.xml中对应的权限和各组件声明信息拷贝到A中. -把B的对应的smali文件拷贝到A中. -把B的对应的布局文件拷贝到A中. -把植入布局中对应的id从B的values/ids.xml拷贝到A中. -把植入布局中对应的id…
问题产生及解决 对于刚接手spring_boot的人,可能会感觉到很茫然无措,看到书上写的spring_boot是直接打包成jar包,使用java -jar *运行.然而却不知道该怎么打包.而创建spring_boot以后在pom文件中会安装spring_boot打包插件,此时我们会看到如下几个选项: pom文件内容如下: <?xml version="1.0" encoding="UTF-8"?> <project xmlns="htt…
本文为翻译文章,原文:Packages, Metapackages and Frameworks .NET Core是一个由NuGet包组成的平台.一些产品受益于细粒度包的定义,也有一些受益于粗粒度包的定义.为了适应这种二重性,.NET Core平台被分为一组细粒度的包(package)以及一些被称为元包(metapackage)的较粗粒度的包. 每一个.NET Core包支持多个.NET运行时,它们代表着不同的框架.这些框架既包括传统的.NET Framework(如net4.6),也包含基于…
前面的话 Node组织了自身的核心模块,也使得第三方文件模块可以有序地编写和使用.但是在第三方模块中,模块与模块之间仍然是散列在各地的,相互之间不能直接引用.而在模块之外,包和NPM则是将模块联系起来的一种机制.在介绍NPM之前,不得不提起CommonJS的包规范.JavaScript不似Java或者其他语言那样,具有模块和包结构.Node对模块规范的实现,一定程度上解决了变量依赖.依赖关系等代码组织性问题.包的出现,则是在模块的基础上进一步组织JavaScript代码.CommonJS的包规范…
一.总结 1.引入包的概念的原因和包的作用比如有多个人开发一个大型程序,A定义了一个Math.java类,B也定义了一个Math.java类,它们放在不同目录,使用的时候也是用目录来区分,包实际上就是一个文件夹(可以含有多级子目录)路径名.包的作用就是用来区分同名的类(冲突问题). 2.使用步骤package:Java源文件中:package 包名.子包名:eg: package a.b.c.d;编译命令:javac -d <dir> <file.java> 表示在<dir&…
Java中带包(创建及引用)的类的编译与调试 java源程序的编译大家都知道,也就是cmd中到源文件所在目录下javac **.java即可,当程序中有包声明还能简简单单的直接javac **.java吗?答案当然是no,下面举个简单的例子证明一下直接javac **.java会怎么样. 如下:F:\javaweb2班\20160531目录下有A.java文件,注意源文件中有包声明 package mypack; public class A { String name; int age; pu…
首先声明:TCP分片应该称为TCP分段 TCP/IP详解--TCP的分段和IP的分片 分组可以发生在运输层和网络层,运输层中的TCP会分段,网络层中的IP会分片.IP层的分片更多的是为运输层的UDP服务的,由于TCP自己会避免IP的分片,所以使用TCP传输在IP层都不会发生分片的现象. 我们在学习TCP/IP协议时都知道,TCP报文段如果很长的话,会在发送时发生分段,在接受时进行重组,  同样IP数据报在长度超过一定值时也会发生分片,在接收端再将分片重组. 我们先来看两个与TCP报文段分段和IP…
之前有一片文章,是打包单个java文件的.这次想要将http://www.cnblogs.com/sxdcgaq8080/p/8398780.html  打包成jar包,发现这个java文件中引用了多个第三方的jar,想要单独进行编译都无法通过,更不要说打包成jar了. 所以就营运而生了这个需求,怎么打包单个java文件或多个java文件,将文件中引用的依赖的jar包共同打包成一个jar供别的项目引用. 本次本篇使用的工具是Maven中的 maven-assembly-plugin 插件. ==…