# librtp **Repository Path**: dcom1024/librtp ## Basic Information - **Project Name**: librtp - **Description**: 简单的rtp打包库 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2025-10-02 - **Last Updated**: 2025-10-02 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # librtp ## 介绍 librtp 是一个基于 C 语言开发的简单媒体 RTP 打包库。它支持多种媒体格式,如 H.264、H.265、AAC 和 PCMA 的 RTP 数据打包,并提供回调机制以处理打包后的数据。 ## 开始 本项目旨在简化 RTP 数据包的生成过程,适用于需要将音视频数据通过 RTP 协议传输的应用场景。 ### 核心功能 - **RTP 打包**:支持多种媒体格式的 RTP 数据打包处理。 - **回调机制**:通过回调函数返回打包完成的数据,便于用户进一步处理。 - **灵活配置**:可定义时间戳、SSRC 等参数,适应不同需求。 ## 使用方法 下面是一个简单的使用示例: ```c #include #include #include #include "rtp.h" // RTP 数据回调函数 void rtp_data(void* data, int len, void* usr_data) { printf("RTP packed data, length: %d\\n", len); } int main() { // 用户自定义数据 char* user_data = "1234567890"; // 创建 H264 的 RTP 打包器 struct rtp_packetizer* packet = create_rtp_packetizer(RTP_H264, 0x12345678, rtp_data, user_data); if (!packet) { printf("Failed to create RTP packetizer\\n"); return -1; } // 模拟一个 512 * 1024 的 I 帧数据 int len = 512 * 1024; uint32_t pts = 0; // 时间戳 char* Iframe = malloc(len); if (!Iframe) { printf("Memory allocation failed\\n"); rtp_packetizer_destroy(packet); return -1; } memset(Iframe, 0x12, len); // 打包数据 int result = rtp_payload_encode_input(packet, Iframe, len, pts); if (result != 0) { printf("RTP payload encode failed\\n"); } // 销毁打包器 rtp_packetizer_destroy(packet); free(Iframe); return 0; } ``` ## 函数说明 - `create_rtp_packetizer`:创建 RTP 打包器实例,指定媒体类型、SSRC、回调函数和用户数据。 - `rtp_payload_encode_input`:将原始媒体数据输入并进行 RTP 打包。 - `rtp_packetizer_destroy`:销毁 RTP 打包器并释放资源。 ## 支持的媒体格式 - H.264 (`RTP_H264`) - H.265 (`RTP_H265`) - AAC (`RTP_AAC`) - PCMA (`RTP_PCMA`) ## 注意事项 - 确保正确设置媒体数据的格式、时间戳和 SSRC。 - 使用完打包器后需调用 `rtp_packetizer_destroy` 释放内存,防止内存泄漏。 ## 贡献与反馈 欢迎贡献代码或提供反馈!请提交 Pull Request 或 Issue 到 [librtp](https://gitee.com/ZEH111/librtp) 项目仓库。 ## 协议 本项目采用 MIT License 协议,请遵守相关条款。