4G小车的公网直播推流

embedded/2024/10/18 18:24:48/

一直想做一个小车, 可以通过4G推流, 没想到现在很多云服务提供商, SRS云服务器已经可以一键搭建了.

在这里插入图片描述
硬件方面, 就是一个1126驮着一个3516, 1126负责4G连接, 转流到Intenet, 3516负责vi_venc_rtsp

思路如下, 我的1126的摄像头一直没能横过来, 所以就不用1126的摄像头了, 先用3516建立rtsp服务.
源码在:

https://github.com/MontaukLaw/hi3516_rtsp

然后由于原子的1126, 可以插4G网卡, 我就用1126做一个推流的工具+上网.
推流使用的是ZLMedia, ZLMedia可以将rtsp的流, 推到rtmp的服务器上去.
ZLMedia的交叉编译方法是:

git clone --depth 1 https://gitee.com/xia-chu/ZLMediaKit
cd ZLMediaKit
git submodule update --init

修改tests\test_pusher.cpp这个文件的main函数为:

int main(int argc, char *argv[]) {// 输入参数数量小于2个, 就返回报错if (argc < 3) {ErrorL << "example: ./test_pusher rtsp://192.168.1.99/live/1 rtmp://remote_server/live/main_stream" << endl;}return domain(argv[1], argv[2]);
}

这个含义就是第一个参数做拉流地址, 第二个参数做推流地址, 非常简单.

然后在根目录建一个arm_build.cmake文件, 内容为:

SET(CMAKE_SYSTEM_NAME Linux)
SET(CMAKE_SYSTEM_PROCESSOR arm)
set(CMAKE_STAGING_PREFIX /home/marc/ZL_Install)SET(TOOLCHAIN_DIR "/opt/atk-dlrv1126-toolchain")
SET(CMAKE_FIND_ROOT_PATH ${TOOLCHAIN_DIR})
SET(CMAKE_C_COMPILER ${TOOLCHAIN_DIR}/bin/arm-linux-gnueabihf-gcc)
SET(CMAKE_CXX_COMPILER ${TOOLCHAIN_DIR}/bin/arm-linux-gnueabihf-g++)set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY)

然后

mkdir build
cd build
cmake ..
make -j4

编译之后搜索一下test_pusher这个应用, 复制到1126的板子上, 这个时候就可以测试一下rtsp转推是否好用了, 在windows上面跑一下
mediamtx, 参考我这个博客:

https://blog.csdn.net/zunly/article/details/135929959?spm=1001.2014.3001.5502
在局域网看看转流是否好使

 ./test_pusher rtsp://192.168.1.99/live/1 rtmp://192.168.1.242:1935/live/1

注意, 前面的rtsp是我3516的rtsp流地址, 后面的rtmp是我windows上面的mediamtx的rtmp地址, 注意网络要都通起来.

这样通过vlc就可以播放rtmp://192.168.1.242:1935/live/1这个流的视频了.

接下来把这个windows上面干的活儿, 弄到Intenet上去.

去腾讯云, 花大概50-70一个月, 弄一个srs的轻量服务器, 啥都不用做, 实例创建完毕之后, 就可以打开管理界面(注意, 这里我折腾了半个小时, 才发现, 一定要先把梯子关了…)
在这里插入图片描述
到这一步几乎就比较傻瓜了, 开防火墙, 然后把转流的命令中的rtmp地址, 换成这个云服务器上的rtmp地址, 就可以通过各种协议获取到这个流了.

是不是很简单?

下面的拉流地址就是:
rtmp://43.139.145.myip/live/livestream?secret=e8c13b9687ec47f_my_key

在这里插入图片描述

遗留问题:
为啥入带宽有9M
在这里插入图片描述


http://www.ppmy.cn/embedded/39852.html

相关文章

Celery Redis 集群版连接和PyCharm启动配置

目录 使用Redis cluster版作为broker原因 PyCharm配置 使用Redis cluster版作为broker 在celery5及其之前版本&#xff0c;需要配置如下才可行 celery_app.conf.update( broker_transport_options{“global_keyprefix”: “{celery}:”}, ) 原因 https://github.com/celery/…

QT--3

Qt 1>将文本编辑器完整实现 #include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this);this->resize(800,600);edit1 new QTextEdit(this);edit1->resize(600…

力扣每日一题115:不同的子序列

题目 困难 给你两个字符串 s 和 t &#xff0c;统计并返回在 s 的 子序列 中 t 出现的个数&#xff0c;结果需要对 109 7 取模。 示例 1&#xff1a; 输入&#xff1a;s "rabbbit", t "rabbit" 输出&#xff1a;3 解释&#xff1a; 如下所示, 有 3 种…

java设计模式 桥接

桥接模式&#xff08;Bridge Pattern&#xff09;是软件工程中的一种设计模式&#xff0c;它将抽象部分与它的实现部分分离&#xff0c;使它们可以独立变化。这种类型的设计模式属于结构型模式&#xff0c;它通过提供抽象化和实现化之间的桥接结构&#xff0c;来实现二者的解耦…

动手学深度学习16 Pytorch神经网络基础

动手学深度学习16 Pytorch神经网络基础 1. 模型构造2. 参数管理1. state_dict()2. normal_() zeros_()3. xavier初始化共享参数的好处 3. 自定义层4. 读写文件net.eval() 评估模式 QA 1. 模型构造 定义隐藏层–模型结构定义前向函数–模型结构的调用 import torch from torch…

HTML【常用的标签】、CSS【选择器】

day45 HTML 继day44&#xff0c;w3cschool 常用的标签 k) 表格 表格由 table 标签来定义。每个表格均有若干行&#xff08;由 tr 标签定义&#xff09;&#xff0c;每行被分割为若干单元格&#xff08;由 标签定义&#xff09;。字母 td指表格数据&#xff08;table data&…

推荐全网最全的AI小白进阶指南

1. 引言 您想学习人工智能&#xff1f;但不知道如何开始&#xff0c;也不知道从哪里开始&#xff1f;互联网上的资源总是丰富多彩&#xff0c;质量参差不齐&#xff0c;往往容易看花眼而无从下手。 鉴于此&#xff0c;本文重点推荐一些个人收集的还不错的一些资源供大家学习参…

网络安全专业岗位详解+自学学习路线图

很多网安专业同学一到毕业就开始迷茫&#xff0c;不知道自己能去做哪些行业&#xff1f;其实网络安全岗位还是蛮多的&#xff0c;下面我会介绍一些网络安全岗位&#xff0c;大家可以根据自身能力与喜好决定放哪个方向发展。 渗透测试/Web安全工程师 主要是模拟黑客攻击&#…