rtcp package send/recv demo

main.c

  1. #include <stdio.h>
  2. #include <rtp.h>
  3. #include <rtcp.h>
  4. #include <netinet/in.h>
  5. #include <netdb.h>
  6. #include <math.h>
  7. #include <event.h>
  8. #include <syn.h>
  9. #include <payload.h>
  10. #include <sample.h>
  11. #include <sys/types.h>
  12. #include <sys/stat.h>
  13. #include <fcntl.h>
  14. #include <stdlib.h>
  15. #include <unistd.h>
  16. #include <arpa/inet.h>
  17. #include <util.h>
  18. #include <frame.h>
  19. #include <sys/ioctl.h>
  20. #include <sys/stropts.h>
  21. #include "main.h"
  22.  
  23. #ifdef LINUX
  24. #include <linux/soundcard.h>
  25. #endif /* LINUX */
  26.  
  27. #define MAX_SOURCES 32
  28.  
  29. int main(int argc, char **argv) {
  30.  
  31. ];
  32. unsigned short *samp16 = (unsigned short *) buf;
  33. bool found;
  34. int audio, port, rv, payloadtype;
  35. , one = ;
  36. ssrc_t ssrc = , sources[MAX_SOURCES];
  37. struct in_addr addr;
  38. struct session *psn;
  39. struct synsession *pssn;
  40. struct timespec time;
  41. struct sampparam parameters;
  42. struct encoding enc;
  43. mediatime_t ts;
  44. struct sampreadparam sreadparam;
  45.  
  46. int leeway;
  47.  
  48. /*
  49. * Check for correct number of arguments.
  50. */
  51. ) {
  52. fprintf(stderr, ]);
  53. exit();
  54. }
  55.  
  56. addr.s_addr = inet_addr(argv[]);
  57. port = atoi(argv[]);
  58.  
  59. printf("Session: %s/%d\n", inet_ntoa(addr), port);
  60.  
  61. /*
  62. * Open a synchronization layer session.
  63. * Use 2k buffers for RTP packets, 64 buffers in pool.
  64. */
  65. pssn = synopen(addr, port, , );
  66. if (pssn == NULL) {
  67. fprintf(stderr, "synopen() returned NULL.\n");
  68. exit();
  69. }
  70.  
  71. /*
  72. * Get a handle to the RTP layer session.
  73. */
  74. synctl(pssn, SYN_CTL_GETRTPSESSION, ();
  75.  
  76. /*
  77. * Look up the encoding represented by payloadtype.
  78. * Determine if it's a supported encoding.
  79. */
  80. enc = getencoding(payloadtype);
  81. printf("enc.en_name: %s\n", enc.en_name);
  82.  
  83. ssrc = ;
  84.  
  85. printf("Found sender: SSRC = 0x%x Encoding = %s\n", ssrc, enc.en_name);
  86.  
  87. /*
  88. * rtcp package send/recv thread.
  89. */
  90. rtpctl(psn, RTP_CTL_RTCPCYCLETHREAD, (, ssrc);
  91.  
  92. rtpctl(psn, RTP_CTL_RTCPRECVTHREAD, (, ssrc);
  93.  
  94. }

运行

code::blocks工程

https://files.cnblogs.com/files/dong1/rtprtcp_linux_demo.tar.gz

rtcp多媒体控制协议应用的更多相关文章

  1. RTSP/RTP 媒体传输和控制协议

    1 前言 本文档主要描述了 NewStream Vision 系统中前端视频服务器(DVR, 网络摄像机), 中心转发服务器以及客户端之间的多媒体通信以及控制协议. 本协议主要基于标准的 IETE 的 ...

  2. LACP链路聚合控制协议

    LACP链路聚合控制协议 来源: https://www.cnblogs.com/taosim/articles/4378691.html http://storage.chinabyte.com/6 ...

  3. 运输层3——传输控制协议TCP概述

    目录 1. TCP最主要的特点 2. TCP的连接 3. socket在不同场景中的含义 写在前面:本文章是针对<计算机网络第七版>的学习笔记 运输层1--运输层协议概述 运输层2--用户 ...

  4. TCP/IP详解学习笔记(12)-- TCP:传输控制协议

    1.概述      TCP提供了一种可靠的面向连接的字节流运输层服务.      TCP将用户数据打包成报文段,它发送后启动一个定时器,另一端收到的数据进行确认,对失序的数据重新排序,丢弃重复数据,T ...

  5. 网际报文控制协议ICMP

    为了更有效地转发IP数据报和提高交付成功的机会,在网际层使用了网际控制报文协议ICMP.ICMP允许主机或路由器报告差错情况和提供有关异常情况的报告.ICMP是因特网的标准协议.但ICMP不是高层协议 ...

  6. rtp rtcp rtsp sip协议了解方法

    vlc有个串流功能 可以流各种推流 方便拉取. 能够方便抓包查看协议. 1.菜单媒体->流 打开对话框 分别可以选择本地文件 关盘文件 网络流 捕获设备做流化处理. 2. 选择 串流->新 ...

  7. 吉特日化MES&WMS系统--三色灯控制协议转http

    关于硬件控制大部分都是使用CS客户端程序,一般连接口都是用网口,串口,USB口等,应用通讯是不支持HTTp协议操作的,而目前一般做技术的人员都在于BS开发,使用HTTP 协议,所以在硬件交互上可能觉得 ...

  8. [源码解析] 机器学习参数服务器 Paracel (2)--------SSP控制协议实现

    [源码解析] 机器学习参数服务器 Paracel (2)-----SSP实现 目录 [源码解析] 机器学习参数服务器 Paracel (2)-----SSP实现 0x00 摘要 0x01 背景知识 1 ...

  9. IMCP网际控制协议

    IP协议是TCP/IP协议使用的在网络层传输机制,它是一种不可靠的无连接的数据报协议,但是IP协议假定了底层是不可靠的,因此,要尽最大的努力传输到目的地,但正因为如此,IP协议则没有了保证,也就是说, ...

随机推荐

  1. vs中 main和_tmain的区别

    用过C的人都知道每一个C的程序都会有一个main(),但有时看别人写的程序发现主函数不是int main(),而是int _tmain(),而且头文件也不是<iostream.h>而是&l ...

  2. 扩展方法和Lambda之练习手记

    扩展方法是我们日常开发当中所经常简化代码,提高性能和代码可读性的一个重要开发手段. 扩展方法是一个只能在静态类中声明的静态方法 Lambda 是一个表达式 ,学会了 可以使代码简洁,也是装13的利器. ...

  3. import 和 import {} 的区别

    http://es6.ruanyifeng.com/#docs/module#export

  4. Shell 文本处理工具

    转载自:http://www.cnblogs.com/wish123/p/5540210.html Linux下使用Shell处理文本时最常用的工具: find.grep.xargs.sort.uni ...

  5. CentOS7.1 Liberty云平台之Dashboard篇(7)

    控制节点: 一.安装及配置Dashboard 1.安装dashboard相关包 yum install openstack-dashboard 2.配置/etc/openstack-dashboard ...

  6. mybatis由浅入深day02_9.3.5使用生成的代码_9.4逆向工程注意事项

    9.3.5 使用生成的代码 需要将生成工程中所生成的代码拷贝到自己的工程中. 拷这4个到我们原来的spring_mybatis1216工程下 ItemsMapper.java package cn.i ...

  7. YARN 中的应用程序提交

    YARN 中的应用程序提交 本节讨论在应用程序提交到 YARN 集群时,ResourceManager.ApplicationMaster.NodeManagers 和容器如何相互交互.下图显示了一个 ...

  8. echo\awk\sed\tee\curl的使用-shell

    echo的使用:http://man.linuxde.net/echo awk的使用:http://man.linuxde.net/awk sed的使用:http://man.linuxde.net/ ...

  9. UE4.16播放全景视频

    全景视频有两种:一种是常见的一帧画面里面包含一张全景图,另外一种是一帧画面里面包含了左眼和右眼两张全景图. 根据种类的不同,选择不同的材质分别对应MAT_Single_Image和MAT_Stereo ...

  10. #error和line

    #error message ----注:message不需要用双引号包围, #error 编译指示字用于自定义程序特有的编译错误消息类似的, #warning用于生成编译警告,但不会停止编译. 在l ...