ddvtech / mistserver Goto Github PK
View Code? Open in Web Editor NEWThe official mistserver source repository - www.mistserver.com
License: The Unlicense
The official mistserver source repository - www.mistserver.com
License: The Unlicense
# gdb $(which MistOutHLS) e7c9ba8f-d915-4e77-ae09-eaf920034dbd-dump-1660586615-dp8223-MistOutHLS-2623-11.core
GNU gdb (Ubuntu 9.2-0ubuntu1~20.04.1) 9.2
Copyright (C) 2020 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Type "show copying" and "show warranty" for details.
This GDB was configured as "x86_64-linux-gnu".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>.
Find the GDB manual and other documentation resources online at:
<http://www.gnu.org/software/gdb/documentation/>.
For help, type "help".
Type "apropos word" to search for commands related to "word"...
Reading symbols from /usr/bin/MistOutHLS...
[New LWP 2623]
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
Core was generated by `/usr/bin/MistOutHLS --ip 167.224.188.61 --stream video+196a6qz7pg06nl5h --prequ'.
Program terminated with signal SIGSEGV, Segmentation fault.
#0 0x00005575c67c98c1 in Util::RelAccX::getInt (this=0x7ffe34e8f090, fd=..., recordNo=recordNo@entry=0)
at /tmp/drone-uPK0nR4hjOgC8gNa/drone/src/lib/util.cpp:634
634 /tmp/drone-uPK0nR4hjOgC8gNa/drone/src/lib/util.cpp: No such file or directory.
(gdb) bt
#0 0x00005575c67c98c1 in Util::RelAccX::getInt (this=0x7ffe34e8f090, fd=..., recordNo=recordNo@entry=0)
at /tmp/drone-uPK0nR4hjOgC8gNa/drone/src/lib/util.cpp:634
#1 0x00005575c672a51d in DTSC::Meta::getLastms (this=this@entry=0x7ffe34e8ec98, trackIdx=trackIdx@entry=4)
at /tmp/drone-uPK0nR4hjOgC8gNa/drone/src/lib/dtsc.cpp:1995
#2 0x00005575c6753080 in HLS::getLastms (M=..., userSelect=std::map with 2 elements = {...}, trackIdx=4, streamStartTime=1660586058488)
at /tmp/drone-uPK0nR4hjOgC8gNa/drone/src/lib/hls_support.cpp:53
#3 0x00005575c6753579 in HLS::populateFragmentData (M=..., userSelect=std::map with 2 elements = {...}, fragData=..., trackData=..., fragments=...,
keys=...) at /tmp/drone-uPK0nR4hjOgC8gNa/drone/src/lib/hls_support.cpp:143
#4 0x00005575c6704a74 in Mist::OutHLS::sendHlsMediaManifest (this=this@entry=0x7ffe34e8ec30, requestTid=<optimized out>)
at /tmp/drone-uPK0nR4hjOgC8gNa/drone/src/src/output/output_hls.cpp:205
#5 0x00005575c6705866 in Mist::OutHLS::sendHlsManifest (this=this@entry=0x7ffe34e8ec30, url="4_1/index.m3u8")
at /tmp/drone-uPK0nR4hjOgC8gNa/drone/src/src/output/output_hls.cpp:229
#6 0x00005575c6707cf3 in Mist::OutHLS::onHTTP (this=0x7ffe34e8ec30) at /tmp/drone-uPK0nR4hjOgC8gNa/drone/src/src/output/output_hls.cpp:446
#7 0x00005575c671671f in Mist::HTTPOutput::requestHandler (this=0x7ffe34e8ec30) at /tmp/drone-uPK0nR4hjOgC8gNa/drone/src/src/output/output_http.cpp:328
#8 0x00005575c66fa063 in Mist::Output::run (this=0x7ffe34e8ec30) at /tmp/drone-uPK0nR4hjOgC8gNa/drone/src/src/output/output.cpp:1264
#9 0x00005575c66e83b2 in main (argc=<optimized out>, argv=<optimized out>) at /tmp/drone-uPK0nR4hjOgC8gNa/drone/src/src/output/mist_out.cpp:70
(gdb)
hello
I don't find "Public address" field for HTTP protocol for MistServer v2.17 for configure reverse proxy.
Can you help me ?
Thanck you.
Gérard
Hi,
I use mistserver for test this, but in new version HLS is break. The stream is not clean, in android i have artifact video and OSMF with hls plugin not work but it work with old mistserver version.
You can check on http://streambox.fr/HLSProvider/osmf/StrobeMediaPlayback.html?src=http://127.0.0.1:8080/hls/test/index.m3u8
Thanks
I am at your disposal
Anthony.
Hi there,
I am trying mistserver on win at the moment.
Runns good but I have to login to windows and then manually start mistserver...
Is there a way to install this as service or even to configure it to autostart?
Many thanks
When stream A
is added by HTTP addstream
command and specified as source
stream for MistProcLivepeer
then A
stream should be started by MistProcLivepeer
process.
Getting this upon sending in a valid RTMP stream:
[2022-06-14 16:17:46] MistOutRTMP:stream (33288) INFO: Waiting for stream buffer to be ready... (0) (/Users/iameli/code/mistserver/src/output/output.cpp:1988)
[2022-06-14 16:17:47] MistOutRTMP:stream (33288) INFO: Reconnecting to stream buffer... (0) (/Users/iameli/code/mistserver/src/output/output.cpp:1993)
[2022-06-14 16:17:48] MistOutRTMP:stream (33290) INFO: Starting /Users/iameli/code/livepeer-in-a-box/bin/MistInBuffer -s stream push:// (/Users/iameli/code/mistserver/lib/stream.cpp:594)
[2022-06-14 16:17:48] MistInBuffer:stream (33290) INFO: Input booting (/Users/iameli/code/mistserver/src/input/input.cpp:310)
[2022-06-14 16:17:48] MistInBuffer:stream (33291) INFO: Starting serve (/Users/iameli/code/mistserver/src/input/input.cpp:536)
[2022-06-14 16:17:48] MistInBuffer:stream (33291) INFO: Input started (/Users/iameli/code/mistserver/src/input/input.cpp:652)
[2022-06-14 16:17:48] MistInBuffer:stream (33291) INFO: Setting maxKeepAway from 0 to new value of 45000 (/Users/iameli/code/mistserver/src/input/input_buffer.cpp:580)
[2022-06-14 16:17:48] MistOutRTMP:stream (33288) INFO: Client handler shutting down, exit reason: Shutting down since this session is not allowed to view this stream (/Users/iameli/code/mistserver/src/output/output.cpp:1398)
[2022-06-14 16:17:48] MistOutRTMP:stream (33288) INFO: Exit reason: Shutting down since this session is not allowed to view this stream (/Users/iameli/code/mistserver/src/output/mist_out.cpp:73)
[2022-06-14 16:17:48] MistSession (33294) FAIL: Session 'I5e9d94846c91fb28f48e40ceb19f320559cd51db34048dc7e658a0ce40827bb3' already locked (/Users/iameli/code/mistserver/src/session.cpp:199)
[2022-06-14 16:17:48] MistSession (33292) FAIL: Session 'I5e9d94846c91fb28f48e40ceb19f320559cd51db34048dc7e658a0ce40827bb3' already locked (/Users/iameli/code/mistserver/src/session.cpp:199)
[2022-06-14 16:17:48] MistSession (33293) FAIL: Session 'I5e9d94846c91fb28f48e40ceb19f320559cd51db34048dc7e658a0ce40827bb3' already locked (/Users/iameli/code/mistserver/src/session.cpp:199)
[2022-06-14 16:18:18] MistInBuffer:stream (33291) INFO: Input closing clean, reason: no activity for 30 seconds (/Users/iameli/code/mistserver/src/input/input.cpp:678)
[2022-06-14 16:18:18] MistInBuffer:stream (33290) WARN: Input for stream stream uncleanly shut down! Aborting restart; this is a development build. (/Users/iameli/code/mistserver/src/input/input.cpp:459)
Seems to happen on all branches downstream of the session rework.
Would be great if you could update your docker image as it still is on 2.14 :)
hi there! i'm trying to push an rtmp stream to tiktok but i run into a problem with authentication. the url is something like this:
rtmps://push-rtmp-f5-va01.tiktokcdn.com:443/game/stream-XXX?expire=XXX&sign=XXX
looking at the log i see these lines:
Stripping target options: expire=XXX&sign=XXX
Received error response: NetStream.Publish.InvalidSign; func:OnStatus:func:RtmpStatusCode2NssError:invalid_sign
why is mistserver stripping part of the url? what can i do? many thanks!
I am getting the above error while compiling. (AMD 64 bit machine)
Line 175 (dev brunch)
if ("first" in options.forcePriority) {
sortopions.first = options.forcePriority.first; //overwrite
}
'sortopions' has typo, Expected 'sortoptions'
As we discussed here at FOSDEM, would be nice to whitelist by prefix rather than only an address.
Here's a quick sketch that would allow to match against the list of prefixes. I did not add the "exact-match" function - I presume you could reuse the existing isAddr() functionality.
#include <string.h>
#include <stdio.h>
#include <netinet/in.h>
uint8_t mask(uint8_t val, int nbits) {
return (val & (0xff << (8 - nbits)));
}
int compbytes(uint8_t *buf1, uint8_t *buf2, int bitlen) {
int nbytes = bitlen / 8;
int nbits = bitlen % 8;
printf("compbytes %d\n", bitlen);
if (memcmp(buf1, buf2, nbytes)) {
printf("bytes are different\n");
return 0;
}
if (nbits && (mask(buf1[nbytes], nbits) != mask(buf2[nbytes], nbits))) {
printf("bits are different\n");
return 0;
}
return 1;
}
int prefentrymatch(char *pref, char *addr) {
int plen = 0;
uint8_t addrbuf[16];
uint8_t prefbuf[16];
char *pplen = strchr(pref, '/');
if(pplen) {
*pplen++ = 0;
plen = atoi(pplen);
printf("Prefix Matching of %s (len %d)\n", pref, plen);
if(1 == inet_pton(AF_INET6, pref, prefbuf)) {
printf("IPv6 pref\n");
if(1 == inet_pton(AF_INET6, addr, addrbuf)) {
if(compbytes(addrbuf, prefbuf, plen)) {
return 1;
}
} else {
return 0;
}
} else if(1 == inet_pton(AF_INET, pref, prefbuf)) {
printf("IPv4 pref\n");
if(1 == inet_pton(AF_INET, addr, addrbuf)) {
if(compbytes(addrbuf, prefbuf, plen)) {
return 1;
}
}
} else {
return 0;
}
} else {
printf("Exact Matching of %s\n", pref);
/* place your exact matching here */
}
return 0;
}
int prefmatch(char *preflist, char *addr) {
char *plist = strdup(preflist);
char *p = plist;
char *psep;
char *pend = plist + strlen(preflist);
while ((psep = strchr(p, ' ')) ) {
*psep = 0;
while(*p && (*p == ' ') && p <= psep) {
p++;
}
if ((p < psep) && prefentrymatch(p, addr)) {
goto match;
}
p = psep+1;
}
if ((p < pend) && prefentrymatch(p, addr)) {
goto match;
}
nomatch:
free(plist);
return 0;
match:
free(plist);
return 1;
}
Here's all the backtraces: https://gist.github.com/iameli/eb3bc903762add0d900000be445f2107
End result is that querying koekjes.json
takes 63 seconds:
▶ time curl http://[redacted]/koekjes.json -v
[...]
________________________________________________________
Executed in 63.46 secs fish external
usr time 7.51 millis 0.19 millis 7.32 millis
sys time 14.89 millis 3.54 millis 11.34 millis
Often server emit bad TS segments (Example attached).
In this .ts file packet 3
* Packet 3
---- TS Header ----
PID: 255 (0x00FF), header size: 12, sync: 0x47
Error: 0, unit start: 1, priority: 0
Scrambling: 0, continuity counter: 1
Adaptation field: yes (8 bytes), payload: yes (176 bytes)
Discontinuity: 0, random access: 1, ES priority: 1
PCR: 0x00D1F8BAF98
---- PES Header ----
Stream id: 0xE0 (Video 0)
PES packet length: 65493
---- Full TS Packet Content ----
47 40 FF 31 07 70 05 99 67 F9 7E 00 00 00 01 E0 FF D5 84 D0 0D 31 2C CB
B7 19 11 2C CB 9F E5 80 0B B3 00 00 00 01 09 F0 00 00 00 01 67 64 00 20
AC D9 40 50 05 BA 10 00 00 03 00 10 00 00 07 88 F1 83 19 60 00 00 00 01
68 EF BC B0 00 00 00 01 65 88 84 03 FF DE 2A 1C D3 FF E0 B1 7E AE 0D B2
29 B5 D0 78 5F 1D A6 16 B2 32 6D F2 98 19 40 39 BF 00 04 72 EE 8A 03 54
AE 58 EE 36 2F 64 9D B2 4E 81 30 2D 85 D2 2E E3 10 E1 1B 81 81 9C 9D B3
3A 88 7A E3 7D 0C 77 55 9B A9 9E 5C 72 99 BA 96 54 52 57 FD 03 E0 69 7D
E9 23 F5 6B E2 91 25 A9 09 B4 BC 21 72 FE E8 33 29 00 FA 9F
Specifies PES packet length to be 65493. But actual data size for this PES packet 65490.
And in the header of the next PES packet:
* Packet 360
---- TS Header ----
PID: 255 (0x00FF), header size: 166, sync: 0x47
Error: 0, unit start: 1, priority: 0
Scrambling: 0, continuity counter: 6
Adaptation field: yes (162 bytes), payload: yes (22 bytes)
Discontinuity: 0, random access: 1, ES priority: 1
PCR: 0x00D1F8BAF98
---- PES Header ----
Stream id: 0xE0 (Video 0)
PES packet length: 19
---- Full TS Packet Content ----
47 40 FF 36 A1 70 05 99 67 F9 7E 00 66 64 36 64 62 31 32 34 38 36 36 37
65 34 61 33 39 38 64 39 34 38 36 61 66 66 32 33 62 62 31 31 00 66 64 36
64 62 31 32 34 38 36 36 37 65 34 61 33 39 38 64 39 34 38 36 61 66 66 32
33 62 62 31 31 00 66 64 36 64 62 31 32 34 38 36 36 37 65 34 61 33 39 38
64 39 34 38 36 61 66 66 32 33 62 62 31 31 00 66 64 36 64 62 31 32 34 38
36 36 37 65 34 61 33 39 38 64 39 34 38 36 61 66 66 32 33 62 62 31 31 00
66 64 36 64 62 31 32 34 38 36 36 37 65 34 61 33 39 38 64 39 34 38 00 00
01 E0 00 13 80 D0 0D 31 2C CB B7 19 11 2C CB 9F E5 80 0B B3
PES packet length specified 19, though with given payload length (22 bytes) it should be 16.
bad_video_RavinAmulet_0_1_index.m3u8_sessId_71371_1959_17f8cf19be7e24f7ad7c.ts.gz
In commit 9b6312c on April 2nd (switch to CMake), sourcery was changed from using stdout to taking an explicit output argument. The (old) Makefile, however, was not updated accordingly, so now a clean project build with good-old-Make fails due to an empty src/controller/server.html.h file (which should have been generated by sourcery).
In the same commit, the file embed.js.h was moved from src/ to src/output.
The fix is to remove the output redirect ">" from both sourcery invocations and substitute src/embed.js.h -> src/output/embed.js.h a few places in the Makefile ;-)
Also in the Makefile line 159 add src/io.cpp to the input list (this problem was introduced by commit d370ef4)
Ubuntu 18.04 LTS
git clone https://github.com/DDVTECH/mistserver
cd mistserver/
cmake . -DNOSSL=1
make
[ 10%] Building CXX object CMakeFiles/mist.dir/lib/socket.cpp.o
/home/user/mistserver/lib/socket.cpp: In member function ‘std::__cxx11::string Socket::Connection::getError()’:
/home/user/mistserver/lib/socket.cpp:712:10: error: ‘lastErr’ was not declared in this scope
return lastErr;
^~~~~~~
/home/user/mistserver/lib/socket.cpp: In member function ‘void Socket::Connection::open(std::__cxx11::string, bool)’:
/home/user/mistserver/lib/socket.cpp:731:5: error: ‘lastErr’ was not declared in this scope
lastErr = strerror(errno);
^~~~~~~
/home/user/mistserver/lib/socket.cpp:746:5: error: ‘lastErr’ was not declared in this scope
lastErr = strerror(errno);
^~~~~~~
/home/user/mistserver/lib/socket.cpp: In member function ‘void Socket::Connection::open(std::__cxx11::string, int, bool, bool)’:
/home/user/mistserver/lib/socket.cpp:860:5: error: ‘lastErr’ was not declared in this scope
lastErr = gai_strmagic(s);
^~~~~~~
/home/user/mistserver/lib/socket.cpp:866:3: error: ‘lastErr’ was not declared in this scope
lastErr = "";
^~~~~~~
/home/user/mistserver/lib/socket.cpp: In member function ‘unsigned int Socket::Connection::iwrite(const void*, int)’:
/home/user/mistserver/lib/socket.cpp:1043:7: error: ‘lastErr’ was not declared in this scope
lastErr = strerror(errno);
^~~~~~~
/home/user/mistserver/lib/socket.cpp: In member function ‘int Socket::Connection::iread(void*, int, int)’:
/home/user/mistserver/lib/socket.cpp:1114:7: error: ‘lastErr’ was not declared in this scope
lastErr = strerror(errno);
^~~~~~~
/home/user/mistserver/lib/socket.cpp: In copy constructor ‘Socket::Connection::Connection(const Socket::Connection&)’:
/home/user/mistserver/lib/socket.cpp:1227:3: error: ‘lastErr’ was not declared in this scope
lastErr = rhs.lastErr;
^~~~~~~
/home/user/mistserver/lib/socket.cpp:1227:17: error: ‘const class Socket::Connection’ has no member named ‘lastErr’
lastErr = rhs.lastErr;
^~~~~~~
/home/user/mistserver/lib/socket.cpp: In member function ‘Socket::Connection& Socket::Connection::operator=(const Socket::Connection&)’:
/home/user/mistserver/lib/socket.cpp:1261:3: error: ‘lastErr’ was not declared in this scope
lastErr = rhs.lastErr;
^~~~~~~
/home/user/mistserver/lib/socket.cpp:1261:17: error: ‘const class Socket::Connection’ has no member named ‘lastErr’
lastErr = rhs.lastErr;
^~~~~~~
CMakeFiles/mist.dir/build.make:614: recipe for target 'CMakeFiles/mist.dir/lib/socket.cpp.o' failed
make[2]: *** [CMakeFiles/mist.dir/lib/socket.cpp.o] Error 1
CMakeFiles/Makefile2:2070: recipe for target 'CMakeFiles/mist.dir/all' failed
make[1]: *** [CMakeFiles/mist.dir/all] Error 2
Makefile:140: recipe for target 'all' failed
make: *** [all] Error 2
Pull input http:// is only used for HLS, yes? Is it possible to use http:// for mp4 (mpegts) streams?
I know that RTMP pull input is not supported (although RTSP is, but it is not in the Feature support matrix of the manual). Would it be difficult to add? There are some RTMP related commits in #54, are they related?
Mistserver 3.1.
added a stream from local raspicam using
h264-exec:raspivid -t 0 -pf high -lev 4.2 -g 10 -ih -qp 35 -o -
Want to push the above stream as rtsp to another target server.
According to 3.0 Manual it is possible to push streams as rtsp.
When creating a push to target:
rtsp://x.x.x.x:8554/live/picam
i receive:
Hello to all,
I am very new to the mistserver (I heard of it for a first time couple of weeks ago). But I want to suggest few bug fixes.
I am dealing with issues related with the Mist server under "heavy" load (few hundred connections. This is not a heavy load to my experience, but seems to be very heavy to the Mist). Probably it will not surprise you to hear that this software in particular is not really well designed to scale. However, this is a different topic of discussions.
During my investigations of the code i found a bunch of kiddish bugs that also affect the stability and the scalability of the software. They are present in all of the releases I've check - 1.0, 1.2 and 1.3.
As I am not a contributor and I really didn't found how to report a bug or patch, so I am writing you here.
I have found bugs and issues in the buffer process, connector process and the RTMP process. However this message will be related to the connector only, as I have no much time to write you more.
The connector design is quite ineffective. It forks a process for each new customer connection. It has two kiddish bugs associated with this -
There is no signal interception at the master. So sometimes when a child dies, it became a Zombie and slowly kills the machine process table resources (although memory and everything else is freed).
To fix this is quite simple.
You just need to add in the beginning
#include <signal.h>
and somewhere in the beginning of the main function:
signal(SIGCHLD,SIG_IGN);
I did it and it works very fine for me.
However, the major problem within every connector code is that within the While loop for accept -> fork of new Unix socket sessions, when it forks a child, the master does not close the accepted connection.
As an effect the master keeps a file descriptor open. Which will be copied in the next forked child (it copy all of the file descriptors) but the fd count will be increased in the master again and then copied to the next forked child, and so on, and so on.
The effect of this is that every new child fork will became slower and slower (all the fd has to be copied) but mostly the allocated fd per process (and the system in general) grows exponentially as they are never closed. In a mist server under heavy load (where we have stream of opening new short lived customer connections) the total limit of file descriptors of the system/process will be exhausted on a logarithmic basis (the max span of the process live before the issue happens will be constant * log2(total-process-limit)). At some point there will be not enough resources for a new child to open, and the new fork will crash. The old connections will still work perfectly though.
I cannot imagine the pain of all the customers of the software that have only one way to resolve this issue when it happens - to restart the mistserver periodically.
However, the resolution is quite, quite, simple.
You just need to add close(S.getSocket()) in the master process. In every connector code you have while loop with a code like that (taken from HTTPProgressive):
Socket::Connection S = server_socket.accept();
if (S.connected()){ //check if the new connection is valid
pid_t myid = fork();
if (myid == 0){ //if new child, start MAINHANDLER
return Connector_HTTP::progressiveConnector(S);
}else{ //otherwise, do nothing or output debugging text
#if DEBUG >= 5
fprintf(stderr, "Spawned new process %i for socket %i\n", (int)myid, S.getSocket());
#endif
close(S.getSocket()); // THIS LINE HERE IS THE BUG FIX!!!
}
You just need to add there (where I have shown) "close(S.getSocket());" and everything will be fine.
You can easily verify the bug fix with lsof.
If everything is correct the lsof -p PID-of-the-master-connector should show you that the master has only two unix sockets open, and every child too.
If you see more sockets (and exponential growth of the allocated file descriptors) then you haven't applied the patch.
It works perfectly for me and fixes a lot of issues.
I have been very annoyed to apply this patch in the last 3 days to 1.0, 1.2 and 1.3 versions of the mist server, so please integrate it in the main code!
If I have a time I will write you about few other small patches you can do.
We have this set: "trustedproxy":["0.0.0.0/0"]
But it seems not to work:
lax | [2022-08-02 17:55:13] MistOutHLS:video+b0dcxvwml48mxt2s (1655) WARN: Host 89.187.185.251 is attempting to act as a proxy, but not trusted (/tmp/drone-7pq2c6BO3H9JHJZs/drone/src/src/output/output_http.cpp:540)
Hi,
First of all, thanks for such an amazing piece of open source software.
I'm using OBS to stream to the created stream in the MistServer web interface. I embedded the code it gave me with player.js.
It works great on desktop (tried chrome and edge) but on Android (chrome) it doesn't work well at all. Most of the time it will show a black screen, but sometimes it will play but just show a frame or two before freezing or buffering. What's interesting is I tried playing the .webm directly in the chrome Android browser and that doesn't play well either (it keeps buffering).
Any ideas why this isn't working well on mobile? I'm only streaming at around 1000 kbps, with keyframe interval 5 seconds, so I feel that it shouldn't be that hard to play on a mobile device.
Hello,
First: Great Project!
I have a issue, when pushing to rtmp:
HandShake: client signature does not match!
command is like this:
avconv -i http://192.168.1.50:9981/stream/channelid/251 -acodec libfaac -strict experimental -b:a 64k -ar 44100 -vcodec libx264 -filter:v yadif -threads 0 -preset:v fast -profile:v baseline -crf 20 -f mpegts -s 854x480 -r 25 rtmp://localhost/play/tvheadend
When doing:
mkdir build
cd build
cmake ..
cmake --build .
I get these errors:
https://gist.github.com/roxlu/b2e668151c81a856b806
D
Hi thanks for your software in the first place.
I have build the server on archlinux arm (armv7h RaspberryPi2) , with a home brew PKGBUILD
It gives me a warning about a unsigned intger in timings.cpp
src/mistserver-git/lib/timing.cpp:68:3: warning: this decimal constant is unsigned only in ISO C90 return ((((long long int)t.tv_sec) + 2208988800) << 32) + (t.tv_nsec * 4.2949);
I patched with --- See next post
diff -aur mistserver-git.a/lib/timing.cpp mistserver-git.b/lib/timing.cpp
--- mistserver-git.a/lib/timing.cpp 2016-01-29 16:33:35.306150858 +0100
+++ mistserver-git.b/lib/timing.cpp 2016-01-29 16:35:49.725261635 +0100
@@ -65,7 +65,7 @@
long long Util::getNTP() {
struct timespec t;
clock_gettime(CLOCK_REALTIME, &t);
- return ((((long long int)t.tv_sec) + 2208988800) << 32) + (t.tv_nsec * 4.2949);
+ return ((((long long int)t.tv_sec) + 2208988800U) << 32) + (t.tv_nsec * 4.2949);
}
/// Gets the current time in millisecon
Now it builds without issues. Thought you would like to know , thanks qinohe
When I build Mist locally (via livepeer/catalyst), the CMake stuff takes care of populating the binary version:
MistController --version
Version: mist-v3.0-91-gd10947e, release Generic_64
The Drone builds don't seem to have this property:
MistController --version
Version: Unknown, release Generic_64
- Flag: Shared memory disabled. Will use shared files in stead of shared memory as IPC method.
Built on Jul 21 2022, 20:09:51
Gotta be something broken in the version tags in CMakeLists.txt?
Hi,
How do I get a list of streams, without all the configured streams being deleted?
Gist Server 3.0 to pull RTST streams and send them to web browsers.
Latest 3.0 Mist Server on Ubuntu (under Windows 11 WSL)
Step 1. I can create a stream using push:// and follow configuration instructions to display an RTSP stream in the preview window (using ffmpeg to create an rtsp output from a local video file).
Step 2. I run a EasyDarwin rtsp server locally and then using ffmpeg to create a rtsp stream to publish it to EasyDarwin Server. I can play the RTSP stream using VLC or ffplay. However, I can not preview the stream from the rtsp stream following the user's manual as a pull input. The preview windows show "stream is offline" or "Stream is waiting for data". The detailed log file is attached for reference.
Need more instructions on troubleshooting the rtsp as a pull input.
There is "Stream processes" set in on the page of creating a stream. I can not find the relevant info in the user's manual. Do I need to create a stream process for a pull input? When a new "Stream Process" need to be created?
Perhaps this command: git describe --always --long --abbrev=8 --dirty --tags
We had a stream working for a while. That stream started and stopped. Afterward, we couldn't replicate the stream to certain servers. Just this over and over:
[2022-08-02 18:41:29] MistOutHLS:video+b0dcxvwml48mxt2s (490) INFO: Shared metadata not ready yet - no tracks valid (/tmp/drone-7pq2c6BO3H9JHJZs/drone/src/lib/dtsc.cpp:2151)
Mistserver version: 3.0 Free_64
Server OS: Debian 11.2
# netstat -tulpn | grep 8002
udp 0 0 0.0.0.0:8002 0.0.0.0:* 500806/MistInTSSRT
OBS Server url: srt://<ip>:8002
If you need any additional information or command I should run on the server for debugging this, please just let me know.
EDIT:
The video encoder used on OBS is x265 with CBR set to 2500 Kbps and streaming using rtmp
works without issues.
Hello
I start using Mistserver on my vod platform, and I have some question about usage ( at this moment I use open source version ), My first question is: how I can get backup from my data ( stream data ) and restore it
The mbedtls/ctr_drbg.h
installed by brew is not being picked up by cmake.
% brew search mbedtls
==> Formulae
mbedtls ✔ mbedtls@2 ✔
% ls -al /usr/local//include/mbedtls
lrwxr-xr-x 1 jayvdb staff 39 27 Apr 22:58 /usr/local//include/mbedtls -> ../Cellar/mbedtls/3.1.0/include/mbedtls
mistserver % cd build
build % cmake ..
CMake Deprecation Warning at CMakeLists.txt:4 (cmake_minimum_required):
Compatibility with CMake < 2.8.12 will be removed from a future version of
CMake.
Update the VERSION argument <min> value or use a ...<max> suffix to tell
CMake that the project does not need compatibility with older versions.
-- The C compiler identification is AppleClang 13.1.6.13160021
-- The CXX compiler identification is AppleClang 13.1.6.13160021
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: /Library/Developer/CommandLineTools/usr/bin/cc - skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: /Library/Developer/CommandLineTools/usr/bin/c++ - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
Builing release "Generic_64" for version "3.0" @ debug level 4
Building with SRT
-- Found Doxygen: /usr/local/bin/doxygen (found version "1.9.2") found components: doxygen dot
Not cross compiling - building sourcery
-- Configuring done
-- Generating done
-- Build files have been written to: /Users/jayvdb/inv/mistserver/build
build % make
[ 0%] Building CXX object CMakeFiles/mist.dir/lib/mp4_dash.cpp.o
In file included from /Users/jayvdb/inv/mistserver/lib/mp4_dash.cpp:2:
In file included from /Users/jayvdb/inv/mistserver/lib/mp4_dash.h:2:
In file included from /Users/jayvdb/inv/mistserver/lib/mp4.h:2:
In file included from /Users/jayvdb/inv/mistserver/lib/dtsc.h:6:
In file included from /Users/jayvdb/inv/mistserver/lib/json.h:3:
/Users/jayvdb/inv/mistserver/lib/socket.h:21:10: fatal error: 'mbedtls/ctr_drbg.h' file not found
#include "mbedtls/ctr_drbg.h"
^~~~~~~~~~~~~~~~~~~~
1 error generated.
make[2]: *** [CMakeFiles/mist.dir/lib/mp4_dash.cpp.o] Error 1
make[1]: *** [CMakeFiles/mist.dir/all] Error 2
make: *** [all] Error 2
The '/api@Statistics' is pretty cool, but it would be nice if we had more freedom to get MistServer statistics as a JSON/XML so that we could plug it on our custom monitoring software.
Maybe https://github.com/DDVTECH/mistserver/blob/d8f57afae1b197a894d4cc1299c132d0e53a9946/api/mist_api.sh is a start?
Hi - I've bought several mistserver licences on the past, and wanted to try mistserver for ARM. I wanted to know, cause haven't seen any in the README, how to build for ARM
PR #72 introduced a problem with the replication across the regions.
Comment from @emranemran
Just tested a build with the suspicious mist commit (5d1b02f) reverted and we're seeing a much better experience. So we're reverting this to get back to stable state. @Thulinma would you be able to reintroduce this commit required for Evan's work or help debug? I wish we could share logs of the failures but they're nonexistent atm due to the Loki logging issue. FWIW, I saw unable to playback running catalyst locally as well with the problematic commit in place i.e. ingest into node1 and playback from node2.
I noticed that in HLS output there are CC errors for video and audio PIDs between TS-segment boundaries.
So it looks like CC counters are reset on segment split by mistake.
[https://trac.ffmpeg.org/ticket/2828]
System: MistServer Pro 2.7
MistConnHTTPProgressive processes are building up. Right now I have 3 connections and 8 MistConnHTTPProgressive processes. None of them are zombies.
Neither of your Windows builds download links (64 & 32-bit) work.
I am on a Debian machine and I am getting the following errors when trying to pull the video stream from an Axis camera
Mon 15 Nov 2021, 17:20:12 | WARN | Input for stream multicast uncleanly shut down! Restarting...
Mon 15 Nov 2021, 17:20:12 | FAIL | Creating semaphore /MstSTAT failed: No such file or directory
Mon 15 Nov 2021, 17:20:07 | FAIL | Creating copy of semaphore /MstUSERmulticast failed: No such file or directory
Mon 15 Nov 2021, 17:20:02 | FAIL | Creating semaphore /MstUSERmulticast failed: No such file or directory
Mon 15 Nov 2021, 17:19:57 | WARN | Could not get stream 'multicast' config!
Mon 15 Nov 2021, 17:11:02 | ACCS | Session <d0cbc190c1de060b40ec2ede70ae0485> kirche (MP4) from 62.178.79.107 ended after 993s, avg 482KB/s up 0KB/s down. Tags: [UA:Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.69 Safari/537.36 Edg/95.0.1020.53]
Mon 15 Nov 2021, 17:10:46 | FAIL | onFail 'kirche': Could not connect to stream
Mon 15 Nov 2021, 17:10:26 | WARN | Timestamps went from 0 to 1871710 (increased): rewriting timestamps for continuity
Mon 15 Nov 2021, 17:10:19 | ACCS | Session <b685ea8c3ff9be5dd914bdeb9801243d> kirche (INPUT:RTMP) from 62.157.176.34 ended after 2s, avg 0KB/s up 0KB/s down.
Mon 15 Nov 2021, 17:10:11 | ACCS | Session <16431b88d22512c3a71de65fa4592c27> kirche (INPUT:RTMP) from 62.157.176.34 ended after 1s, avg 3KB/s up 3KB/s down.
Mon 15 Nov 2021, 17:10:05 | ACCS | Session <a7bb8de404de83591b870c7485857229> kirche (INPUT:RTMP) from 62.157.176.34 ended after 1772s, avg 0KB/s up 513KB/s down.
Mon 15 Nov 2021, 17:10:01 | WARN | Dropping input track 1: disconnect request from buffer
Mon 15 Nov 2021, 17:10:01 | WARN | Dropping input track 0: disconnect request from buffer
Mon 15 Nov 2021, 17:10:00 | WARN | Dropping kirche (AAC) track 1@k840 (nextP=4294967295, lastP=810): disappeared from metadata
Mon 15 Nov 2021, 17:10:00 | WARN | Dropping kirche (H264) track 0@k860 (nextP=4294967295, lastP=858): disappeared from metadata
Mon 15 Nov 2021, 17:10:00 | WARN | Erasing kirche track 1 (audio/AAC) because not updated for 51s (> 50s)
Mon 15 Nov 2021, 17:10:00 | WARN | Erasing kirche track 0 (video/H264) because not updated for 51s (> 50s)
Mon 15 Nov 2021, 17:09:57 | WARN | Input for stream multicast uncleanly shut down! Restarting...
Mon 15 Nov 2021, 17:09:57 | FAIL | Creating semaphore /MstSTAT failed: No such file or directory
Mon 15 Nov 2021, 17:09:52 | FAIL | Creating copy of semaphore /MstUSERmulticast failed: No such file or directory
Mon 15 Nov 2021, 17:09:47 | FAIL | Creating semaphore /MstUSERmulticast failed: No such file or directory
Mon 15 Nov 2021, 17:09:42 | WARN | Could not get stream 'multicast' config!
Mon 15 Nov 2021, 17:09:41 | ACCS | Session <d4632f503a2fca015614e416bb1315f2> kirche (INPUT:RTMP) from 62.157.176.34 ended after 1s, avg 3KB/s up 3KB/s down.
Mon 15 Nov 2021, 17:09:30 | WARN | Waiting for lookahead (5000ms in 2 tracks) timed out - resetting lookahead!
Mon 15 Nov 2021, 17:09:30 | WARN | Track 0: 1795360 <= 1795360
any ideas what could be the cause of this issue?
Hi Group,
I have built and successfully configured the MistServer and components from the master branch.
The issue I am facing is mistserver is unable to transcode WMA streams into mp3 stream using ffmpeg.
eg. http://streaming2.eu.radiomaria.org/guatemala http://wms1.iviplanet.com/NuevoMundo
Also some mp3 streams are also not converting and streaming.
eg. http://olimpica970.com:6040/;stream/1
I'm trying out mist server, and upon adding an ogg file and attempting to play it with the embed code, it plays about 1 or 2 seconds, then cuts off. Upon looking at logs, it says it could not fread at offset x, where x seems to be the last byte of the file. Weirdly enough, upon using the preview feature it will play fine in a loop. Any thoughts? Using mist server 2.18 on arch linux.
-Michael.
Mime types showing as text/html causing cross origin issues in Chrome. Can JS and CSS Files please be updated to use correct mime types please
when i compile mistserver on ubuntu 12.04 x86_64 server
it remind me to install libmist
so i compile libmist
after that i comile successed, but how to start it??
can you help me ???
The bitrate indicated by HDS manifest is much to high (by around factor 1000).
System: MistServer Pro 2.7
please add me on this account. thank u :)
Mistserver 3.1 on CentOS Stream 9. We restarted the service:
Jul 23 06:07:12 server systemd[1]: Stopping MistServer...
Jul 23 06:07:12 server MistController[3804293]: [2022-07-23 06:07:12] MistController (3804293) CONF: Controller shutting down because of user request (received shutdown signal)
Jul 23 06:07:13 server MistController[3804293]: Killed all processes, wrote config to disk. Exiting.
Jul 23 06:07:22 server systemd[1]: mistserver.service: State 'final-sigterm' timed out. Killing.
Jul 23 06:07:22 server systemd[1]: mistserver.service: Killing process 3804411 (MistInTS) with signal SIGKILL.
Jul 23 06:07:22 server systemd[1]: mistserver.service: Killing process 3804412 (MistInTS) with signal SIGKILL.
Jul 23 06:07:22 server systemd[1]: mistserver.service: Killing process 3804414 (MistInBuffer) with signal SIGKILL.
Jul 23 06:07:22 server systemd[1]: mistserver.service: Killing process 3804415 (MistInBuffer) with signal SIGKILL.
Jul 23 06:07:22 server systemd[1]: mistserver.service: Killing process 3804419 (MistInTS) with signal SIGKILL.
Jul 23 06:07:22 server systemd[1]: mistserver.service: Killing process 3804420 (MistInTS) with signal SIGKILL.
Jul 23 06:07:22 server systemd[1]: mistserver.service: Killing process 3804422 (MistInBuffer) with signal SIGKILL.
Jul 23 06:07:22 server systemd[1]: mistserver.service: Killing process 3804423 (MistInBuffer) with signal SIGKILL.
Jul 23 06:07:22 server systemd[1]: mistserver.service: Killing process 3804431 (MistInTS) with signal SIGKILL.
Jul 23 06:07:22 server systemd[1]: mistserver.service: Killing process 3804432 (MistInTS) with signal SIGKILL.
Jul 23 06:07:22 server systemd[1]: mistserver.service: Killing process 3804434 (MistInBuffer) with signal SIGKILL.
Jul 23 06:07:22 server systemd[1]: mistserver.service: Killing process 3804435 (MistInBuffer) with signal SIGKILL.
Jul 23 06:07:22 server systemd[1]: mistserver.service: Killing process 3850985 (MistInTS) with signal SIGKILL.
Jul 23 06:07:22 server systemd[1]: mistserver.service: Killing process 3850986 (MistInTS) with signal SIGKILL.
Jul 23 06:07:22 server systemd[1]: mistserver.service: Killing process 3850988 (MistInBuffer) with signal SIGKILL.
Jul 23 06:07:22 server systemd[1]: mistserver.service: Killing process 3850989 (MistInBuffer) with signal SIGKILL.
Jul 23 06:07:22 server systemd[1]: mistserver.service: Failed with result 'timeout'.
Jul 23 06:07:22 server systemd[1]: mistserver.service: Unit process 3804412 (MistInTS) remains running after unit stopped.
Jul 23 06:07:22 server systemd[1]: mistserver.service: Unit process 3804414 (MistInBuffer) remains running after unit stopped.
Jul 23 06:07:22 server systemd[1]: mistserver.service: Unit process 3804415 (MistInBuffer) remains running after unit stopped.
Jul 23 06:07:22 server systemd[1]: mistserver.service: Unit process 3804420 (MistInTS) remains running after unit stopped.
Jul 23 06:07:22 server systemd[1]: mistserver.service: Unit process 3804422 (MistInBuffer) remains running after unit stopped.
Jul 23 06:07:22 server systemd[1]: mistserver.service: Unit process 3804423 (MistInBuffer) remains running after unit stopped.
Jul 23 06:07:22 server systemd[1]: mistserver.service: Unit process 3804431 (MistInTS) remains running after unit stopped.
Jul 23 06:07:22 server systemd[1]: mistserver.service: Unit process 3804432 (MistInTS) remains running after unit stopped.
Jul 23 06:07:22 server systemd[1]: mistserver.service: Unit process 3804434 (MistInBuffer) remains running after unit stopped.
Jul 23 06:07:22 server systemd[1]: mistserver.service: Unit process 3804435 (MistInBuffer) remains running after unit stopped.
Jul 23 06:07:22 server systemd[1]: mistserver.service: Unit process 3850985 (MistInTS) remains running after unit stopped.
Jul 23 06:07:22 server systemd[1]: mistserver.service: Unit process 3850986 (MistInTS) remains running after unit stopped.
Jul 23 06:07:22 server systemd[1]: mistserver.service: Unit process 3850988 (MistInBuffer) remains running after unit stopped.
Jul 23 06:07:22 server systemd[1]: mistserver.service: Unit process 3850989 (MistInBuffer) remains running after unit stopped.
Jul 23 06:07:22 server systemd[1]: Stopped MistServer.
After restart a lof of such messages started to appear:
Jul 23 06:07:56 server MistController[3879038]: [2022-07-23 06:07:56] MistInTS:bf5002 (3879375) WARN: A pull process for this stream is already running
Jul 23 06:07:56 server MistController[3879038]: [2022-07-23 06:07:56] MistInTS:bf5002 (3879377) WARN: A pull process for this stream is already running
Jul 23 06:07:56 server MistController[3879038]: [2022-07-23 06:07:56] MistOutHTTPTS:bf5012 (3879251) FAIL: Input process (PID 3879346) shut down before stream coming online, aborting.
Jul 23 06:07:56 server MistController[3879038]: [2022-07-23 06:07:56] MistOutHTTPTS:bf5012 (3879251) FAIL: onFail 'bf5012': Stream open failed
Jul 23 06:07:56 server MistController[3879038]: [2022-07-23 06:07:56] MistOutHTTPTS:bf5012 (3879251) FAIL: onFail 'bf5012': Could not connect to stream
Jul 23 06:07:56 server MistController[3879038]: [2022-07-23 06:07:56] MistInTS:bf5012 (3879378) WARN: A pull process for this stream is already running
Jul 23 06:07:56 server MistController[3879038]: [2022-07-23 06:07:56] MistInTS:bf5002 (3879380) WARN: A pull process for this stream is already running
Jul 23 06:07:57 server MistController[3879038]: [2022-07-23 06:07:57] MistOutHTTPTS:bf5012 (3879306) FAIL: Input process (PID 3879352) shut down before stream coming online, aborting.
Jul 23 06:07:57 server MistController[3879038]: [2022-07-23 06:07:57] MistOutHTTPTS:bf5012 (3879306) FAIL: onFail 'bf5012': Stream open failed
Jul 23 06:07:57 server MistController[3879038]: [2022-07-23 06:07:57] MistOutHTTPTS:bf5012 (3879306) FAIL: onFail 'bf5012': Could not connect to stream
Jul 23 06:07:57 server MistController[3879038]: [2022-07-23 06:07:57] MistInTS:bf5012 (3879381) WARN: A pull process for this stream is already running
Only after 2nd restart they disappeared.
For unrelated reasons (https://github.com/livepeer/livepeer-infra/issues/937) sometimes MistProcLivepeer starts trying to attempt to transcode before go-livepeer is ready. Transcoding eventually starts working, but the stream never adds the video tracks, only the returned audio tracks. Symptoms look like this in the HLS playlist:
#EXTM3U
#EXT-X-INDEPENDENT-SEGMENTS
#EXT-X-MEDIA:TYPE=AUDIO,GROUP-ID="aud",LANGUAGE="und-1",NAME="AAC-1",URI="1/index.m3u8?mTrack=0&iMsn=1&sessId=1712968958"
#EXT-X-MEDIA:TYPE=AUDIO,GROUP-ID="aud",LANGUAGE="und-2",NAME="AAC-2",URI="2/index.m3u8?mTrack=0&iMsn=1&sessId=1712968958"
#EXT-X-MEDIA:TYPE=AUDIO,GROUP-ID="aud",LANGUAGE="und-3",NAME="AAC-3",URI="3/index.m3u8?mTrack=0&iMsn=1&sessId=1712968958"
#EXT-X-MEDIA:TYPE=AUDIO,GROUP-ID="aud",LANGUAGE="und-4",NAME="AAC-4",URI="4/index.m3u8?mTrack=0&iMsn=1&sessId=1712968958"
#EXT-X-MEDIA:TYPE=AUDIO,GROUP-ID="aud",LANGUAGE="und-5",NAME="AAC-5",URI="5/index.m3u8?mTrack=0&iMsn=1&sessId=1712968958"
#EXT-X-MEDIA:TYPE=AUDIO,GROUP-ID="aud",LANGUAGE="und-6",NAME="AAC-6",URI="6/index.m3u8?mTrack=0&iMsn=1&sessId=1712968958"
#EXT-X-MEDIA:TYPE=AUDIO,GROUP-ID="aud",LANGUAGE="und-7",NAME="AAC-7",URI="7/index.m3u8?mTrack=0&iMsn=1&sessId=1712968958"
#EXT-X-MEDIA:TYPE=AUDIO,GROUP-ID="aud",LANGUAGE="und-8",NAME="AAC-8",URI="8/index.m3u8?mTrack=0&iMsn=1&sessId=1712968958"
#EXT-X-MEDIA:TYPE=AUDIO,GROUP-ID="aud",LANGUAGE="und-9",NAME="AAC-9",URI="9/index.m3u8?mTrack=0&iMsn=1&sessId=1712968958"
#EXT-X-STREAM-INF:AUDIO="aud",CODECS="avc1.64002a,mp4a.40.2",RESOLUTION=1920x1080,FRAME-RATE=60,BANDWIDTH=14223550,AVERAGE-BANDWIDTH=12035311
0/index.m3u8?mTrack=0&iMsn=1&sessId=1712968958
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.