流媒体开发之路

2023-05-16

其实很早之前,就想写属于自己的博客,大二就有了CSDN账号,很讽刺的是,工作几年了,账号里面的内容竟然和小鲜肉脸一样干净。干净的让人尴尬。回顾自己的这几年的开发之路,接触了很多新的东西,也用了很多技术,也写了不少的代码。可是最后回忆起来,却想起不多,与自己不爱去总结有关,所以我想从今天开始总结自己曾经用过和学过的技术,也记录一些曾经踩过的坑儿!

      因为项目需要,我之前是做C#转到了Java,开始了自己的流媒体学习之路。也开始了一步一个坑儿的阶段。由于项目需要实时的视频和语音,与远程观看与语音对讲。由于硬件的二次开发接口对于客户端的数量有限制。不得不放弃从厂商的二次开发接口入手。最后老大敲定采用流媒体的方案。搭建直播平台。我就开始负责直播平台搭建。

     刚开始,采用的是Nginx+Nginx-rtmp-module+ffmpeg 搭建直播平台,系统:ubantu14.04  。主要使用ffmpeg进行推流和拉流和rtsp=>rtmp。这个工具十分强大,花了1周才看完他的文档。觉得自己只学到了一个皮毛。但是不影响自己的开发。当环境搭建后,播放器采用的是vlc播放器,一个万精油级别的播放器。当一切准备就绪后,首先测试了一下将本地文件推到本地Nginx中,vlc 播放很流畅,没有出现卡顿的现象。后来换成自己产品。ffmpeg 出现了花屏现象,vlc播放不流畅,以及延迟很大。在局域网的情况下,出现了接近10s的延迟。这是不可接受的。后面优化了ffmpeg命令,将视频进行h264压缩,语音aac压缩。基本解决了花屏情况。可是10s的延迟是不能接受。vlc 后期出现了加载视频很慢的情况。就不在考虑使用vlc 作为播放器。在网上找了很多的播放器,不过不少都是收费的。在GitHub中,有人推荐了SRS(Simple-Rtmp-Server) 项目地址:http://www.ossrs.net/srs.release/releases/  ,有完整的文档和详细的介绍。而且自带srs播放器。低延迟和低耗。据说延迟可以到1s内。官网上有详细安装说明,不过我还是喜欢自己的安装方式。大概记录一下

1、首先在GitHub 中下载  https://github.com/ossrs/srs/tree/v2.0-r2#history 完整版本的,我不太喜欢他的自动安装

2、将下载好的zip发到linux系统中并解压

3、cd srs/trunk

4、./configure --prefix=/usr/local/srs --with-ssl --with-hls --with-hds --with-dvr --with-nginx --with-http-callback --with-http-server --with-stream-caster --with-http-api --with-ffmpeg --with-transcode --with-ingest --with-stat --with-librtmp --with-research --with-utest --with-gperf --with-gprof

5:make make install

6、sudo /usr/local/srs/etc/inin.d/srs start 就可以启动srs流媒体服务器。

这个项目中已经将ffmpeg 集成进来,可以在程序中直接调用此命令。省去了很多麻烦。行!今天就先到这儿,第一篇博客有些乱 ,但是却是我迈出的一大步!!!哈哈




本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

流媒体开发之路 的相关文章

  • Linux C编程问题:symbol lookup error: xxx undefined symbol xxx

    程序代码在编译的时候没问题 xff0c 但是在运行的时候报错 xff1a bin symbol lookup error bin undefined symbol xxx 百度了一下 xff0c 貌似是程序运行时使用的动态库和编译时make
  • Docker自动从Harbor下更新镜像

    JAVA开发Docker容器下自动更新镜像仓库的工具 前段时间在做一套分布式多租户系统 xff0c 它包括控制平台和应用服务器两部分 xff0c 应用服务器为企业客户服务 xff0c 系统会为每家企业建立一个应用服务器实例 xff0c 它存
  • C++中的exit函数

    描述 xff1a 用来立即中止当前程序的执行 xff0c 并将一个整数返回给系统 xff0c 该整数的作用与 由mian函数返回的整数 相同 xff0c 如果是0表示程序正常退出 xff1b 如果非0表示程序异常退出 头文件 span cl
  • 将uint8_t类型的16进制字符转化转换为string字符串

    碰到一个需求 xff0c 需要把硬件读到的uint8 t类型的16进制数据转化为string类型的字符串 例如 xff0c 如果读到到的数据是一个uint8 t类型的数组uint8 t code 61 5 61 0XAA 0X01 0XE3
  • C++解析json文件

    文章目录 1 JSON文件简介 1 1 1 JSON文件的语法规则1 2 JSON值的类型 2 JSON文件解析 1 JSON文件简介 1 一个项目在设计时会存在很多参数 xff0c 比如data文件路径 外设名称与相关参数 文件储存路径等
  • YOLO-YOLOV5算法原理及网络结构整理

    文章目录 零 参考链接一 前言1 1 YOLO vs Faster R CNN 二 YOLOv1 xff08 448 448 xff09 2 1实现方法2 2 损失函数2 3 leak RELU激活函数2 4总结 三 YOLOV23 1 Y
  • ubuntu 20.04.5安装python3.9缺少ffi.h文件问题

    ubuntu 20 04 5安装python3 9缺少ffi h文件问题 OK 解决
  • 视觉SLAM基础

    文章目录 零 参考链接一 视觉SLAM面试相关问题1 李群与李代数的映射关系2 李群与李代数的扰动模型3 SIFT与SURF特征的区别4 相似变换 仿射变换 射影变换的区别5 Homograph Essential Fundamental
  • 在ubuntu18.04系统上使用ROS跑ORB-SLAM3时遇到的问题总结

    1 跑TUM VI数据集dataset corridor4 512时 xff0c 从tum vi example sh中复制对应的运行命令 xff0c 输入命令后提示找不到对应的TUM 512 yaml文件 xff0c 查找对应路径发现只有
  • ubuntu1804系统安装Realsense SDK驱动和ROS Wrapper

    文章目录 1 软件安装1 1 安装realsense SDK1 2 安装Ros Wrapper 2 打开双目的开关3关闭结构光方法1 xff1a 通过可视窗口关闭方法2 xff1a 通过修改launch文件关闭 4查看相机参数 说明 xff
  • 在使用evo进行orb-slam2轨迹评估时提示时间戳没有对齐的问题

    最近使用一个orb slam2修改版跑euroc数据集 在使用evo评估绝对轨迹误差时出现下面的报错 found no matching timestamps between CameraTrajectory txt and gt MH01
  • ORB-SLAM2论文翻译

    文章转载至泡泡机器人 转载链接 链接 摘要 ORB SLAM2是基于单目 xff0c 双目和RGB D相机的一套完整的SLAM方案 它能够实现地图重用 xff0c 回环检测和重新定位的功能 无论是在室内的小型手持设备 xff0c 还是到工厂
  • ROS使用命令行查看图像消息的宽和高

    备忘 xff1a ROS在终端使用命令行查看图像消息的宽和高 span class token comment 查看图像的宽 span rostopic span class token builtin class name echo sp
  • C++读取指定目录下的所有文件

    简介 xff1a 代码备忘 xff0c 使用C 43 43 读取指定目录下的所有文件名 xff0c 并存入vector向量 需要的头文件 span class token macro property span class token di
  • ubuntu1804进行vins-fusion算法环境搭建遇到的问题汇总

    简介 xff1a 在ubuntu1804系统搭建vins fusion环境并基于euroc数据集进行测试 xff0c 对遇到的编译报错和解决办法进行汇总 1 vins fusion算法环境搭建 报错1 Chessboard cc 20 38
  • ubuntu1804搭建svo2.0环境并跑euroc数据集

    0说明 整个SVO2 0环境搭建过程按照官网的说明进行 链接 xff1a https github com uzh rpg rpg svo pro open 开发环境是ubuntu18 04 43 ROS Melodic 1工具安装 Ins
  • 使用ceres库时报错:undefined reference to `ceres::Problem::Problem()‘

    编译cmake项目链接ceres库时名称没有写对导致报错 myCeres cpp span class token punctuation span text startup 43 0x247 span class token punctu
  • qt.qpa.plugin: Could not load the Qt platform plugin “xcb“

    运行环境 ubuntu 20 04 5 使用python3 9 由于使用qt5的同时使用了opencv导致如下报错 应该是由于调用环境不兼容导致的 需要加入如下代码问题解决 import os os environ pop 34 QT QP
  • 【Ubuntu】触摸屏旋转配置

    1 主要参考这篇文章编写配置脚本 Ubuntu18 04双屏显示触屏设置 xff0c 解决触摸点和响应位置不一致的问题 iShare 123的博客 CSDN博客 ubuntu触摸屏设置 Ubuntu18 04双屏 https blog cs

随机推荐

  • 红外视频——行人识别

    最近在做关于红外视频的项目 xff0c 主要是对区域入侵检测 xff0c 主要是能够对行人进行识别 xff0c 又到了瓶颈期 xff0c 所以看看论文找些灵感 xff0c 下面也主要是对看到的论文的思想及实现步骤进行总结 1 Thermal
  • Ardupilot任务调度的理解

    Ardupilot通过定时器定时调度一系列任务实现任务调度 由于Ardupilot固件有基于arduino的APM发展而来 xff0c 因此程序与arduino的形式类似 xff0c 包含一个setup xff08 xff09 函数与一个l
  • 最详细的Gmapping代码详解!详细到每一行!

    无处不在的小土 gmapping的ROS封装 gaoyichao com
  • 【OpenCV3】棋盘格角点检测与绘制——cv::findChessboardCorners()与cv::drawChessboardCorners()详解

    棋盘格法是摄像机标定中常用的一种方法 xff0c 在使用该方法时需要对棋盘格的角点进行检测 opencv中封装了一个专门用于棋盘格角点检测的函数即cv findChessboardCorners xff0c 同时 xff0c 也提供了一个专
  • 网络编程和并发编程面试题

    网络编程和并发编程面试题 1 简述 OSI 七层协议 一 应用层 与其它计算机进行通讯的一个应用 xff0c 它是对应应用程序的通信服务的 例如 xff0c 一个没有通信功能的字处理程序就不能执行通信的代码 xff0c 从事字处理工作的程序
  • 树莓派利用串口进行通信

    树莓派串口通信 我用的是树莓派3b 43 型号 xff0c 网上各种各样的修改方式来使得树莓派的串口可以工作 xff0c 过于混乱 xff0c 还有的教程甚至会被树莓派系统搞崩溃 xff0c 尤其是树莓派实验室那里的中文教程 xff0c 是
  • Android系统学习(六)------裁剪Android系统

    你好 xff01 这里是风筝的博客 xff0c 欢迎和我一起交流 经过前面几篇博客的编译步骤 xff0c 成功的编出了Android系统 xff0c 但是发现编出来的system img有点大了 xff0c 有差不多1 7G xff0c 怎
  • 用postman批量执行post请求数据

    今天接到一个任务 xff0c 需要在同一个url中执行83次不同的post请求 xff0c 而且需要连续执行3次 xff0c 如果一个一个点击 xff0c 岂不是不符合 xff0c 摸鱼大王的风格 xff0c 思考片刻之后 xff0c 决定
  • 使用python批量发送post请求

    usr bin env python import requests url 61 34 http 192 168 26 xxx 34 header 61 39 Connection 39 39 close 39 39 Accept 39
  • 关于A 全球大气光 atmosphere light 算法总结

    由于大气散色所用引起的光源的特性 随着距离的增大而增强 A其实为无穷远处的一个大气光源 xff0c 比如天空 xff0c 这应该不是指天空中的云而是近地天空 由于各种去雾算法不同对A的依赖可能也不相同 我看到有几种方法对在去雾算法中应用 x
  • 解决树莓派开机黑屏不显示桌面问题

    一 设备状态 xff1a 以前桌面使用正常 xff0c 通过ssh进行安装pyqt5后导致桌面开机黑屏 二 所使用设备为 xff1a 树莓派4B 43 2021 05 07 raspios buster armhf img 三 定位问题 x
  • 树莓派Linux固定多USB设备号相同厂家设备和不同设备(包括一个USB设备两个设备名称号的情况)

    目录 一 问题说明 二 解决思路 三 开干 一 问题说明 在使用USB摄像头时 xff0c 由于使用了两个摄像头 xff0c 故此在上电启动后 xff0c 设备号会发生变化 xff0c 比如设备1之前时video0 xff0c 有的时候上电
  • FreeRTOS学习笔记-流缓冲区(FreeRTOS中文官网)

    https www freertos org zh cn cmn s RTOS stream buffer API html RTOS 流缓冲区 API RTOS 流缓冲区 API 函数 xff1a xStreamBufferCreate
  • FreeRTOS学习笔记-消息缓冲区(FreeRTOS中文官网)

    RTOS消息缓冲区 API RTOS 消息缓冲区 API 函数 xff1a xMessageBufferCreate xMessageBufferCreateStatic xMessageBufferSend xMessageBufferS
  • ubuntu系统X86环境下配置TX2的ARM环境的交叉编译链

    总步骤 安装qtcreator的IDE安装aarch64 linux gnu g 43 43 交叉编译链下载Qt库的源码 xff0c 配置编译选项 xff0c 编译生成针对TX2的ARM环境的qmake工具配置qtcreator xff0c
  • ROS中Eigen库的引用

    在CmakeList txt中添加两个地方 find package Eigen REQUIRED include directories Eigen INCLUDE DIR 如果找不到Eigen xff0c 我们将第一句改成 find p
  • ROS tf使用

    1 静态tf发布 lt node pkg 61 34 tf 34 type 61 34 static transform publisher 34 name 61 34 link1 link2 broadcaster 34 args 61
  • SLAM算法配置——使用Realsense D435i结合ROS跑通ORB-SLAM2的RGB-D节点

    ORB SLAM2源地址 配置环境依赖 Pangolin xff0c OpenCV xff0c Eigen3 xff0c DBoW2 and g2o xff08 源代码里有 xff0c 不用自己装 xff09 xff0c ROS xff08
  • 代码编写及阅读规范

    阅读常识 1 C语言中在函数名或关键字前加下划线 一般情况是标识该函数或关键字是自己内部使用的 xff0c 与提供给外部的接口函数或关键字加以区分 规范 综述 C 43 43 是一门十分复杂并且威力强大的语言 xff0c 使用这门语言的时候
  • 流媒体开发之路

    其实很早之前 xff0c 就想写属于自己的博客 xff0c 大二就有了CSDN账号 xff0c 很讽刺的是 xff0c 工作几年了 xff0c 账号里面的内容竟然和小鲜肉脸一样干净 干净的让人尴尬 回顾自己的这几年的开发之路 xff0c 接