Giter Site home page Giter Site logo

cnotch / ipchub Goto Github PK

View Code? Open in Web Editor NEW
201.0 9.0 61.0 131.29 MB

一个即拷即用、支持摄像头集中管理、多级路由及h5播放的流媒体服务器。

License: MIT License

Go 99.46% Makefile 0.52% Dockerfile 0.02%
rtsp rtp http-flv websocket-flv live http-hls

ipchub's Introduction

ipchub

一个即拷即用、支持摄像头集中管理、多级路由及h5播放的流媒体服务器。

项目背景

偶尔和前同事聊天,说到一些小的监控项目需要把IP摄像头集中管理,并提供html播放能力。闲来无事就试着开发一个打发时间,也作为学习 go 语言的一个实践。

在此之前没有流媒体经验,没有go语言项目开发经验。看了一些文档,参考了一些开源项目,主要包括:

  • emitter 学习多协议共享端口等网络编程技能
  • EasyDarwin 为加深对rtsp协议的理解
  • seal rtmp/flv hls 服务的理解

主要特性

  • 基于纯 Golang 开发
  • 支持 Windows、Linux、macOS 平台
  • 支持 RTSP 推流(主动推送)
  • 支持 RTSP 拉流(拉取摄像头或其他流媒体服务器资源)
  • 支持 RTSP TCP、UDP、Multicast 播放
  • 支持 H264+AAC H5播放,包括:
  • 支持 H265+AAC H5播放(实验,需自行寻找播放软件),包括:
    • HTTP-FLV
    • Websocket-FLV
  • 支持流媒体用户推拉权限管理
  • 业务系统集成 RestfulAPI
  • 支持 user 和 routetable 提供者插件:仅支持 linux 和 mac

文档

ipchub's People

Contributors

cnotch avatar

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

ipchub's Issues

flv运行报错

  • {"path":"/group/door","rurl":"rtsp://192.168.2.107:554","type":"pull"}
    ERROR 2022-03-17 17:36:36.912308 github.com/cnotch/ipchub/service/flv/httpflv.go:67: http-flv: stream not support flv
    系统ubuntu20.04

panic: unaligned 64-bit atomic operation

我将软件发布到arm 32位操作系统遇到了问题

打包命令如下:
set GOARCH=arm
set GOOS=linux
set CGO_ENABLED=0
go build -o ipchub_linux

运行时显示的错误信息:
panic: unaligned 64-bit atomic operation

goroutine 20 [running]:
runtime/internal/atomic.panicUnaligned()
E:/Program Files/Go/src/runtime/internal/atomic/unaligned.go:8 +0x24
runtime/internal/atomic.Store64(0x24881ec, 0x0)
E:/Program Files/Go/src/runtime/internal/atomic/atomic_arm.s:291 +0x14
github.com/cnotch/scheduler.(*Scheduler).run(0x24881c0)
C:/Users/Administrator/go/pkg/mod/github.com/cnotch/[email protected]/scheduler.go:226 +0xf0
created by github.com/cnotch/scheduler.New in goroutine 1
C:/Users/Administrator/go/pkg/mod/github.com/cnotch/[email protected]/scheduler.go:89 +0x274

太好用了,碰到了点小问题

  1. 把代码拉下来在VSCode中直接 go run 运行,既没有视频数据,API接口也没有响应。编译打包成exe之后,再执行功能就正常了。不知道这是什么原因?
  2. websocket-rtsp为什么列为实验功能嘞,我试下来效果很好啊,也很稳定。
  3. websocket-rtsp测试页面里有一个rtsp.dev.js是大佬自己写的吗?在网上没有找到相关信息

使用http-flv訪問和多級路由有問題

FLV264, FV265

想要存取 FLV 推流有要調整路由和輸入影像嗎? 怎麼調整我的指令和路徑呢謝謝

routetable和 ffmpeg 指令如下

## routetable
{
	"total": 2,
	"next_page_token": "/hr/",
	"routes": [
		{
			"pattern": "/group/door",
			"url": "rtsp://192.168.0.111:1554/1",
			"keepalive": true
		},
		{
			"pattern": "/hr/",
			"url": "rtsp://192.168.0.111:1554/2"
		}
	]
}

## ffmpeg 
ffmpeg -re -fflags +genpts -stream_loop -1 -i ./videoplayback.mp4 -rtsp_transport udp -c:v copy -c:a copy -f rtsp rtsp://localhost:1554/1

多級路由要如何使用呢,這一段看不太懂

範例的意思是要多設兩個推流嗎?
但是這樣跟直接存取有什麼差異,是因為要設存取權限嗎?

[
	{
        "pattern": "/group/door",
        "url": "rtsp://admin:[email protected]:8554/H264MainStream",
        "keepalive":true
    },
    {
        "pattern": "/hr/",
        "url": "rtsp://admin:[email protected]:1554",
		"keepalive": false
	}
]

我们配置了两个路由:
/group/door : 集团大门直接连接到摄像头
/hr/ : 人力资源部门的摄像头路由到下级的服务器 假设下级服务器有 /door/video1 和 /door/video2 两个摄像头,那么你可以通过 .../hr/door/video1 和 .../hr/door/video2 访问它们。

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.