Code Monkey home page Code Monkey logo

easydarwin / easydarwin Goto Github PK

View Code? Open in Web Editor NEW
6.5K 429.0 2.2K 247.1 MB

open source、high performance、industrial rtsp streaming server,a lot of optimization on streaming relay,KeyFrame cache,RESTful,and web management,also EasyDarwin support distributed load balancing,a simple streaming media cloud platform architecture.高性能开源RTSP流媒体服务器,基于go语言研发,维护和优化:RTSP推模式转发、RTSP拉模式转发、录像、检索、回放、关键帧缓存、秒开画面、RESTful接口、WEB后台管理、分布式负载均衡,基于EasyDarwin构建出了一套基础的流媒体云视频平台架构!

Home Page: http://www.easydarwin.org/

JavaScript 31.84% CSS 3.51% Vue 16.09% HTML 10.02% Shell 0.06% Go 37.77% Less 0.50% SCSS 0.11% Dockerfile 0.10%
easydarwin easycms easycamera rtsp-server rtsp-relay rtsp-annouce

easydarwin's Introduction

EasyDarwin开源流媒体服务器

主要功能特点

安装部署

  • 直接下载运行Release包

  • 直接运行(Windows)

    EasyDarwin.exe

    Ctrl + C 停止服务

  • 以服务启动(Windows)

    ServiceInstall-EasyDarwin.exe

    以 ServiceUninstall-EasyDarwin.exe 卸载 EasyDarwin 服务

  • 直接运行(Linux/macOS)

      cd EasyDarwin
      ./easydarwin
      # Ctrl + C
    
  • 以服务启动(Linux/macOS)

      cd EasyDarwin
      ./start.sh
      # ./stop.sh
    

二次开发

准备工具

    # go tools
    go get -u -v github.com/kardianos/govendor
    go get -u -v github.com/penggy/gobuild

    # npm tools
    npm i -g apidoc
    npm i -g rimraf

编译命令

  • 获取代码

      cd $GOPATH/src/github.com
      mkdir EasyDarwin && cd EasyDarwin
      git clone https://github.com/EasyDarwin/EasyDarwin.git --depth=1 EasyDarwin
      cd EasyDarwin
    
  • 以开发模式运行

      npm run dev
    
  • 以开发模式运行前端 Run as dev mode

      npm run dev:www       
    
  • 编译前端 Build www

      cd web_src && npm i
      cd ..
      npm run build:www
    
  • 编译 Windows 版本 Build windows version

      npm run build:win
    
  • 编译 Linux/macOS 版本 (在 bash 环境下执行) Build linux/macOS version

      npm run build:lin       
    
  • 清理编译文件 Clean

      npm run clean 
    

技术支持

  • 邮件:[email protected]

  • QQ交流群:965773206

  • EasyDarwin开源流媒体服务器是属于EasyDarwin开源团队的免费产品,大家免费使用,同时,EasyDarwin开源团队也能提供相应的收费技术咨询、技术服务和技术定制,谢谢大家支持!

获取更多信息

EasyDarwin开源项目:www.EasyDarwin.org

Copyright © EasyDarwin.org Team 2012-2024

easydarwin's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

easydarwin's Issues

Debian 8.0 easyDarwin error

easyDarwin pull ip camra rtsp stream, vlc can't play. Darwin error log:

[URL:"rtsp://admin:[email protected]:6554/Streaming/Channels/101?transportmode=unicast"]: Failed to initiate the "video/H264" subsession: getsockname() error: Bad file descriptor
[URL:"rtsp://admin:[email protected]:6554/Streaming/Channels/101?transportmode=unicast"]: Failed to start playing session: No RTSP session is currently in progress

EasyDarwin 进行HLS直播,长时间(1小时以上)后视频切片卡顿

EasyDarwin 进行HLS直播,长时间(1小时以上)后视频切片卡顿,跳帧。
切片数4,时长4,但时间长之后录制的ts切片时长逐渐变长。
当前测试环境进行了两个大华的RTSP监控转HLS就会出现这样的问题,测试一晚上之后两条线路的视频切片均出现此问题。

对被测系统EasyDarwin压力测试,被测系统服务异常退出。

1.测试环境:
硬件:
Intel(R) Xeon(R) CPU E5430 @ 2.66GHz 2处理器 2 核心
内存:4G
软件:
操作系统:
CentOS release 6.4 (Final)
Kernel: 2.6.32-358.el6.x86_64

服务以调试模式启动:easydarwin -c ../WinNTSupport/easydarwin.xml -d

场景:
模拟2个user对被测系统循环发送rtsp请求,大概在2-3分钟时间左右,被测系统服务异常退出。

#S->C:
#time: ms=336434 date=Thu, 26 Nov 2015 05:38:03 GMT
RTSP/1.0 200 OK\r\n
Server: EasyDarwin/7.0.2 (Build/15.1006; Platform/Linux; Release/EasyDarwin; State/Development; )\r\n
Cseq: 6\r\n
Session: 9089926291062351291\r\n
Range: npt=0.00000-30.04500\r\n
RTP-Info: url=rtsp://192.168.1.100:554/bs30smuxed.mp4/trackID=65536;seq=10103;rtptime=1628845141,url=rtsp://192.168.1.100:554/bs30smuxed.mp4/trackID=65537;seq=56254;rtptime=1105339346\r\n
段错误 (core dumped)```

注:模拟1个user对被测系统循环发送rtsp请求,运行20分钟,被测系统正常响应请求,无异常。

EasyDarwin-7.0.5 ubuntu 14.04下编译错误问题

EasyDarwin-7.0.5-Build16.0518 中 EasyCMS 编译出错;./Buildit x64 如下:

In file included from Server.tproj/HTTPSessionInterface.h:27:0,
from Server.tproj/HTTPSession.h:25,
from Server.tproj/HTTPSession.cpp:12:
../CommonUtilitiesLib/OSRefTableEx.h:47:8: warning: extra tokens at end of #endif directive [enabled by default]
#endif OSREFTABLEEX_H
^
In file included from Server.tproj/HTTPSession.cpp:13:0:
Server.tproj/QTSServerInterface.h:64:20: fatal error: hiredis.h: No such file or directory
#include"hiredis.h"
^
compilation terminated.
make[1]: *** [build/x64/GNU-Linux/Server.tproj/HTTPSession.o] Error 1
make[1]: Leaving directory `/root/sources/EasyDarwin-7.0.5/EasyCMS'
make: *** [.build-conf] Error 2

请问如何解决呢,谢谢!

easydarwin使用推模式,客户端刚开始播放的第一秒花屏

问题描述:
easydarwin使用推模式,客户端刚开始播放的第一秒花屏
出现环境:
darwin服务器是在win7下运行的; 客户端使用的是vlc; 全部组件都是在局域网的环境下; ffmpeg的命令是:ffmpeg -rtsp_transport tcp -i "rtsp://admin:[email protected]:554/Streaming/Channels/1?transportmode=unicast&profile=Profile_1" -f rtsp rtsp://172.16.8.114/test.sdp; 摄像头使用的是海康的摄像头。

为什么release没有了

然而下载最新的代码编译报错?

    char* ToUpper() { for (UInt32 x = 0; x < Len; x++) Ptr[x] = toup...
                           ^
    ../CommonUtilitiesLib/StrPtrLen.h:154:25: error: unknown type name 'UInt32'
            StrPtrLenDel(char* sp, UInt32 len) : StrPtrLen(sp, len) {}
                                   ^
    ../CommonUtilitiesLib/StrPtrLen.h:155:20: error: cannot initialize object
          parameter of type 'StrPtrLen' with an expression of type 'StrPtrLenDel'
            ~StrPtrLenDel() { Delete(); }
                              ^~~~~~
    In file included from ../HTTPUtilitiesLib/HTTPProtocol.cpp:25:
    ../HTTPUtilitiesLib/HTTPProtocol.h:41:9: error: unknown type name 'UInt32'
    typedef UInt32 HTTPVersion;
            ^
    ../HTTPUtilitiesLib/HTTPProtocol.h:53:9: error: unknown type name 'UInt32'
    typedef UInt32  EasyStreamType;
            ^
    ../HTTPUtilitiesLib/HTTPProtocol.h:70:9: error: unknown type name 'UInt32'
    typedef UInt32 HTTPMethod;
            ^
    fatal error: too many errors emitted, stopping now [-ferror-limit=]
    20 errors generated.
    make[1]: *** [build/x64/GNU-Linux/_ext/b9fc5c32/HTTPProtocol.o] Error 1
    make: *** [.build-conf] Error 2

搭建HLS直播后产生的m3u8播放时停留在第一帧

操作系统:CentOS 7
反向代理:nginx 1.10.0
问题描述:
你好,我参考github上的文档搭建的流媒体服务,VLC播放器可以流畅播放,网页中播放的时候会始终停在第一帧,我使用的网页播放的工具是hls.js/video.js/clappr.js 还有safari浏览器。请问应该如何解决呢?

在嵌入式端运行发现一个BUG

在嵌入式端编译由于 编译时加了 -DEASY_DEVICE 选项,所以没有用epoll 。
而在RunServer.cpp里面是这样写的

if !MACOSXEVENTQUEUE

ifndef Win32

::epollInit();

else

::select_startevents();//initialize the select() implementation of the event queue        

endif

endif

程序并没有初始化select要用的变量。 所以一启动就会出现段错误。

基于 UDP 开发视频流设置

远端RTSP服务器 使用UDP传输发送H264视频,PC使用EasyPusher_RTSP拉流并发送给EasyDarwin。
VLC 设置 --no-rtsp-tcp 播放正常。
EasyPusher_RTSP 拉流Log显示正常,但是EasyDarwin 获取的 sdp 无法播放视频。

Can't Forward normal rtsp stream

Now i use easydarwin edit device.xml, add camera rtsp url, can forward ip camera rtsp live stream, vlc can play it.
But if i edit device.xml, and add one rule to play normal rtsp url, It can't play.

rtsp url :rtsp://admin:[email protected]:6554/Streaming/tracks/101?starttime=20150710t082010z&endtime=20150710t084510z

I want to know if current forward module only support camera?
why not support normal rtsp forwarding?

拉模式转发模块EasyRelayModule可以单独拆出来用吗?

我的毕业设计要用到RTSP视频转发功能(ffmpeg推送,Darwin Streaming Server转发,vlc播放),虽然老师的要求是直接使用Darwin Streaming Server就可以,但是我觉得如果可能的话还是自己写个简单的转发程序比较好。

我看了下RTSP和RTP协议,实在是太复杂了,恰好看到这个开源项目,于是想问问拉模式转发模块EasyRelayModule可以单独拆出来用吗,能够实现rtsp转发就好。谢谢各位。

easyCMS在build时报错

centos7,easyv0.7.5版,先是报错hiredis.h没找到,我把hiredis.h拷到这个目录下,然后是报QTSSAuthModule.h这个文件找不到,同样是将这个文件拷到了当前目录,然后是报QTSServer.cpp中没有名为GetRunGroupName的成员,这下我就不知道该怎么解决了,

转发问题

用easydarwin做拉模式转发,在所有接收端断开后(正常的和非正常的),是否可以自动停止拉网络摄像头的数据?

建议

在每个版本归档的时候,能把 EasyCMS 与 EasyDarwin 这两个项目同时编译出来吗?我看到7.0.3的时候编译好得归档版本好像只有 EasyDarwin 这一个,EasyDarwin这个项目没有编译现成的版本。手上没有Windows的电脑,不方便编译

EasyDarwin api/getrtsppushsessions bug.

I started easydarwin program, and ran an application to call api/getrtsppushsessions interfaces every second, several hours later, the interface did not provide the rtsppushsessions content any more.
It seems that this bug has relation with "QSHeap.cpp".
Here is the -d output when the interface is called.
1234
ps: easydarwin edition is release 7.0.5,os is windows 2008 r2 x64.
May this feedback helps.
Thanks!

v7.1.16.1111 无法正常结束推流

rtsp 在结束推流发送teardown请求时,服务端会报 500错误

#C->S:
#time: ms=31538 date=Mon, 05 Dec 2016 05:53:50 GMT
#server: ip=172.28.1.208 port=2554
#client: ip=172.28.1.181 port=56218
OPTIONS rtsp://172.28.1.208:2554/1.sdp RTSP/1.0\r\n
CSeq: 1\r\n
User-Agent: Lavf56.40.101\r\n
\r\n

#S->C:
#time: ms=31538 date=Mon, 05 Dec 2016 05:53:50 GMT
RTSP/1.0 200 OK\r\n
Server: EasyDarwin/7.1 (Build/16.1111; Platform/Linux; Release/EasyDarwin; State/Development; )\r\n
Cseq: 1\r\n
Public: DESCRIBE, SETUP, TEARDOWN, PLAY, PAUSE, OPTIONS, ANNOUNCE, RECORD\r\n
\r\n

#C->S:
#time: ms=31540 date=Mon, 05 Dec 2016 05:53:50 GMT
#server: ip=172.28.1.208 port=2554
#client: ip=172.28.1.181 port=56218
ANNOUNCE rtsp://172.28.1.208:2554/1.sdp RTSP/1.0\r\n
Content-Type: application/sdp\r\n
CSeq: 2\r\n
User-Agent: Lavf56.40.101\r\n
Content-Length: 492\r\n
\r\n

#S->C:
#time: ms=31580 date=Mon, 05 Dec 2016 05:53:50 GMT
RTSP/1.0 200 OK\r\n
Server: EasyDarwin/7.1 (Build/16.1111; Platform/Linux; Release/EasyDarwin; State/Development; )\r\n
Cseq: 2\r\n
\r\n

#C->S:
#time: ms=31582 date=Mon, 05 Dec 2016 05:53:50 GMT
#server: ip=172.28.1.208 port=2554
#client: ip=172.28.1.181 port=56218
SETUP rtsp://172.28.1.208:2554/1.sdp/streamid=0 RTSP/1.0\r\n
Transport: RTP/AVP/UDP;unicast;client_port=10448-10449;mode=record\r\n
CSeq: 3\r\n
User-Agent: Lavf56.40.101\r\n
\r\n

向redis中添加推流名称1
QTSSReflectorModule.cpp:DoSetup Session =0x7fdbd0000f20 refcount=1

#S->C:
#time: ms=31586 date=Mon, 05 Dec 2016 05:53:50 GMT
RTSP/1.0 200 OK\r\n
Server: EasyDarwin/7.1 (Build/16.1111; Platform/Linux; Release/EasyDarwin; State/Development; )\r\n
Cseq: 3\r\n
Cache-Control: no-cache\r\n
Session: 7776565544653996933\r\n
Date: Mon, 05 Dec 2016 05:53:50 GMT\r\n
Expires: Mon, 05 Dec 2016 05:53:50 GMT\r\n
Transport: RTP/AVP/UDP;unicast;mode=record;source=172.28.1.208;client_port=10448-10449;server_port=6972-6973\r\n
\r\n

#C->S:
#time: ms=31589 date=Mon, 05 Dec 2016 05:53:50 GMT
#server: ip=172.28.1.208 port=2554
#client: ip=172.28.1.181 port=56218
SETUP rtsp://172.28.1.208:2554/1.sdp/streamid=1 RTSP/1.0\r\n
Transport: RTP/AVP/UDP;unicast;client_port=10450-10451;mode=record\r\n
CSeq: 4\r\n
User-Agent: Lavf56.40.101\r\n
Session: 7776565544653996933\r\n
\r\n

QTSSReflectorModule.cpp:DoSetup Session =0x7fdbd0000f20 refcount=1

#S->C:
#time: ms=31589 date=Mon, 05 Dec 2016 05:53:50 GMT
RTSP/1.0 200 OK\r\n
Server: EasyDarwin/7.1 (Build/16.1111; Platform/Linux; Release/EasyDarwin; State/Development; )\r\n
Cseq: 4\r\n
Session: 7776565544653996933\r\n
Cache-Control: no-cache\r\n
Date: Mon, 05 Dec 2016 05:53:50 GMT\r\n
Expires: Mon, 05 Dec 2016 05:53:50 GMT\r\n
Transport: RTP/AVP/UDP;unicast;mode=record;source=172.28.1.208;client_port=10450-10451;server_port=6974-6975\r\n
\r\n

#C->S:
#time: ms=31591 date=Mon, 05 Dec 2016 05:53:50 GMT
#server: ip=172.28.1.208 port=2554
#client: ip=172.28.1.181 port=56218
RECORD rtsp://172.28.1.208:2554/1.sdp RTSP/1.0\r\n
Range: npt=0.000-\r\n
CSeq: 5\r\n
User-Agent: Lavf56.40.101\r\n
Session: 7776565544653996933\r\n
\r\n

QTSSReflectorModule.cpp:DoPlay Session =0x7fdbd0000f20 refcount=1

#S->C:
#time: ms=31591 date=Mon, 05 Dec 2016 05:53:50 GMT
RTSP/1.0 200 OK\r\n
Server: EasyDarwin/7.1 (Build/16.1111; Platform/Linux; Release/EasyDarwin; State/Development; )\r\n
Cseq: 5\r\n
Session: 7776565544653996933\r\n
RTP-Info: url=rtsp://172.28.1.208:2554/1.sdp/streamid=0,url=rtsp://172.28.1.208:2554/1.sdp/streamid=1\r\n
\r\n

#C->S:
#time: ms=43913 date=Mon, 05 Dec 2016 05:54:02 GMT
#server: ip=172.28.1.208 port=2554
#client: ip=172.28.1.181 port=56218
TEARDOWN rtsp://172.28.1.208:2554/1.sdp RTSP/1.0\r\n
CSeq: 6\r\n
User-Agent: Lavf56.40.101\r\n
Session: 7776565544653996933\r\n
\r\n

#S->C:
#time: ms=43913 date=Mon, 05 Dec 2016 05:54:02 GMT
RTSP/1.0 500 Internal Server Error\r\n
Server: EasyDarwin/7.1 (Build/16.1111; Platform/Linux; Release/EasyDarwin; State/Development; )\r\n
Cseq: 6\r\n
Session: 7776565544653996933\r\n
Connection: Close\r\n
Content-length: 62\r\n
\r\n

There is no QTSS API module installed to process this request.RTSPSession fObjectHolders:1 !
RTSPSessionHandler::Release()
~RTSPSessionHandler()
没有客户端观看当前转发媒体
QTSSReflectorModule.cpp:RemoveOutput Session =0x7fdbd0000f20 refcount=0
QTSSReflectorModule.cpp:RemoveOutput UnRegister and delete session =0x7fdbd0000f20 refcount=0
从redis中删除推流名称1
RTSPSession fObjectHolders:0 !
RTSPSesion Run Return -1

centos7 出现段错误

./easydarwin -c ../WinNTSupport/easydarwin.xml -d
运行后
windows下用 EasyIpCamera 连接 连通了
然后再用vlc播放rtsp 就出现段错误了

docker封装easydarwin

用easydarwin 作为rtsp服务器接受live555推送的视频流。
这一步没问题。
将它封装到docker里面,easydarwin报错404.
我映射的端口是-p 8554:8554 -p 8080:8080
具体命令
docker run --rm -ti -v /home/zyf/video/:/data1 -p 8554:8554 -p 8554:8554/udp -p 8080:8080 -p 8080:8080/udp chanyuepo/easydarwin:v6
我想问一下easydarwin有没有docker封装的例子,或者端口这一块是否有问题。
谢谢

OSThread退出断言

继承OSThread的类,如果未Start,或者Start后线程主函数Entry退出,释放该线程继承类时,会导致断言(OSThread.cpp 168行)

CentOS下编译出错

在64位CentOS-7.2.1511下使用gcc-4.8.2编译Easydarwin 出错:
全是undefined reference。

EasyProtocol.cpp:(.text+0x1267): undefined reference to `EasyDarwin::Protocol::EasyProtocol::GetBodyValue(char const*)'

為甚麼EasyDarwin會推錯streaming給client??

問題是這樣的:
IPCam A -> EasyPusher to EasyDarwin <-> Client A play with VLC (123.sdp)
同時間
Client B也向EasyDarwin要求撥放IPCam B的456.sdp,抓封包看456.sdp也確實推到EasyDarwin了,RTSP signaling也是對的,可是撥出來卻是123.sdp的內容!?
但是,如果IPCam A 的streaming是用FFMpeg推上去的話,就不會有這個問題,
還請版主解惑, Thanks!

这是一个BUG?

使用最新版本EasyDarwin的代码部署成功之后发现在配置web里的HLS直播配置无效,通过调试发现
最新的EasyDarwin代码已经去掉了HLS模块,模块初始化时没有初始化HLS模块,导致以下语句获取不到Hls模块对象:
sHLSModulePrefs = QTSSModuleUtils::GetModulePrefsObject(QTSSModuleUtils::GetModuleObjectByName("EasyHLSModule"));
这是一个bug吗?

latest easydarwin version compile failed

mkdir -p build/x64/GNU-Linux/Server.tproj
rm -f "build/x64/GNU-Linux/Server.tproj/QTSSUserProfile.o.d"
g++ -pipe -Wall -Wno-format-y2k -c -O2 -DCOMMON_UTILITIES_LIB -DDSS_USE_API_CALLBACKS -D_REENTRANT -D__USE_POSIX -D__linux__ -I../HTTPUtilitiesLib -I../CommonUtilitiesLib -IServer.tproj -IQTFileLib/ -IRTPMetaInfoLib/ -IPrefsSourceLib/ -IAPIStubLib/ -IAPICommonCode/ -IRTCPUtilitiesLib/ -IRTSPClientLib/ -IAPIModules/QTSSFileModule/ -IAPIModules/QTSSHttpFileModule/ -IAPIModules/QTSSAccessModule/ -IAPIModules/QTSSAccessLogModule/ -IAPIModules/QTSSPOSIXFileSysModule -IAPIModules/QTSSAdminModule/ -IAPIModules/QTSSReflectorModule/ -IAPIModules/QTSSWebStatsModule/ -IAPIModules/QTSSWebDebugModule/ -IAPIModules/QTSSFlowControlModule/ -IAPIModules/QTSSMP3StreamingModule/ -IAPIModules/EasyHLSModule -IAPIModules/EasyRelayModule -IInclude -I. -I../Include -I../EasyProtocol/Include -I../EasyProtocol/jsoncpp/include -include ../Include/PlatformHeader.h -MMD -MP -MF "build/x64/GNU-Linux/Server.tproj/QTSSUserProfile.o.d" -o build/x64/GNU-Linux/Server.tproj/QTSSUserProfile.o Server.tproj/QTSSUserProfile.cpp
mkdir -p build/x64/GNU-Linux/Server.tproj
rm -f "build/x64/GNU-Linux/Server.tproj/QTSServer.o.d"
g++ -pipe -Wall -Wno-format-y2k -c -O2 -DCOMMON_UTILITIES_LIB -DDSS_USE_API_CALLBACKS -D_REENTRANT -D__USE_POSIX -D__linux__ -I../HTTPUtilitiesLib -I../CommonUtilitiesLib -IServer.tproj -IQTFileLib/ -IRTPMetaInfoLib/ -IPrefsSourceLib/ -IAPIStubLib/ -IAPICommonCode/ -IRTCPUtilitiesLib/ -IRTSPClientLib/ -IAPIModules/QTSSFileModule/ -IAPIModules/QTSSHttpFileModule/ -IAPIModules/QTSSAccessModule/ -IAPIModules/QTSSAccessLogModule/ -IAPIModules/QTSSPOSIXFileSysModule -IAPIModules/QTSSAdminModule/ -IAPIModules/QTSSReflectorModule/ -IAPIModules/QTSSWebStatsModule/ -IAPIModules/QTSSWebDebugModule/ -IAPIModules/QTSSFlowControlModule/ -IAPIModules/QTSSMP3StreamingModule/ -IAPIModules/EasyHLSModule -IAPIModules/EasyRelayModule -IInclude -I. -I../Include -I../EasyProtocol/Include -I../EasyProtocol/jsoncpp/include -include ../Include/PlatformHeader.h -MMD -MP -MF "build/x64/GNU-Linux/Server.tproj/QTSServer.o.d" -o build/x64/GNU-Linux/Server.tproj/QTSServer.o Server.tproj/QTSServer.cpp
Server.tproj/QTSServer.cpp:67:27: fatal error: EasyCMSModule.h: No such file or directory
#include "EasyCMSModule.h"
^
compilation terminated.
make[1]: *** [build/x64/GNU-Linux/Server.tproj/QTSServer.o] Error 1
make[1]: Leaving directory `/home/rocky/DistributedVideoStructurization/thirdparty/EasyDarwin/EasyDarwin'

MacOS 如何编译?

错误log如下:

"/Library/Developer/CommandLineTools/usr/bin/make"  -f nbproject/Makefile-x64.mk x64/libCommonUtilitiesLib.a
mkdir -p build/x64/GNU-Linux/_ext/dfc17a71
rm -f "build/x64/GNU-Linux/_ext/dfc17a71/OSMemory.o.d"
g++ -fPIC -std=c++11   -c -O2 -D_REENTRANT -D__USE_POSIX -D__linux__ -I. -I../Include -I../EasyDarwin/APICommonCode -I../EasyDarwin/APIStubLib -I../EasyDarwin/RTPMetaInfoLib -I../EasyProtocol/Include -I../RTSPUtilitiesLib -include ../Include/PlatformHeader.h -MMD -MP -MF "build/x64/GNU-Linux/_ext/dfc17a71/OSMemory.o.d" -o build/x64/GNU-Linux/_ext/dfc17a71/OSMemory.o ../OSMemoryLib/OSMemory.cpp
In file included from <built-in>:356:
In file included from <command line>:4:
./../Include/PlatformHeader.h:103:10: fatal error: 'endian.h' file not found
#include <endian.h>
         ^
1 error generated.
make[1]: *** [build/x64/GNU-Linux/_ext/dfc17a71/OSMemory.o] Error 1
make: *** [.build-conf] Error 2
"/Library/Developer/CommandLineTools/usr/bin/make"  -f nbproject/Makefile-x64.mk x64/libeasyredisclient.a
mkdir -p build/x64/GNU-Linux
rm -f "build/x64/GNU-Linux/EasyRedisClient.o.d"
g++ -m64   -c -O2 -I../EasyProtocol/Include -std=c++11 -MMD -MP -MF "build/x64/GNU-Linux/EasyRedisClient.o.d" -o build/x64/GNU-Linux/EasyRedisClient.o EasyRedisClient.cpp
EasyRedisClient.cpp:61:30: error: non-constant-expression cannot be narrowed from type 'std::size_t' (aka 'unsigned long') to '__darwin_time_t' (aka 'long') in initializer
      list [-Wc++11-narrowing]
        struct timeval timeout_ = { timeout, 0 };
                                    ^~~~~~~
EasyRedisClient.cpp:61:30: note: insert an explicit cast to silence this issue
        struct timeval timeout_ = { timeout, 0 };
                                    ^~~~~~~
                                    static_cast<__darwin_time_t>( )
EasyRedisClient.cpp:300:97: warning: format specifies type 'int' but the argument has type 'std::size_t' (aka 'unsigned long') [-Wformat]
                        printf("EasyRedisClient::SetExpire[line:%d] error:key[%s], expire[%d](%s)\n", __LINE__, key, expire, GetErrorString());
                                                                                          ~~                         ^~~~~~
                                                                                          %lu
EasyRedisClient.cpp:307:97: warning: format specifies type 'int' but the argument has type 'std::size_t' (aka 'unsigned long') [-Wformat]
                        printf("EasyRedisClient::SetExpire[line:%d] error:key[%s], expire[%d](%s)\n", __LINE__, key, expire, res.c_str());
                                                                                          ~~                         ^~~~~~
                                                                                          %lu
EasyRedisClient.cpp:471:30: error: non-constant-expression cannot be narrowed from type 'std::size_t' (aka 'unsigned long') to '__darwin_time_t' (aka 'long') in initializer
      list [-Wc++11-narrowing]
        struct timeval timeout_ = { timeout, 0 };
                                    ^~~~~~~
EasyRedisClient.cpp:471:30: note: insert an explicit cast to silence this issue
        struct timeval timeout_ = { timeout, 0 };
                                    ^~~~~~~
                                    static_cast<__darwin_time_t>( )
EasyRedisClient.cpp:559:85: warning: format specifies type 'int' but the argument has type 'std::size_t' (aka 'unsigned long') [-Wformat]
                        printf("EasyRedisClient::SETEX error:key[%s], timeout[%d],value[%s](%s)\n", key, timeout, value, GetErrorString());
                                                                              ~~                         ^~~~~~~
                                                                              %lu
EasyRedisClient.cpp:566:87: warning: format specifies type 'int' but the argument has type 'std::size_t' (aka 'unsigned long') [-Wformat]
                        printf("EasyRedisClient::SETEX(key[%s], timeout[%d], value[%s]) error: %s\n", key, timeout, value, res.c_str());
                                                                        ~~                                 ^~~~~~~
                                                                        %lu
4 warnings and 2 errors generated.
make[1]: *** [build/x64/GNU-Linux/EasyRedisClient.o] Error 1
make: *** [.build-conf] Error 2
"/Library/Developer/CommandLineTools/usr/bin/make"  -f nbproject/Makefile-x64.mk x64/libjsoncpp.a
make[1]: `x64/libjsoncpp.a' is up to date.
"/Library/Developer/CommandLineTools/usr/bin/make"  -f nbproject/Makefile-x64.mk x64/libEasyProtocol.a
mkdir -p build/x64/GNU-Linux
rm -f "build/x64/GNU-Linux/EasyProtocol.o.d"
g++ -fPIC   -c -O2 -I../jsoncpp/include -I../Include -std=c++11 -MMD -MP -MF "build/x64/GNU-Linux/EasyProtocol.o.d" -o build/x64/GNU-Linux/EasyProtocol.o EasyProtocol.cpp
In file included from EasyProtocol.cpp:8:
In file included from ../Include/EasyProtocol.h:10:
../Include/EasyProtocolBase.h:32:2: error: expected expression
        public:
        ^
../Include/EasyProtocolBase.h:30:17: error: variable has incomplete type 'class Easy_API'
        class Easy_API EasyProtocol
                       ^
../Include/EasyProtocolBase.h:30:8: note: forward declaration of 'EasyDarwin::Protocol::Easy_API'
        class Easy_API EasyProtocol
              ^
In file included from EasyProtocol.cpp:8:
../Include/EasyProtocol.h:23:2: error: expected expression
        public:
        ^
../Include/EasyProtocol.h:21:17: error: variable has incomplete type 'class Easy_API'
        class Easy_API EasyDevice//<C9><E3><CF><F1>ͷ<D0><C5>Ϣ<C0><E0>
                       ^
../Include/EasyProtocolBase.h:30:8: note: forward declaration of 'EasyDarwin::Protocol::Easy_API'
        class Easy_API EasyProtocol
              ^
In file included from EasyProtocol.cpp:8:
../Include/EasyProtocol.h:53:17: error: variable has incomplete type 'class Easy_API'
        class Easy_API EasyNVR : public EasyDevice//NVR<C0><E0><D0><CD>
                       ^
../Include/EasyProtocolBase.h:30:8: note: forward declaration of 'EasyDarwin::Protocol::Easy_API'
        class Easy_API EasyProtocol
              ^
In file included from EasyProtocol.cpp:8:
../Include/EasyProtocol.h:53:25: error: expected ';' after top level declarator
        class Easy_API EasyNVR : public EasyDevice//NVR<C0><E0><D0><CD>
                               ^
                               ;
../Include/EasyProtocol.h:53:27: error: expected unqualified-id
        class Easy_API EasyNVR : public EasyDevice//NVR<C0><E0><D0><CD>
                                 ^
../Include/EasyProtocol.h:66:17: error: variable has incomplete type 'class Easy_API'
        class Easy_API EasyMsgDSRegisterREQ : public EasyProtocol       //<B7><E2>װNVR<B5><C4>ע<B2><E1><C7><EB><C7><F3>
                       ^
../Include/EasyProtocolBase.h:30:8: note: forward declaration of 'EasyDarwin::Protocol::Easy_API'
        class Easy_API EasyProtocol
              ^
In file included from EasyProtocol.cpp:8:
../Include/EasyProtocol.h:66:38: error: expected ';' after top level declarator
        class Easy_API EasyMsgDSRegisterREQ : public EasyProtocol       //<B7><E2>װNVR<B5><C4>ע<B2><E1><C7><EB><C7><F3>
                                            ^
                                            ;
../Include/EasyProtocol.h:66:40: error: expected unqualified-id
        class Easy_API EasyMsgDSRegisterREQ : public EasyProtocol       //<B7><E2>װNVR<B5><C4>ע<B2><E1><C7><EB><C7><F3>
                                              ^
../Include/EasyProtocol.h:81:17: error: variable has incomplete type 'class Easy_API'
        class Easy_API EasyMsgSDRegisterACK : public EasyProtocol       //<B7><E2>װNVR<B5><C4>ע<B2><E1><BB><D8>Ӧ
                       ^
../Include/EasyProtocolBase.h:30:8: note: forward declaration of 'EasyDarwin::Protocol::Easy_API'
        class Easy_API EasyProtocol
              ^
In file included from EasyProtocol.cpp:8:
../Include/EasyProtocol.h:81:38: error: expected ';' after top level declarator
        class Easy_API EasyMsgSDRegisterACK : public EasyProtocol       //<B7><E2>װNVR<B5><C4>ע<B2><E1><BB><D8>Ӧ
                                            ^
                                            ;
../Include/EasyProtocol.h:81:40: error: expected unqualified-id
        class Easy_API EasyMsgSDRegisterACK : public EasyProtocol       //<B7><E2>װNVR<B5><C4>ע<B2><E1><BB><D8>Ӧ
                                              ^
../Include/EasyProtocol.h:90:40: error: expected class name
        class EasyMsgSDPushStreamREQ : public EasyProtocol
                                              ^
../Include/EasyProtocol.h:99:39: error: expected class name
        class EasyMsgDSPushSteamACK : public EasyProtocol
                                             ^
../Include/EasyProtocol.h:108:40: error: expected class name
        class EasyMsgSDStopStreamREQ : public EasyProtocol
                                              ^
../Include/EasyProtocol.h:117:40: error: expected class name
        class EasyMsgDSStopStreamACK : public EasyProtocol
                                              ^
../Include/EasyProtocol.h:126:40: error: expected class name
        class EasyMsgSCDeviceListACK : public EasyProtocol
                                              ^
../Include/EasyProtocol.h:140:40: error: expected class name
        class EasyMsgSCDeviceInfoACK : public EasyProtocol
                                              ^
fatal error: too many errors emitted, stopping now [-ferror-limit=]
20 errors generated.
make[1]: *** [build/x64/GNU-Linux/EasyProtocol.o] Error 1
make: *** [.build-conf] Error 2
"/Library/Developer/CommandLineTools/usr/bin/make"  -f nbproject/Makefile-x64.mk x64/easydarwin
mkdir -p build/x64/GNU-Linux/_ext/b9fc5c32
rm -f "build/x64/GNU-Linux/_ext/b9fc5c32/HTTPClientRequestStream.o.d"
g++ -pipe -Wall -Wno-format-y2k -std=c++11   -c -O2 -DDSS_USE_API_CALLBACKS -D_REENTRANT -D__USE_POSIX -D__linux__ -I../HTTPUtilitiesLib -I../CommonUtilitiesLib -IServer.tproj -IQTFileLib/ -IRTPMetaInfoLib/ -IPrefsSourceLib/ -IAPIStubLib/ -IAPICommonCode/ -IRTCPUtilitiesLib/ -IRTSPClientLib/ -IAPIModules/QTSSFileModule/ -IAPIModules/QTSSHttpFileModule/ -IAPIModules/QTSSAccessModule/ -IAPIModules/QTSSAccessLogModule/ -IAPIModules/QTSSPOSIXFileSysModule -IAPIModules/QTSSAdminModule/ -IAPIModules/QTSSReflectorModule/ -IAPIModules/QTSSWebStatsModule/ -IAPIModules/QTSSWebDebugModule/ -IAPIModules/QTSSFlowControlModule/ -IAPIModules/QTSSMP3StreamingModule/ -IAPIModules/EasyHLSModule -IAPIModules/EasyRelayModule -IInclude -I. -I../Include -I../EasyProtocol/Include -I../EasyProtocol/jsoncpp/include -IAPIModules/EasyCMSModule -IAPIModules/EasyRedisModule -I../EasyRedisClient -I../RTSPUtilitiesLib -include ../Include/PlatformHeader.h -MMD -MP -MF "build/x64/GNU-Linux/_ext/b9fc5c32/HTTPClientRequestStream.o.d" -o build/x64/GNU-Linux/_ext/b9fc5c32/HTTPClientRequestStream.o ../HTTPUtilitiesLib/HTTPClientRequestStream.cpp
In file included from <built-in>:356:
In file included from <command line>:5:
./../Include/PlatformHeader.h:103:10: fatal error: 'endian.h' file not found
#include <endian.h>
         ^
1 error generated.
make[1]: *** [build/x64/GNU-Linux/_ext/b9fc5c32/HTTPClientRequestStream.o] Error 1
make: *** [.build-conf] Error 2

用vlc播放easydarwin实时流,前几秒都是花屏

用ffmpeg 采集,编码264或者265,推送到easydarwin,(指令:ffmpeg -f dshow -i video="HD UVC WebCam" -r 25 -s 640x480 -vcodec libx265 -preset:v ultrafast -tune:v zerolatency -rtsp_transport tcp -f rtsp rtsp://120.26.113.79/live.sdp)
,,然后客户端vlc播放实时视频,,前几秒都是花屏,,,

The latest version build error on Ubuntu with /Buildit x64

mkdir -p build/x64/GNU-Linux/Server.tproj
rm -f "build/x64/GNU-Linux/Server.tproj/QTSServer.o.d"
g++ -pipe -Wall -Wno-format-y2k -c -O2 -DCOMMON_UTILITIES_LIB -DDSS_USE_API_CALLBACKS -D_REENTRANT -D__USE_POSIX -D__linux__ -I../HTTPUtilitiesLib -I../CommonUtilitiesLib -IServer.tproj -IQTFileLib/ -IRTPMetaInfoLib/ -IPrefsSourceLib/ -IAPIStubLib/ -IAPICommonCode/ -IRTCPUtilitiesLib/ -IRTSPClientLib/ -IAPIModules/QTSSFileModule/ -IAPIModules/QTSSHttpFileModule/ -IAPIModules/QTSSAccessModule/ -IAPIModules/QTSSAccessLogModule/ -IAPIModules/QTSSPOSIXFileSysModule -IAPIModules/QTSSAdminModule/ -IAPIModules/QTSSReflectorModule/ -IAPIModules/QTSSWebStatsModule/ -IAPIModules/QTSSWebDebugModule/ -IAPIModules/QTSSFlowControlModule/ -IAPIModules/QTSSMP3StreamingModule/ -IAPIModules/EasyHLSModule -IAPIModules/EasyRelayModule -IInclude -I. -I../Include -I../EasyProtocol/Include -I../EasyProtocol/jsoncpp/include -include ../Include/PlatformHeader.h -MMD -MP -MF "build/x64/GNU-Linux/Server.tproj/QTSServer.o.d" -o build/x64/GNU-Linux/Server.tproj/QTSServer.o Server.tproj/QTSServer.cpp
Server.tproj/QTSServer.cpp:67:27: fatal error: EasyCMSModule.h: 没有那个文件或目录
#include "EasyCMSModule.h"
^
compilation terminated.
make[1]: *** [build/x64/GNU-Linux/Server.tproj/QTSServer.o] 错误 1
make[1]:正在离开目录 `/home/adesk/EasyDarwin/EasyDarwin'
make: *** [.build-conf] 错误 2

转发视频卡顿

用darwin做转发服务器,无论是网络摄像头还是文件,vlc接收端卡顿,vlc日志显示picture is too late to displayed,貌似服务器时间戳处理有问题

H264流

该服务器是否支持h264裸流的直播?

转发丢包

用网络工具监控,用easydarwin进行转发时,接收的数据和发送的数据量不一致,发送数据明显比接收数据少。

编译问题

您好,easyDarwin如果我想在ARM的架构下编译。能否有相应的教程或者文档?

EasyClient在获取设备列表时出错

在EasyClientDlg.cpp中改了CMSIP和CMSPort,分别为公网地址和8080。但是每次获取设备列表的时候就崩溃。
服务器显示如下:
get complete http msg:API/getdevicelist QueryString:(null)
INFO: HTTPSession offline from ip[x.x.x.x]

UDP 视频流设置

远端RTSP服务器 使用UDP传输发送H264视频,PC使用EasyPusher_RTSP拉流并发送给EasyDarwin。
VLC 设置 --no-rtsp-tcp 播放正常。
EasyPusher_RTSP 拉流Log显示正常,但是EasyDarwin 获取的 sdp 无法播放视频。

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.