The oryx is a group of isolate processes:
httpx-static
HTTP/HTTPS static server with API proxy.
Winlin 2016.07.09
A HTTP/HTTPS API proxy for SRS.
Home Page: https://github.com/ossrs/srs
License: MIT License
as titled
I a newbie in Golang possible example or tutorial thank you
About the audio only HLS, need to use aac, not ts; the timestamp need to recalculate.
Hello Winlin,
> Hi, I am the author of SRS(Simple RTMP Server) which delivery RTMP/HLS/HTTP-FLV and other features. I have rewrite the HLS which remuxing from RTMP according to the Apple HLS standard, it works very well.
>
> I got another question about HLS: when I remux the rtmp stream without video, that is the pure audio stream to HLS, seems the audio exists some noise. The audio codec is mp3 or aac. Is there any example or specification about pure audio HLS stream?
I assume that by "pure audio stream" you mean an MPEG elementary audio stream? (As opposed to an audio-only MPEG-2 Transport Stream.) Here are a couple of simple examples from https://developer.apple.com/streaming/examples/ :
https://devimages.apple.com.edgekey.net/streaming/examples/bipbop_16x9/gear0/prog_index.m3u8
https://devimages.apple.com.edgekey.net/streaming/examples/bipbop_16x9/alternate_audio_aac_sinewave/prog_index.m3u8
One thing to bear in mind when converting from RTMP is that the millisecond timestamps will eventually accumulate enough error to create gaps in the audio. So when you create the "com.apple.streaming.transportStreamTimestamp" ID3 tag, its value should be calculated from the sum of the previous audio sample durations, not from the ms timestamps in the original file.
regards,
Roger Pantos
Apple Inc.
Read ossrs/srs#466
For origin: Publish stream to server, remux the stream to HLS in memory.
For edge: Play the HLS, fetch from upstream, remux the stream to HLS in memory.
The wiki: Not ready.
按照rtmp rfc文档, 应该是copy c1 time to s2.time2
但是工程实践,copy c1 time to s1.time2?, 根据官方文档,s1没有time2, 应该是zero字段吧。
With goimport
, all of the imports will be restructured to adhere to golang import package precedence and ordering by https://godoc.org/golang.org/x/tools/cmd/goimports to make it a little cleaner
Read ossrs/srs#770
Maybe use MPEGTS over KCP(UDP), because the size of TS packet is 188 bytes, which is very nice to transport over UDP packet.
树莓派摄像头硬件编码后,使用FFMPEG copy输出RTMP到SRS成功,到ORYX失败。
Server can callback external system for some event.
The wiki:
https://github.com/ossrs/srs/wiki/v2_CN_HTTPCallback
https://github.com/ossrs/srs/wiki/v2_EN_HTTPCallback
我conf/oryx.conf的配置如下:
{
"listen": 1935,
"log": {
"tank": "file",
"level":
"file": "oryx.log"
},
"vhosts": [
{
"name": "defaultVhost"
}
]
}
我ffmpeg推流命令如下:
ffmpeg -re -i Pulp.Fiction.1994.BluRay.1080p.DTSMA.x264-CHD.mkv -vcodec libx264 -preset veryfast -s 480x320 -maxrate 600k -bufsize 6000k -pix_fmt yuv420p -g 50 -acodec libmp3lame -b:a 128k -ac 2 -ar 44100 -f flv rtmp://127.0.0.1:1935/myapp/test
逻辑上,我的播放地址就应该是:rtmp://127.0.0.1:1935/myapp/test,当然,我把127.0.0.1这个改成了可以访问的192.168.0.80。
但我的VLC播放失败。oryx的日志如下:
[oryx][trace] 2016/03/14 13:15:02 [7705][102] rtmp accept 192.168.0.59:14514
[oryx][trace] 2016/03/14 13:15:02 [7705][102] complex handshake ok.
[oryx][trace] 2016/03/14 13:15:02 [7705][102] connect at rtmp://192.168.0.80:1935/myapp AMF0
[oryx][trace] 2016/03/14 13:15:02 [7705][102] output chunk size to 60000
[oryx][trace] 2016/03/14 13:15:02 [7705][102] client identified, type=unknown, stream_name=, duration=0.00
[oryx][trace] 2016/03/14 13:15:02 [7705][102] redirect vhost 192.168.0.80 to defaultVhost
[oryx][warn] 2016/03/14 13:15:02 [7705][102] close invalid unknown client
[oryx][warn] 2016/03/14 13:15:02 [7705][102] read basic header failed. err is read tcp 192.168.0.80:1935->192.168.0.59:14514: use of closed network connection
[oryx][warn] 2016/03/14 13:15:02 [7705][102] rtmp receiver terminated with read tcp 192.168.0.80:1935->192.168.0.59:14514: use of closed network connection
[oryx][trace] 2016/03/14 13:15:02 [7705][102] closed
[oryx][trace] 2016/03/14 13:15:19 [7705][103] rtmp accept 192.168.0.59:14518
[oryx][trace] 2016/03/14 13:15:19 [7705][103] complex handshake ok.
[oryx][trace] 2016/03/14 13:15:19 [7705][103] connect at rtmp://192.168.0.80:1935/myapp AMF0
[oryx][trace] 2016/03/14 13:15:19 [7705][103] output chunk size to 60000
[oryx][trace] 2016/03/14 13:15:19 [7705][103] client identified, type=unknown, stream_name=, duration=0.00
[oryx][trace] 2016/03/14 13:15:19 [7705][103] redirect vhost 192.168.0.80 to defaultVhost
[oryx][warn] 2016/03/14 13:15:19 [7705][103] close invalid unknown client
[oryx][warn] 2016/03/14 13:15:19 [7705][103] read basic header failed. err is read tcp 192.168.0.80:1935->192.168.0.59:14518: use of closed network connection
[oryx][warn] 2016/03/14 13:15:19 [7705][103] rtmp receiver terminated with read tcp 192.168.0.80:1935->192.168.0.59:14518: use of closed network connection
[oryx][trace] 2016/03/14 13:15:19 [7705][103] closed
请问何故?
Server listen at upd port, encoders push MPEG-TS over UDP to server.
Server then can remux the stream to RTMP/FLV/HLS/HDS etc.
The wiki:
https://github.com/ossrs/srs/wiki/v2_CN_Streamer
https://github.com/ossrs/srs/wiki/v2_EN_Streamer
docker run --name s3 --rm -p 80:80 -p 443:443 registry.cn-hangzhou.aliyuncs.com/ossrs/httpx:v1.0.5
./bin/httpx-static -http 80 -https 443
-ssk ./etc/server.key
-ssc ./etc/server.crt
-p http://mc.a8.test.com.cn:8080/players/
当访问https://mc.a8.test.com.cn/players/ 时,网页显示不存在,控制台没有任何输出。
@winlinvip Did you end up closing the go-oryx gitter.im chatroom? Would it be possible for us to re-open the room or remove it from the repo reference?
有个想法,go-oryx支持QUIC的接入,转换成TCP连接,代理到SRS,这样SRS就可以支持QUIC-RTMP的推流和拉流。
Server will start listener and accept RTSP client.
Then remux the stream to RTMP, FLV, HLS, HDS or other types of stream.
The wiki:
https://github.com/ossrs/srs/wiki/v2_CN_Streamer
https://github.com/ossrs/srs/wiki/v2_EN_Streamer
Read ossrs/srs#293
For origin: Publish stream to server, remux the stream to HTTP-FLV.
For edge: Play the HTTP-FLV, fetch from upstream, remux to HTTP-FLV.
The wiki:
https://github.com/ossrs/srs/wiki/v2_CN_DeliveryHttpStream
https://github.com/ossrs/srs/wiki/v2_EN_DeliveryHttpStream
In README.md, "$GOPATH/bin/go-oryx -c conf/oryx.json" can be changed to "$GOROOT/bin/go-oryx -c conf/oryx.json".
I tried on several VPSes , former one can not work, but later one can work well.
When config changed, reload apply without break the service.
The wiki:
https://github.com/ossrs/srs/wiki/v1_CN_Reload
https://github.com/ossrs/srs/wiki/v1_EN_Reload
redis is fine to work as an config server.
If go-oryx can obtain configs from redis, it will be easy to modify configs dynamically.
使用go-srs,利用wiki里介绍的命令行推流,提示链接失败: Cannot open connection tcp://12.168.1.173:1935rtmp://12.168.1.173/live/livestream: Connection timed out
但是换成C++版本的srs的话,使用相同的命令行,是可以正常推流的。
另外,我没有办法kill掉 ./go-srs -c conf/srs.json进程,这个是为什么呢?
This repository would attract much more interest if there was a simple "Usage" section. I found this README.md file here https://github.com/winterserver/simple-rtmp-server that shows how to use the server, and all of a sudden I thought maybe go-oryx
was useful too!
Please add a tiny Usage
section in the README.md.. it's rough to dive into it.. I just tried to install the software now that I think it can be useful .. otherwise, nothing says anywhere what it does, or doesn't do.
thanks a lot :)
For origin: Publish stream to server, remux stream to MPEG-DASH.
For edge: Play MPEG-DASH, fetch stream from upstream, remux stream to MPEG-DASH.
The wiki: Not ready.
一直看好go 语言,简洁高效。比c++版本代码肯定少。
但是相对c++ 版本,这代码也太少了。
不确定现在有哪些feature 是支持的?
1.开启3个sb_rtmp_load进程 各播放3000个视频,视频会卡的不动了。内存占用达到64%(8G内存)
2.把3个压测进程关闭,内存没有释放,继续播放也是卡死。
I've trying to stream from OBS (obsproject.com) to go-oryx
but when I try with merely pointing to rtmp://localhost/live/feed I get this output log:
[oryx][trace] 2016/02/08 20:18:30 [30709][101] rtmp accept 192.168.86.168:49555
[oryx][trace] 2016/02/08 20:18:30 [30709][101] rollback to simple handshake.
[oryx][trace] 2016/02/08 20:18:30 [30709][101] input chunk size to 4096
[oryx][trace] 2016/02/08 20:18:30 [30709][101] connect at rtmp://192.168.86.151/live AMF0
[oryx][trace] 2016/02/08 20:18:30 [30709][101] output chunk size to 60000
[oryx][trace] 2016/02/08 20:18:30 [30709][101] client identified, type=fmle-publish, stream_name=feed, duration=0.00
[oryx][trace] 2016/02/08 20:18:30 [30709][101] redirect vhost 192.168.86.151 to __defaultVhost__
[oryx][trace] 2016/02/08 20:18:30 [30709][101] drop command message, name is @setDataFrame
[oryx][trace] 2016/02/08 20:18:31 [30709][101] drop unknown message, type is Audio
[oryx][trace] 2016/02/08 20:18:31 [30709][101] drop unknown message, type is Video
[oryx][trace] 2016/02/08 20:18:31 [30709][101] drop unknown message, type is Audio
[oryx][trace] 2016/02/08 20:18:31 [30709][101] drop unknown message, type is Video
[oryx][trace] 2016/02/08 20:18:31 [30709][101] drop unknown message, type is Audio
[oryx][trace] 2016/02/08 20:18:31 [30709][101] drop unknown message, type is Video
[oryx][trace] 2016/02/08 20:18:31 [30709][101] drop unknown message, type is Audio
[oryx][trace] 2016/02/08 20:18:31 [30709][101] drop unknown message, type is Video
[oryx][trace] 2016/02/08 20:18:31 [30709][101] drop unknown message, type is Audio
[oryx][trace] 2016/02/08 20:18:31 [30709][101] drop unknown message, type is Audio
[oryx][trace] 2016/02/08 20:18:31 [30709][101] drop unknown message, type is Video
...
with an on-going list of Audio and Video dropped messages.
Anything I can do to fix this ?
thanks for the software btw !
服务器可以将流copy到另外的vhost,配合edge就可以实现forward的功能,还可以实现redirect的功能,也可以实现alias的功能。
不必重复实现这些功能,只要拆分成vhost级别的copy,还有配合vhost。
对于新手没有知道文档呜呜
For origin: Publish stream to server, remux stream to HDS.
For edge: Play HDS, edge fetch stream from upstream, remux to HDS.
The wiki:
https://github.com/ossrs/srs/wiki/v2_CN_DeliveryHDS
https://github.com/ossrs/srs/wiki/v2_EN_DeliveryHDS
The rtmp uri is not standard, for example:
rtmp://127.0.0.1:1935/app?vhost=ossrs.net/stream
Which should support the standard uri like http, to pass the query in stream:
rtmp://127.0.0.1:1935/app/stream?vhost=ossrs.net
For origin: Publish stream to server, remux the stream to RTMP.
For edge: Play the RTMP, fetch stream from upstream, remux to RTMP.
The wiki:
https://github.com/ossrs/srs/wiki/v1_CN_DeliveryRTMP
https://github.com/ossrs/srs/wiki/v1_EN_DeliveryRTMP
When shell allocate port, the port maybe listened by other processes, we should check it, ignore the unavailable port.
For the golang binding project, we can directly encoding the video and audio data to stream, because the multiple cpu provides enough performance to do this.
For origin, fetch the video and audio then encode to stream.
For edge, not support encode stream.
Hi,
i have compiled the latest code in windows and tried it with a stream coming from ffmpeg (feed from PI camera). im trying to play it from FMLE. default configuration
{
"listen": 1935,
"log": {
"tank": "file",
"level": "trace",
"file": "oryx.log"
},
"vhosts": [
{
"name": "__defaultVhost__"
}
]
}
command from Raspberry:
raspivid -fl -t 0 -w 640 -h 480 -b 1200000 -fps 15 -pf baseline -o - | ffmpeg -re -i - -vcodec copy -an -f flv -y rtmp://192.168.2.3/live/livestream
error
[oryx][warn] 2016/05/17 20:33:07 [1816][100] windows not support daemon.
[oryx][trace] 2016/05/17 20:33:07 [1816][100] Oryx/0.1.17(MonkeyKing) Copyright (c) 2013-2015 Oryx(ossrs)
[oryx][trace] 2016/05/17 20:33:07 [1816][100] The go-oryx is SRS++, focus on real-time live streaming cluster.
[oryx][trace] 2016/05/17 20:33:07 [1816][100] set gc percent from 100 to 100
[oryx][trace] 2016/05/17 20:33:07 [1816][100] rtmp listen at tcp://1935
[oryx][trace] 2016/05/17 20:33:07 [1816][100] init server ok, conf=src.json, log=file(trace/oryx.log), workers=0/8, gc=0/100%, daemon=true
[oryx][trace] 2016/05/17 20:33:07 [1816][100] apply workers 8 and previous is 8
[oryx][warn] 2016/05/17 20:33:07 [1816][100] windows does not support reload with signal.
[oryx][trace] 2016/05/17 20:33:07 [1816][100] match iface=Ethernet, ip=169.254.30.218, hwaddr=6c:f0:49:e0:f5:23, pub=Internet
[oryx][trace] 2016/05/17 20:33:07 [1816][100] match iface=Ethernet, ip=192.168.137.1, hwaddr=6c:f0:49:e0:f5:23, pub=Intranet
[oryx][trace] 2016/05/17 20:33:07 [1816][100] match iface=VirtualBox Host-Only Network, ip=192.168.56.1, hwaddr=0a:00:27:00:00:07, pub=Intranet
[oryx][trace] 2016/05/17 20:33:07 [1816][100] match iface=Ethernet 2, ip=192.168.2.3, hwaddr=6c:f0:49:e0:f5:33, pub=Intranet
[oryx][trace] 2016/05/17 20:33:07 [1816][100] local ip is [Ethernet/169.254.30.218/6c:f0:49:e0:f5:23/Internet Ethernet/192.168.137.1/6c:f0:49:e0:f5:23/Intranet VirtualBox Host-Only Network/192.168.56.1/0a:00:27:00:00:07/Intranet Ethernet 2/192.168.2.3/6c:f0:49:e0:f5:33/Intranet] exported Ethernet/169.254.30.218/6c:f0:49:e0:f5:23/Internet
[oryx][trace] 2016/05/17 20:33:21 [1816][101] rtmp accept 192.168.2.18:58328
[oryx][trace] 2016/05/17 20:33:21 [1816][101] complex handshake ok.
[oryx][trace] 2016/05/17 20:33:21 [1816][101] connect at rtmp://192.168.2.3:1935/live AMF0
[oryx][trace] 2016/05/17 20:33:21 [1816][101] output chunk size to 60000
[oryx][trace] 2016/05/17 20:33:21 [1816][101] input chunk size to 60000
[oryx][trace] 2016/05/17 20:33:21 [1816][101] client identified, type=fmle-publish, stream_name=livestream, duration=0.00
[oryx][trace] 2016/05/17 20:33:21 [1816][101] redirect vhost 192.168.2.3 to __defaultVhost__
[oryx][trace] 2016/05/17 20:33:21 [1816][101] fmle ignore AMF0/AMF3 command message.
[oryx][trace] 2016/05/17 20:33:21 [1816][101] cache metadta sh.
[oryx][trace] 2016/05/17 20:33:21 [1816][101] cache video sh.
[oryx][trace] 2016/05/17 20:33:24 [1816][102] rtmp accept [::1]:64292
[oryx][trace] 2016/05/17 20:33:24 [1816][102] rollback to simple handshake.
[oryx][trace] 2016/05/17 20:33:24 [1816][102] connect at rtmp://localhost/live AMF0
[oryx][trace] 2016/05/17 20:33:24 [1816][102] output chunk size to 60000
[oryx][error] 2016/05/17 20:33:29 [1816][102] timeout for 5s
[oryx][warn] 2016/05/17 20:33:29 [1816][102] read basic header failed. err is read tcp [::1]:1935->[::1]:64292: use of closed network connection
[oryx][warn] 2016/05/17 20:33:29 [1816][102] rtmp receiver terminated with read tcp [::1]:1935->[::1]:64292: use of closed network connection
[oryx][trace] 2016/05/17 20:33:29 [1816][102] closed
[oryx][trace] 2016/05/17 20:33:29 [1816][103] rtmp accept [::1]:64293
[oryx][trace] 2016/05/17 20:33:29 [1816][103] rollback to simple handshake.
[oryx][trace] 2016/05/17 20:33:29 [1816][103] connect at rtmp://localhost/live AMF0
[oryx][trace] 2016/05/17 20:33:29 [1816][103] output chunk size to 60000
[oryx][error] 2016/05/17 20:33:34 [1816][103] timeout for 5s
[oryx][warn] 2016/05/17 20:33:34 [1816][103] read basic header failed. err is read tcp [::1]:1935->[::1]:64293: use of closed network connection
[oryx][warn] 2016/05/17 20:33:34 [1816][103] rtmp receiver terminated with read tcp [::1]:1935->[::1]:64293: use of closed network connection
[oryx][trace] 2016/05/17 20:33:34 [1816][103] closed
[oryx][warn] 2016/05/17 20:33:07 [1816][100] windows not support daemon.
[oryx][trace] 2016/05/17 20:33:07 [1816][100] Oryx/0.1.17(MonkeyKing) Copyright (c) 2013-2015 Oryx(ossrs)
[oryx][trace] 2016/05/17 20:33:07 [1816][100] The go-oryx is SRS++, focus on real-time live streaming cluster.
[oryx][trace] 2016/05/17 20:33:07 [1816][100] set gc percent from 100 to 100
[oryx][trace] 2016/05/17 20:33:07 [1816][100] rtmp listen at tcp://1935
[oryx][trace] 2016/05/17 20:33:07 [1816][100] init server ok, conf=src.json, log=file(trace/oryx.log), workers=0/8, gc=0/100%, daemon=true
[oryx][trace] 2016/05/17 20:33:07 [1816][100] apply workers 8 and previous is 8
[oryx][warn] 2016/05/17 20:33:07 [1816][100] windows does not support reload with signal.
[oryx][trace] 2016/05/17 20:33:07 [1816][100] match iface=Ethernet, ip=169.254.30.218, hwaddr=6c:f0:49:e0:f5:23, pub=Internet
[oryx][trace] 2016/05/17 20:33:07 [1816][100] match iface=Ethernet, ip=192.168.137.1, hwaddr=6c:f0:49:e0:f5:23, pub=Intranet
[oryx][trace] 2016/05/17 20:33:07 [1816][100] match iface=VirtualBox Host-Only Network, ip=192.168.56.1, hwaddr=0a:00:27:00:00:07, pub=Intranet
[oryx][trace] 2016/05/17 20:33:07 [1816][100] match iface=Ethernet 2, ip=192.168.2.3, hwaddr=6c:f0:49:e0:f5:33, pub=Intranet
[oryx][trace] 2016/05/17 20:33:07 [1816][100] local ip is [Ethernet/169.254.30.218/6c:f0:49:e0:f5:23/Internet Ethernet/192.168.137.1/6c:f0:49:e0:f5:23/Intranet VirtualBox Host-Only Network/192.168.56.1/0a:00:27:00:00:07/Intranet Ethernet 2/192.168.2.3/6c:f0:49:e0:f5:33/Intranet] exported Ethernet/169.254.30.218/6c:f0:49:e0:f5:23/Internet
[oryx][trace] 2016/05/17 20:33:21 [1816][101] rtmp accept 192.168.2.18:58328
[oryx][trace] 2016/05/17 20:33:21 [1816][101] complex handshake ok.
[oryx][trace] 2016/05/17 20:33:21 [1816][101] connect at rtmp://192.168.2.3:1935/live AMF0
[oryx][trace] 2016/05/17 20:33:21 [1816][101] output chunk size to 60000
[oryx][trace] 2016/05/17 20:33:21 [1816][101] input chunk size to 60000
[oryx][trace] 2016/05/17 20:33:21 [1816][101] client identified, type=fmle-publish, stream_name=livestream, duration=0.00
[oryx][trace] 2016/05/17 20:33:21 [1816][101] redirect vhost 192.168.2.3 to __defaultVhost__
[oryx][trace] 2016/05/17 20:33:21 [1816][101] fmle ignore AMF0/AMF3 command message.
[oryx][trace] 2016/05/17 20:33:21 [1816][101] cache metadta sh.
[oryx][trace] 2016/05/17 20:33:21 [1816][101] cache video sh.
[oryx][trace] 2016/05/17 20:33:24 [1816][102] rtmp accept [::1]:64292
[oryx][trace] 2016/05/17 20:33:24 [1816][102] rollback to simple handshake.
[oryx][trace] 2016/05/17 20:33:24 [1816][102] connect at rtmp://localhost/live AMF0
[oryx][trace] 2016/05/17 20:33:24 [1816][102] output chunk size to 60000
[oryx][error] 2016/05/17 20:33:29 [1816][102] timeout for 5s
[oryx][warn] 2016/05/17 20:33:29 [1816][102] read basic header failed. err is read tcp [::1]:1935->[::1]:64292: use of closed network connection
[oryx][warn] 2016/05/17 20:33:29 [1816][102] rtmp receiver terminated with read tcp [::1]:1935->[::1]:64292: use of closed network connection
[oryx][trace] 2016/05/17 20:33:29 [1816][102] closed
[oryx][trace] 2016/05/17 20:33:29 [1816][103] rtmp accept [::1]:64293
[oryx][trace] 2016/05/17 20:33:29 [1816][103] rollback to simple handshake.
[oryx][trace] 2016/05/17 20:33:29 [1816][103] connect at rtmp://localhost/live AMF0
[oryx][trace] 2016/05/17 20:33:29 [1816][103] output chunk size to 60000
[oryx][error] 2016/05/17 20:33:34 [1816][103] timeout for 5s
[oryx][warn] 2016/05/17 20:33:34 [1816][103] read basic header failed. err is read tcp [::1]:1935->[::1]:64293: use of closed network connection
[oryx][warn] 2016/05/17 20:33:34 [1816][103] rtmp receiver terminated with read tcp [::1]:1935->[::1]:64293: use of closed network connection
[oryx][trace] 2016/05/17 20:33:34 [1816][103] closed
from VLC it shows little different error:
[oryx][trace] 2016/05/17 21:29:06 [9456][596] rtmp accept 192.168.2.3:65058
[oryx][trace] 2016/05/17 21:29:06 [9456][596] complex handshake ok.
[oryx][trace] 2016/05/17 21:29:06 [9456][596] connect at rtmp://192.168.2.3:1935/live AMF0
[oryx][trace] 2016/05/17 21:29:06 [9456][596] output chunk size to 60000
[oryx][trace] 2016/05/17 21:29:06 [9456][596] client identified, type=unknown, stream_name=, duration=0.00
[oryx][trace] 2016/05/17 21:29:06 [9456][596] redirect vhost 192.168.2.3 to __defaultVhost__
[oryx][warn] 2016/05/17 21:29:06 [9456][596] close invalid unknown client
[oryx][error] 2016/05/17 21:29:06 [9456][596] read body failed. err is read tcp 192.168.2.3:1935->192.168.2.3:65058: use of closed network connection
[oryx][warn] 2016/05/17 21:29:06 [9456][596] rtmp receiver terminated with read tcp 192.168.2.3:1935->192.168.2.3:65058: use of closed network connection
[oryx][trace] 2016/05/17 21:29:06 [9456][596] closed
failed to parse private key
go-oryx 有部署文档吗?
Server provides HTTP API to query and manage server.
The wiki:
https://github.com/ossrs/srs/wiki/v2_CN_HTTPApi
https://github.com/ossrs/srs/wiki/v2_EN_HTTPApi
https://github.com/cihub/seelog
A powerfull logging framework, flexible and easy to use.
support print function, line number. rolling writer, network send, sync/async output, etc.
I dive into the protocol directory.
I found that the protocol sub-package only depends on core/utility.go
and core.Context
.
I think you can create a util sub-package and put core/utility.go
and core.Context
in it.
What do you think of it? Or I can do it myself, and make a PR.
Append...
The protocol sub package also depends on config.go
and logger.go
. It may be not easy to export the protocol package.
hi @winlinvip
thanks for the excellent project, you mean rewrite from srs, so could give the complete roadmap?
Byteorder in protocol.RtmpUint16 UnmarshalBinary is incorrect.
Current:
*v = RtmpUint16(uint16(data[0]) | uint16(data[1])<<8)
Must be:
*v = RtmpUint16(uint16(data[1]) | uint16(data[0])<<8)
This leads to an incorrect decoding of UserControlMessage for example.
There are a few typos in the full.conf, most of which are only spelling related typos, however, there is a variable name typo in:
mr_latenct
should be mr_latency
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.