美文网首页
Linux下实时流媒体——RTP

Linux下实时流媒体——RTP

作者: 锋之律 | 来源:发表于2019-07-22 10:04 被阅读0次

以下为数据发送端代码,它负责向用户指定的IP地址和端口,不断地发送RTP数据包:

#include <stdio.h>
#include <string.h>
#include "rtpsession.h"

// 错误处理函数
void checkerror(int err)
{
    if (err < 0)
    {
        char *errstr = RTPGetErrorString(err);
        printf("Error:%s\\n", errstr);
        exit(-1);
    }
}

int main(int argc, char **argv)
{
    RTPSession sess;
    unsigned long destip;
    int destport;
    int portbase = 6000;
    int status, index;
    char buffer[128];

    // 获得接收端的IP地址和端口号
    destip = inet_addr(argv[1]);
    destip = ntohl(destip);
    destport = atoi(argv[2]);

    // 创建RTP会话
    status = sess.Create(portbase);
    checkerror(status);

    // 指定RTP数据接收端
    status = sess.AddDestination(destip, destport);
    checkerror(status);

    // 设置RTP会话默认参数
    sess.SetDefaultPayloadType(0);
    sess.SetDefaultMark(false);
    sess.SetDefaultTimeStampIncrement(10);

    // 发送流媒体数据
    index = 1;
    do
    {
        sprintf(buffer, "%d: RTP packet", index++);
        sess.SendPacket(buffer, strlen(buffer));
        printf("Send packet !\\n");
    } while (1);

    return 0;
}

以下为数据接收端代码,它负责从指定的端口不断地读取RTP数据包:

#include <stdio.h>
#include "rtpsession.h"
#include "rtppacket.h"

// 错误处理函数
void checkerror(int err)
{
    if (err < 0)
    {
        char *errstr = RTPGetErrorString(err);
        printf("Error:%s\\n", errstr);
        exit(-1);
    }
}

int main(int argc, char **argv)
{
    RTPSession sess;
    int localport;
    int status;

    // 获得用户指定的端口号
    localport = atoi(argv[1]);

    // 创建RTP会话
    status = sess.Create(localport);
    checkerror(status);

    do
    {
        // 接受RTP数据
        status = sess.PollData();
        // 检索RTP数据源
        if (sess.GotoFirstSourceWithData())
        {
            do
            {
                RTPPacket *packet;
                // 获取RTP数据报
                while ((packet = sess.GetNextPacket()) != NULL)
                {
                    printf("Got packet !//n");
                    // 删除RTP数据报
                    delete packet;
                }
            } while (sess.GotoNextSourceWithData());
        }
    } while (1);

    return 0;
}

相关文章

  • Linux下实时流媒体——RTP

    以下为数据发送端代码,它负责向用户指定的IP地址和端口,不断地发送RTP数据包: 以下为数据接收端代码,它负责从指...

  • 视频开发知识储备

    1,rtp实时传输协议,用于传输流媒体数据,基于udp.2,rtsp实时流媒体协议,用于发起流媒体会话,交互信息,...

  • 超越RFC3550 - RTP/RTCP协议族分析

    一 前言 RF3550定义实时传输协议RTP和它的控制协议RTCP。RTP协议是Internet上针对流媒体传输的...

  • RTP、RTCP、RTSP详解一 概述

    概述 RTP、RTCP、RTSP 是学习、开发实时流媒体无法绕过的技术点,即便是选择使用RTMP,依然是基于RTP...

  • RTSP/RTP/RTCP

    流媒体之RTSP/RTP/RTCP,RTSP是发起/终结流媒体、RTP是传输流媒体、RTCP是对RTP进行控制,同...

  • webrtc-RTP/RTSP/RTCP的概念

    RTSP发起/终结流媒体、RTP传输流媒体数据 、RTCP对RTP进行控制,同步。 RTP Real-time T...

  • 流媒体播放协议

    流媒体通信协议 常用的流媒体协议主要有HTTP渐进下载(如HLS)和基于RTSP/RTP的实时流媒体协议,这两种基...

  • 知识:视频流媒体播放的一些知识

    1.概述 常用的流媒体协议主要有: 基于 RTSP/RTP 的实时流媒体协议 HTTP 渐进下载 基于浏览器插件,...

  • RTCP介绍及发送间隔控制

    1、简述RTP实时传输协议,广泛应用于流媒体传输应用场景,根据rfc3550介绍,RTP协议应用场景有如下几种: ...

  • hls.js播放m3u8视频流

    常用的流媒体协议主要有 HTTP 渐进下载和基于 RTSP/RTP 的实时流媒体协议,这二种基本是完全不同的东西,...

网友评论

      本文标题:Linux下实时流媒体——RTP

      本文链接:https://www.haomeiwen.com/subject/fttkkctx.html