rtcp多媒体控制协议应用
2024-10-21 15:39:14
rtcp package send/recv demo
main.c
#include <stdio.h> #include <rtp.h> #include <rtcp.h> #include <netinet/in.h> #include <netdb.h> #include <math.h> #include <event.h> #include <syn.h> #include <payload.h> #include <sample.h> #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> #include <stdlib.h> #include <unistd.h> #include <arpa/inet.h> #include <util.h> #include <frame.h> #include <sys/ioctl.h> #include <sys/stropts.h> #include "main.h" #ifdef LINUX #include <linux/soundcard.h> #endif /* LINUX */ #define MAX_SOURCES 32 int main(int argc, char **argv) { ]; unsigned short *samp16 = (unsigned short *) buf; bool found; int audio, port, rv, payloadtype; , one = ; ssrc_t ssrc = , sources[MAX_SOURCES]; struct in_addr addr; struct session *psn; struct synsession *pssn; struct timespec time; struct sampparam parameters; struct encoding enc; mediatime_t ts; struct sampreadparam sreadparam; int leeway; /* * Check for correct number of arguments. */ ) { fprintf(stderr, ]); exit(); } addr.s_addr = inet_addr(argv[]); port = atoi(argv[]); printf("Session: %s/%d\n", inet_ntoa(addr), port); /* * Open a synchronization layer session. * Use 2k buffers for RTP packets, 64 buffers in pool. */ pssn = synopen(addr, port, , ); if (pssn == NULL) { fprintf(stderr, "synopen() returned NULL.\n"); exit(); } /* * Get a handle to the RTP layer session. */ synctl(pssn, SYN_CTL_GETRTPSESSION, (); /* * Look up the encoding represented by payloadtype. * Determine if it's a supported encoding. */ enc = getencoding(payloadtype); printf("enc.en_name: %s\n", enc.en_name); ssrc = ; printf("Found sender: SSRC = 0x%x Encoding = %s\n", ssrc, enc.en_name); /* * rtcp package send/recv thread. */ rtpctl(psn, RTP_CTL_RTCPCYCLETHREAD, (, ssrc); rtpctl(psn, RTP_CTL_RTCPRECVTHREAD, (, ssrc); }
运行
code::blocks工程
https://files.cnblogs.com/files/dong1/rtprtcp_linux_demo.tar.gz
最新文章
- spring整合hibernate的时候报异常org.hibernate.HibernateException: createQuery is not valid without active transaction
- java中InvocationHandler 用于实现代理。
- sublime 3
- csharp: MVC Controls
- 如何通过 GT 快速开始性能测试?
- MongoDb查询日期范围
- jQuery Mobile里xxx怎么用呀?(缓存篇)
- spring mvc + mybatis + spring aop声明式事务管理没有作用
- 在Java SE中使用Hibernate处理数据
- html5 canvas的教程
- 推荐几个在线PDF转化成Word网站
- 使用 Python &; Flask 实现 RESTful Web API
- win10 uwp 获得元素绝对坐标
- OO第二单元总结之线程大冒险第一关
- Readme.txt
- linux 根据端口查看系统进程
- OpenCvSharp尝试
- cache基础
- springboot项目线程使用2
- Hibernate基础知识
热门文章
- 详解Git工作区、暂存区、历史记录区以及git reset、git revert、git checkout等撤销命令的区别
- NHibernate初学六之关联多对多关系
- [转]ASP.NET MVC 5 - 将数据从控制器传递给视图
- easyui------设置datagrid(&#39;getEditor&#39;)时焦点问题
- Android开发之程序猿必需要懂得Android的重要设计理念2(5.20更新版)
- JAVA语言基础内部测试题(50道选择题)
- Extjs学习笔记--(四,基本函数介绍)
- Windows 端口占用
- Access数据操作-02
- 判断页面中的js方法是否存在,存在就调用它,不存在则忽略