当前位置: 首页 > article >正文

GStreamer 转rtsp流(广电 / 酒店行业标准)

GStreamer gst-rtsp-server广电 / 酒店行业标准,本来以为在AI这么发达的情况下小白搭建一个将udp/rtp转为rtsp的服务应该不难但实际上都快被整疯的节奏。记录一下。需求由于iptv酒店项目需要多个机顶盒播出同步而只有rtsp才可以的。故广电设备比如编码器卫星接收机输出的udp/rtp流需要经过服务器转为rtsp流基本就能同步播出的了。由于自身能力有限最终只能播出udp转的rtsp流。推流软件UdpTsAnalyser_1.61.exe发送地址udp://239.94.0.31:5140,推送的广电常用的mpeg2格式的音视频流ts流。环境搭建1.ubuntu20.04太新太旧也是一堆错误能正常运行后地址为192.168.11.2122.进入/root/gst-build/gst-rtsp-server/examples目录vlc播放地址rtsp://192.168.11.212:8554/test1推本地流./test-mp4 --port 8554 4.mp4或者./test-launch --port 8554 filesrc location4.mp4 ! qtdemux ! h264parse ! rtph264pay namepay0 pt962udp不转码直接封装**********udp不卡顿*****最终工业级无卡顿、超低延迟命令推荐直接用这个 UDP-TS 转 RTSP./test-launch --port 8554 \udpsrc port5140 multicast-group239.94.0.31 do-timestampfalse buffer-size1048576 \! tsparse set-timestampsfalse \! queue leaky2 max-size-buffers0 max-size-bytes0 max-size-time100000000 \! rtpmp2tpay namepay0 pt96这个vlc播放是流畅的。由于我们要播放多个节目那我们重写test-launch.c的代码root目录下建立my_rtsp_server目录1.频道地址配置文件ch.conf239.94.0.31:5140239.94.0.32:5140239.94.0.33:5140239.94.0.34:5140239.94.0.35:5140239.94.0.36:5140239.94.0.37:5140239.94.0.38:5140239.94.0.39:5140239.94.0.40:51402.main.c文件可以读取频道配置文件#include gst/gst.h#include gst/rtsp-server/rtsp-server.h#include stdio.h#include stdlib.h#include string.h#define DEFAULT_RTSP_PORT 8554#define CHANNEL_FILE ch.confstatic char *port (char *)DEFAULT_RTSP_PORT;static GOptionEntry entries[] {{port, p, 0, G_OPTION_ARG_STRING, port,RTSP server port (default: 8554), PORT},{NULL}};typedef struct {char ip[50];int udp_port;} Channel;int read_channels(Channel channels[], int max) {FILE *f fopen(CHANNEL_FILE, r);if (!f) {g_printerr(Cannot open %s\n, CHANNEL_FILE);return -1;}int count 0;char line[128];while (fgets(line, sizeof(line), f) count max) {memset(channels[count], 0, sizeof(Channel));char clean_line[128] {0};int j 0;for (int i 0; line[i] ! \0; i) {char c line[i];if ((c 0 c 9) || c . || c :) {clean_line[j] c;}}if (strlen(clean_line) 5) continue;char *colon strchr(clean_line, :);if (!colon) continue;*colon 0;strcpy(channels[count].ip, clean_line);channels[count].udp_port atoi(colon 1);count;}fclose(f);return count;}int main(int argc, char *argv[]) {GMainLoop *loop;GstRTSPServer *server;GstRTSPMountPoints *mounts;GOptionContext *optctx;GError *error NULL;Channel channels[20] {0};int channel_count, i;optctx g_option_context_new(- UDP to RTSP Server);g_option_context_add_main_entries(optctx, entries, NULL);g_option_context_add_group(optctx, gst_init_get_option_group());if (!g_option_context_parse(optctx, argc, argv, error)) {g_printerr(Option error: %s\n, error-message);g_error_free(error);return -1;}g_option_context_free(optctx);gst_init(argc, argv);loop g_main_loop_new(NULL, FALSE);server gst_rtsp_server_new();g_object_set(server, service, port, NULL);mounts gst_rtsp_server_get_mount_points(server);channel_count read_channels(channels, 20);if (channel_count 0) {g_printerr(No channels\n);return -1;}for (i 0; i channel_count; i) {char mount_path[128] {0};char pipeline[512] {0};GstRTSPMediaFactory *factory gst_rtsp_media_factory_new();snprintf(mount_path, 127, /iptv/%s:%d, channels[i].ip, channels[i].udp_port);snprintf(pipeline, 511,udpsrc port%d multicast-group%s do-timestampfalse buffer-size1048576 ! tsparse set-timestampsfalse ! queue leaky2 max-size-buffers0 max-size-bytes0 max-size-time100000000 ! rtpmp2tpay namepay0 pt96,channels[i].udp_port, channels[i].ip);gst_rtsp_media_factory_set_launch(factory, pipeline);gst_rtsp_media_factory_set_shared(factory, TRUE);gst_rtsp_media_factory_set_latency(factory, 0);gst_rtsp_mount_points_add_factory(mounts, mount_path, factory);g_print(✅ OK: rtsp://0.0.0.0:%s%s\n, port, mount_path);}g_object_unref(mounts);gst_rtsp_server_attach(server, NULL);g_print(\n RTSP server running on port %s\n, port);g_main_loop_run(loop);return 0;}3.编译gcc main.c -o main pkg-config --cflags --libs gstreamer-1.0 gstreamer-rtsp-server-1.0不报错生成main执行文件即可4.运行./main大概会显示rootlinux:~/my_rtsp_server# ./main? OK: rtsp://0.0.0.0:8554/iptv/239.94.0.31:5140? OK: rtsp://0.0.0.0:8554/iptv/239.94.0.32:5140? OK: rtsp://0.0.0.0:8554/iptv/239.94.0.33:5140? OK: rtsp://0.0.0.0:8554/iptv/239.94.0.34:5140? OK: rtsp://0.0.0.0:8554/iptv/239.94.0.35:5140? OK: rtsp://0.0.0.0:8554/iptv/239.94.0.36:5140? OK: rtsp://0.0.0.0:8554/iptv/239.94.0.37:5140? OK: rtsp://0.0.0.0:8554/iptv/239.94.0.38:5140? OK: rtsp://0.0.0.0:8554/iptv/239.94.0.39:5140? OK: rtsp://0.0.0.0:8554/iptv/239.94.0.40:5140? RTSP server running on port 8554这就算正常的了用vlc打开这些地址rtsp://192.168.11.212:8554/iptv/239.94.0.31:5140rtsp://192.168.11.212:8554/iptv/239.94.0.32:5140rtsp://192.168.11.212:8554/iptv/239.94.0.33:5140等可以正常播放就可以了。

相关文章:

GStreamer 转rtsp流(广电 / 酒店行业标准)

GStreamer gst-rtsp-server(广电 / 酒店行业标准),本来以为在AI这么发达的情况下,小白搭建一个将udp/rtp转为rtsp的服务,应该不难,但实际上,都快被整疯的节奏。记录一下。需求:由于iptv酒店项目…...

Web基础(二):Idea集成Tomcat

第一步:新建一个空项目第二步:选择文件,项目结构 > 模块,点击“”号 > 选择Web > 应用确定第三步:选择文件,项目结构>模块(1)源 > web-WEB-INF目录下创建classes和li…...

LFM2.5-VL-1.6B惊艳案例:老旧文档扫描件OCR+结构化摘要生成效果对比

LFM2.5-VL-1.6B惊艳案例:老旧文档扫描件OCR结构化摘要生成效果对比 1. 模型介绍 LFM2.5-VL-1.6B是由Liquid AI推出的轻量级多模态大模型,专为边缘设备和离线场景优化设计。这个1.6B参数的视觉语言模型(1.2B语言400M视觉)能够在低…...

完全开源的语言模型学习记录--TrilinearCIM架构

文章目录在这里插入图片描述一、一段话总结二、思维导图三、详细总结1. 研究动机与问题2. 核心技术方案3. 评估与结果4. 贡献与结论四、关键问题与答案https://arxiv.org/pdf/2604.07628 Trilinear Compute-in-Memory Architecture for Energy-Efficient Transformer Accelerat…...

Google ADK:代码优先的AI Agent开发框架,构建可维护的智能体应用

1. 项目概述:为什么我们需要一个“代码优先”的Agent框架? 如果你和我一样,在过去一两年里尝试过构建AI Agent应用,大概率经历过这样的场景:一开始兴致勃勃,用LangChain或者AutoGen这类流行框架快速搭了个…...

Playwright Nodejs 自动化测试工具

官网地址 playwright.dev/docs/api/cl… 安装​ 通过使用 npm 或 yarn 安装 Playwright 开始。或者,也可以使用 VS Code 扩展开始并运行我们的测试。 使用 yarn 或 npm 安装: npm init playwrightlatest 在安装过程中 playwright 脚手架会向我们询…...

MAC使用

1. 快捷键公司电脑的主机是Macmini,快捷键和win不太一样。操作Mac 原生Windows 原生复制Command (⌘) CCtrl C粘贴Command (⌘) VCtrl V剪切Command (⌘) XCtrl X撤销Command (⌘) ZCtrl Z保存Command (⌘) SCtrl S截图:区域Shift Command (⌘…...

keysight N9040B是德 UXA 频谱分析仪 2 Hz 至 50 GHz

N9040B UXA信号分析仪的性能让您能够表征当今*挑战性的信号,包括5G、802 .11ax /ay、电子战等应用中的快速跳频、宽带和瞬态信号。通过优异的相位噪声性能和宽广的无杂散动态范围,您可以全面了解您的设计纯度。 Keysight N9040B UXA信号分析仪 主要特性和…...

Open XML SDK 完全指南:告别手动处理Office文档的烦恼

Open XML SDK 完全指南:告别手动处理Office文档的烦恼 【免费下载链接】Open-XML-SDK Open XML SDK by Microsoft 项目地址: https://gitcode.com/gh_mirrors/op/Open-XML-SDK 还在为每天重复的Word、Excel、PowerPoint文档操作而苦恼吗?手动调整…...

800V高压锂电池生产厂家推荐(工业级与特种定制方案解析)【浩博电池】

800V高压锂电池生产厂家推荐(工业级与特种定制方案解析)随着电动化与无人化设备的发展,800V高压锂电池正从新能源汽车领域快速扩展至工程机械、无人车辆、无人船、工业机器人及高端储能系统。相比传统400V系统,800V平台具备高效率…...

py每日spider案例之bubu影视视频链接参数逆向(wasm技术 难度中等)

逆向接口: 加密入口: js逆向代码: const fs = require(fs); const path = require(path);...

普通人也能做!AI+抖音生态:音乐、短剧、小说三大变现赛道全攻略

普通人零门槛入局内容创作:AI抖音相关平台新手指南 不用专业技能、不用大额投入,借助AI工具抖音旗下相关平台,普通人也能快速入局内容创作,音乐、短剧、小说三大方向,从注册到产出一步到位,新手友好易上手&…...

高效实现分组内跨行时间戳匹配:为每组生成布尔标记列 user_rejects

...

Hydra:面向超级个体的分布式操作系统基座设计与实战

1. 项目概述:一个人的“军事”工业基座如果你是一个对数据有极强掌控欲的“TJ”型人格,或者你正试图以一人之力运营一个需要处理海量信息、调度复杂任务、构建智能决策的“超级个体”项目,那么你很可能和我一样,长期被一个核心矛盾…...

mysql如何防止用户通过子查询窃取权限_MySQL安全参数设置

...

【GEO】为什么很多本地生活商家接不住 AI 流量?问题不在曝光,而在“临门一脚”

为什么很多本地生活商家接不住 AI 流量?问题不在曝光,而在“临门一脚”在过去一年里,很多本地生活商家都有一个共同感受:平台在变,流量在变,用户越来越习惯直接问 AI。但奇怪的是—— 明明门店信息、点评、…...

多项式特征变换在机器学习中的实践指南

1. 多项式特征变换在机器学习中的应用价值在机器学习实践中,我们常常会遇到这样的困境:输入特征之间存在着复杂的非线性关系,而简单的线性模型无法有效捕捉这些关系。这时候,多项式特征变换就成为了一个强有力的工具。通过将原始特…...

HTTP和HTTPS的区别深度剖析:从原理到实际应用

HTTP和HTTPS的区别深度剖析:从原理到实际应用 在互联网通信中,HTTP和HTTPS是最基础也最核心的协议,承载着我们日常浏览网页、传输数据的全部需求。很多人只知道“HTTPS比HTTP安全”,却不清楚两者的本质差异、加密原理以及背后的设…...

GetQzonehistory:5分钟永久保存QQ空间说说的终极解决方案

GetQzonehistory:5分钟永久保存QQ空间说说的终极解决方案 【免费下载链接】GetQzonehistory 获取QQ空间发布的历史说说 项目地址: https://gitcode.com/GitHub_Trending/ge/GetQzonehistory 在数字记忆时代,QQ空间承载了无数人的青春回忆&#xf…...

Weka机器学习工具实战:7种高效求助与问题解决指南

1. 项目概述Weka作为一款开源的机器学习工具集,自1997年由怀卡托大学开发以来,已成为学术界和工业界广泛使用的数据挖掘平台。但在实际应用中,许多用户(尤其是初学者)常面临文档晦涩、社区响应慢、问题排查困难等挑战。…...

无需越狱!用Misaka彻底解放iPhone和tvOS个性化定制能力 [特殊字符]

无需越狱!用Misaka彻底解放iPhone和tvOS个性化定制能力 🚀 【免费下载链接】misaka iOS & tvOS customisation tool for KFD & MDC 项目地址: https://gitcode.com/gh_mirrors/mis/misaka 想让你的iPhone焕然一新却不想冒险越狱&#xf…...

matlab/simulink光伏储能并网交直流发电系统仿真模型,2018a版本

matlab/simulink光伏储能并网交直流发电系统仿真模型,2018a版本,2021a版本 1)光伏采用扰动观察法最大功率跟踪 2)蓄电池为双向DC-DC变换器,采用电压环和电流环控制的双闭环控制,且电流环和电压环均采用PI调…...

第六章 电感

一 什么是电感特性:电感两端的电流不能突变构成:电感通常由线圈、磁芯和绝缘层组成1.1 空芯电感:这个电感没有磁芯1.2 加磁芯电钢:通过加磁芯得到了大的电感量1.3 屏蔽型电感:电感的磁场不发散,对外没有干扰…...

飞书多维表API:三种数据筛选策略的性能与场景抉择

1. 飞书多维表API数据筛选的三种策略解析 第一次接触飞书多维表API时,最让我头疼的就是数据筛选问题。记得去年做电商数据分析系统时,运营团队每天需要从近10万条订单记录中提取特定平台的数据。最初简单粗暴地全量拉取数据,结果接口响应慢得…...

ChatGPT高效生成技术图表:原理与实践指南

1. 项目概述:用ChatGPT生成专业图表在技术文档编写、项目汇报或学术论文撰写过程中,可视化图表往往是最费时的环节之一。传统图表制作需要经历数据整理、工具学习、样式调整等多个步骤,而"Generating Diagrams with ChatGPT"这个方…...

多行业CCD图像传感器应用指南及厂家技术参考

CCD图像传感器在当今的图像采集和处理领域扮演着至关重要的角色。它广泛应用于工业检测、安防监控、医疗成像等众多行业。其能够将光学图像转化为电信号,为后续的图像分析和处理提供基础,是推动这些行业发展的关键技术组件之一。推荐一:迈欣机…...

从‘虹猫蓝兔’到终身学习:聊聊Continual Learning如何让AI模型像人一样成长

从‘虹猫蓝兔’到终身学习:Continual Learning如何重塑AI进化之路 当《虹猫蓝兔七侠传》中的主角需要识别新出现的"虹猫"品种时,传统AI模型会陷入尴尬境地——要么遗忘所有已学会的猫品种特征重新训练,要么固执地拒绝承认这个新物种…...

源代码论文分享|这份欢迪迈手机商城设计与开发系统资料,真的挺适合拿来学习和参考!

做课程设计或者毕业设计的时候,很多人真正缺的不是“资料”,而是一份能看、能学、能改、还能帮自己理清思路的完整项目。尤其是做商城系统这种题目,网上看起来资源很多,但真正靠谱的,往往不是只有页面截图,…...

LLM 推理性能深潜:为什么 L20 跑不过 A800?——从带宽瓶颈到多并发调优

核心观点:LLM 的 Decode(生成)阶段是典型的 Memory Bandwidth Bound(显存带宽密集型) 任务。GPU 大部分时间不是在“计算”,而是在“搬运数据”。带宽决定了上限,Batch Size 决定了并发效率。1.…...

嵌入式机器人开发实战:从零到整的20个STM32F4核心示例深度解析

嵌入式机器人开发实战:从零到整的20个STM32F4核心示例深度解析 【免费下载链接】Development-Board-C-Examples 项目地址: https://gitcode.com/gh_mirrors/de/Development-Board-C-Examples 对于想要系统掌握机器人嵌入式开发的中级开发者而言,…...