使用EasyDarwin+FFmpeg实现rtsp推流

article/2025/9/24 15:07:09

一、背景
​ 最近在学习ffmpeg的基本操作,ffmpeg功能非常强大,可以运行音频和视频多种格式的录影、转换、流功能,包含了libavcodec——这是一个用于多个项目中音频和视频的解码器库,以及libavformat——一个音频与视频格式转换库

可以利用ffmpeg对媒体文件进行拼接,转换,录制,截图,推流等等,本次采用ffmpeg将本地视频文件推送至流媒体服务器然后进行 html拉流播放的操作,需要的配置和准备如下。

name    备注
Ffmpeg            推流工具
EasyDarwin     流媒体服务
Centos7    服务器
二、安装EasyDarwin
EasyDarwin是一个高性能开源RTSP流媒体服务器,基于go语言研发,维护和优化RTSP推模式转发、RTSP拉模式转发、录像、检索、回放、关键帧缓存、秒开画面、RESTful接口、WEB后台管理、分布式负载均衡等方面!

媒体服务在easydarwin的官网中下载符合服务器的版本进行安装

wget https://github.com/EasyDarwin/EasyDarwin/releases/download/v8.1.0/EasyDarwin-linux-8.1.0-1901141151.tar.gz
tar -zvxf EasyDarwin-linux-8.1.0-1901141151.tar.gz
cd EasyDarwin-linux-8.1.0-1901141151/


进入安装目录后有一个easydarwin.ini 文件 需要配置服务账号和端口等。

[http]
port=3000
default_username=admin
default_password=admin[rtsp]
port=2379; rtsp 超时时间,包括RTSP建立连接与数据收发。
timeout=28800


 
; 是否使能gop cache。如果使能,服务器会缓存最后一个I帧以及其后的非I帧,以提高播放速度。但是可能在高并发的情况下带来内存压力。
gop_cache_enable=1
 
; 是否使能向服务器推流或者从服务器播放时验证用户名密码. [注意] 因为服务器端并不保存明文密码,所以推送或者播放时,客户端应该输入密码的md5后的值。
; password should be the hex of md5(original password)
authorization_enable=0
 
; 是否使能推送的同事进行本地存储,使能后则可以进行录像查询与回放。
save_stream_to_local=0
 
;easydarwin使用ffmpeg工具来进行存储。这里表示ffmpeg的可执行程序的路径
ffmpeg_path=/Users/ze/Downloads/ffmpeg-20180719-9cb3d8f-macos64-shared/bin/ffmpeg
 
;本地存储所将要保存的根目录。如果不存在,程序会尝试创建该目录。
m3u8_dir_path=/Users/ze/Downloads/EasyDarwinGoM3u8
 
;切片文件时长。本地存储时,将以该时间段为标准来生成ts文件(该时间+一个I帧间隔),单位秒。
;如果需要直播,这个值设小点,但是这样会产生很多ts文件;如果不需要直播,只要存储的话,可设大些。
ts_duration_second=6
 
;key为拉流时的自定义路径,value为ffmpeg转码格式,比如可设置为-c:v copy -c:a copy,表示copy源格式;default表示使用ffmpeg内置的输出格式,会进行转码。
/stream_265=default
对于rtsp推流测试和使用来说只需要关注http服务部分的端口号和账户,rtsp部分的端口配置。在配置的时候,需要注意服务器的端口是以及开放的。

在安装目录下直接运行.start.sh脚本就可以启动 EasyDarwin服务,由于EasyDarwin是用golang编写,因此需求服务器配置golang安装环境。

 启动之后打开在浏览器打开 服务器ip:端口

在没有推流前是看不到任何信息。

三、Ffmpeg推流操作

进入FFmpeg Releases · BtbN/FFmpeg-Builds · GitHub 官网下载对应的版本,解压后bin目录内容如下。

FFmpeg 是领先的多媒体框架,能够解码、编码、 转码、复用、解复用、流、过滤和播放几乎所有人类和机器创建的东西    About FFmpeg
ffplay    FFplay 是一个使用 FFmpeg 库和 SDL 库的非常简单和便携的媒体播放器。它主要用作各种 FFmpeg API 的测试平台。    ffplay Documentation
ffprobe    ffprobe可以从媒体流收集媒体信息,并打印出开发人员可以读的格式,也可以把ffprobe理解为流媒体的分析工具;使用ffprobe可以查看流媒体中包含的容器,以及容器中包含的流媒体的格式和类型    ffprobe 简介 - 简书
 三个包的功能各不相同,其功能很强大。具体细节可以参考官网

// 推送本地媒体文件
ffmpeg.exe -re -stream_loop -1 -i 1out.mp4 -vcodec h264 -f rtsp rtsp://49.232.162.xxx:2379/test
// 录屏推流
ffmpeg -f gdigrab -i desktop  -r 15 -vf scale=640:360 -rtsp_transport tcp -vcodec h264 -f rtsp rtsp://localhost/capture
// 录屏
ffmpeg -f gdigrab -i desktop -f mp4 out.mp4


 使用该命令将本地的1out.mp4视频推送到推流服务器上,注意本次采用格式是 rtsp,当然你可以指定其他的格式,推送的地址注意端口为在媒体服务的指定打开的端口。

当流推成功后在EasyDarwin 的服务地址可以看见对应的推流记录。

 四、拉流操作

在推流成功后就可以进行拉流操作 ,在推流列表中复制播放地址,复制出来后就可以使用VLC工具播放了

当播放正常的时候在 EasyDarwin服务的拉流列表里面就能看到对应的拉流记录


http://chatgpt.dhexx.cn/article/7KcKPcF7.shtml

相关文章

windows 10 安装EasyDarwin流服务器推流、本地存储

1、EasyDarwin介绍 EasyDarwin 是一款开源的、高性能的rstp流媒体服务器,基于go语言开发。主要功能有:支持rtsp推流分发、支持rtsp拉流分发、录像、检索、回访、关键帧缓存、秒开画面、Restful接口、web后台管理、分布式负载均衡等特点。 2、安装部署&a…

从零开始搭建EasyDarwin环境——Windows系统开发环境Golang的搭建

EasyDarwin在语言上服务端使用的是Golang,前端网页是Vue,因此我们需要有Golang和node的开发环境。上一篇我们介绍了Linux环境下的搭建,本章我们将说明一下如何在Windows下搭建起Golang环境。 一、下载 Go包 Go的官方网站:http://…

EasyDarwin源码分析(三)——rtsp-client

rtsp-client.go 这个模块主要实现了客户端的拉流功能。也就是在网页上点击“拉流分发”按钮后,easydarwin会向用户填写的源地址拉流,然后再转发出去,在向源地址拉流的时候,easydarwin相当于是一个rtsp客户端。所以这里使用rtsp-c…

EasyDarwin源码分析(一)——main.go

main.go ​ easydarwin源码的代码量不是很多,主要的代码也就集中在下面的几个文件夹中,核心业务的代码也就主要集中在rtsp包中。 ​ 而且用Go语言写的代码,不像springboot那样,你在读源码前至少要对Springboot框架有一定的学习&a…

关于EasyDarwin二次开发编译后无法以服务启动的问题

问题描述: 在win7上二次开发EasyDarwin后,编译出的EasyDarwin.exe运行正常,或是使用ServiceInstall-EasyDarwin.exe在系统中注册服务,启动服务也正常。 于是打包将其部署在win server 2008上,发现如果直接运行EasyDar…

EasyDarwin接口的使用——使用C++编写客户端实现与EasyDarwin服务器的交互

EasyDarwin提供了接口供客户端使用,以实现客户端与其的交互。比如,根据EasyDarwin的8.1.0版本的接口文档,有获取推流列表的接口如下所示: 我们可以测试一下上述接口。首先启动EasyDarwin服务器,启动后在浏览器&#xf…

EasyDarwin的交叉编译

easyDarwin的交叉编译 前言一、EasyDarwin简介二、配置环境介绍三、交叉编译过程1.go环境的搭建2.编译 后记 前言 最近项目有个需求是在嵌入式设备中运行一个RTSP服务器,满足推流到该服务器后,其他终端设备能够从这个RTSP服务器中拉RTSP流出来。找来找去…

EasyDarwin 流服务器搭建及相关软件教程

一、产品 运行 exe 文件 启动 服务器 双击 运行 EasyDarwin.exe 会出现如下界面: 在 浏览器打开 http://192.168.10.80:10008 2.解压ffmpeg 添加环境变量:复制C:\SoftWare\ffmpeg-6.0-essentials_build\bin路径,添加环境变量中 的用户变…

EasyDarwin —— ubuntu搭建rtsp服务,使用FFmpeg进行rtsp推拉流

开源流媒体服务器 EasyDarwin是由国内开源流媒体团队开发和维护的一款开源流媒体平台框架,从2012年12月创建并发展至今,从原有的单服务的流媒体服务器形式,扩展成现在的云平台架构的开源项目,更好地帮助广大流媒体开发者和创业型企…

EasyDarwin测试

EasyDarwin是由国内开源流媒体团队维护的一款开源流媒体平台框架,开发语言是go语言。本文主要使用它作为RTSP服务器使用,并以此进行测试。方便之后记录。 (1)软件获取(自行下载,具体代码编译方式&#xff0…

流媒体开发之EasyDarwin搭建rtsp server

0 背景 EasyDarwin 旭帆科技开源的流媒体服务器软件,EasyDarwin 社区专注于传统安防(RTSP/RTP/Onvif)流媒体技术,能够帮助开发者快速搭建流媒体服务平台,更快、更简单地实现流媒体直播与点播功能。本文主要介绍 rtsp …

EasyDarwin ffmpeg+EasyDarwin开源流媒体服务器平台试用笔记(视频流rtsp)

服务 Github https://github.com/EasyDarwin/EasyDarwin , server will invoking ffmpeg. 1. download server 下载EasyDarwin-windows-8.1.0-1901141151 双击EasyDarwin.exe 访问http://127.0.0.1:10008/#/ 2. download FFmpeg 下载FFmpeg : https://github.com/BtbN…

从零开始搭建EasyDarwin环境——linux系统共享目录实现

EasyDarwin是一款高性能开源RTSP流媒体服务器,基于Go语言研发,维护和优化:RTSP推模式转发、RTSP拉模式转发、录像、检索、回放、关键帧缓存、秒开画面、RESTful接口、Web后台管理、分布式负载均衡。EasyDarwin从最初的c到后面的nodejs再到现在…

使用EasyDarwin搭建Rtsp Server从大华摄像头拉流进行多路分发

使用EasyDarwin搭建Rtsp Server从大华摄像头拉流进行多路分发 问题服务搭建推流命令大华摄像头配置 问题 大华摄像头(型号: DH-IPC-HDW1235C-A 2.8MM 200万高清网络摄像机 )目前支持20路连接,实际使用测试过程中,只能…

EasyDarwin —— windows搭建rtsp服务,使用FFmpeg进行rtsp推拉流

开源流媒体服务器 EasyDarwin是由国内开源流媒体团队开发和维护的一款开源流媒体平台框架,从2012年12月创建并发展至今,从原有的单服务的流媒体服务器形式,扩展成现在的云平台架构的开源项目,更好地帮助广大流媒体开发者和创业型企业快速构建流媒体服务平台,更快、更简单地…

简单的流媒体服务器(EasyDarwin的安装搭建)

再项目中需要用到简单的视频播放,想着干脆搭建一个流媒体服务器,后期做视频点播 直播包括视频服务器的负载,所以索性开始自己探索搭建视频流媒体服务器,用于存储和传输视频资源 相关概念 流媒体 流媒体(Streaming Me…

【ZYNQ】ZYNQ7000 私有定时器及其驱动应用示例

定时器简介 在 ZYNQ 嵌入式系统中,定时器的资源是非常丰富的,每个 Cortex-A9 处理器都有各自独立的 32 位私有定时器和 32 位看门狗定时器,这两个 CPU 同时共享一个 64 位的全局定时器(GT)。 系统框图 私有定时器 特…

ZYNQ开发系列——使用AXI4LITE接口进行PS和PL交互

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 ZYNQ开发系列——使用AXI4LITE接口进行PS和PL交互 前言PS端AXI接口AXI4LITE slave模块的设计后记前言 前面我们讲到使用AXI4LITE来作为总线接口来实现PS和PL的交互。同时我们为了支持《从零开始研发GPS接收…

Xilinx ZYNQ简介

ZYNQ 是赛灵思公司(Xilinx)推出的新一代全可编程片上系统(APSoC),它将处理器的软件可编程性与 FPGA 的硬件可编程性进行完美整合,以提供无与伦比的系统性能、灵活性与可扩展性。与传统 SoC解决方案不同的是…

ZYNQ ARM核之SCU

Snoop Control Unit,窥探控制单元,详情见UG585。SCU主要是解决ARM的L1和L2的缓存协调(因为两个processor的缓存是共用的)和AXI总线的ACP存取的,也就是DMA等高速中断需求的外设。 SCU 块将两个 Cortex-A9 处理器连接到内存子系统,并包含智能管…