Mixer doesn't show any video

wyvasi

Member
Good day! after I start mixer and add video/audio stream. Only audio is working.
/mixer/startup
Code:
{
  "hasVideo": "true",
  "hasAudio": "true",
  "localStreamName": "joe",
  "uri": "mixer://joe"
}
mixer/add
Code:
{
  "uri": "mixer://joe",
  "remoteStreamName": "video"
}
Can you tell me what I am doing wrong?
I sent the Report with logs.
 
Last edited:

wyvasi

Member
I keep seeing this error in logs when I try to reproduce the issue I am having. Do you have any idea?
Code:
15:46:52,480 WARN            RestClient - API-ASYNC-pool-13-thread-8 POST request resulted in 500 (Internal Server Error)
15:46:52,481 INFO            RestClient - API-ASYNC-pool-13-thread-8 Failed to get error status
org.codehaus.jackson.JsonParseException: Unexpected character ('<' (code 60)): expected a valid value (number, String, array, object, 'true', 'false' or 'null')
 at [Source: java.io.StringReader@683fef2b; line: 1, column: 2]
    at org.codehaus.jackson.JsonParser._constructError(JsonParser.java:1433)
    at org.codehaus.jackson.impl.JsonParserMinimalBase._reportError(JsonParserMinimalBase.java:521)
    at org.codehaus.jackson.impl.JsonParserMinimalBase._reportUnexpectedChar(JsonParserMinimalBase.java:442)
    at org.codehaus.jackson.impl.ReaderBasedParser._handleUnexpectedValue(ReaderBasedParser.java:1198)
    at org.codehaus.jackson.impl.ReaderBasedParser.nextToken(ReaderBasedParser.java:485)
    at org.codehaus.jackson.map.ObjectMapper._initForReading(ObjectMapper.java:2770)
    at org.codehaus.jackson.map.ObjectMapper._readMapAndClose(ObjectMapper.java:2718)
    at org.codehaus.jackson.map.ObjectMapper.readValue(ObjectMapper.java:1863)
    at com.flashphoner.rest.client.ErrorStatus.fromJson(Unknown Source)
    at com.flashphoner.rest.client.RestClient.handleErrorResponse(Unknown Source)
    at com.flashphoner.rest.client.RestClient.postForObject(Unknown Source)
    at com.flashphoner.server.rmi.ManagerApiConnection.processDataObject(Unknown Source)
    at com.flashphoner.server.rmi.ManagerApiConnection.getApiMethodResult(Unknown Source)
    at com.flashphoner.server.rmi.ManagerApiConnection.lambda$notifyApiAsync$1(Unknown Source)
    at java.base/java.util.concurrent.CompletableFuture$AsyncRun.run(CompletableFuture.java:1807)
    at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
    at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
    at java.base/java.lang.Thread.run(Thread.java:835)
 

Max

Administrator
Staff member
In the report provided we can't find a client log for the video stream which you're trying to add to the mixer joe:
1669165892045.png

Please check the video stream metrics: is there any video traffic in the stream?
I keep seeing this error in logs when I try to reproduce the issue I am having. Do you have any idea?
Seems like your backend server returns 500 Internal Server Error on some REST hook sent from WCS. If backend response is not 200 OK, WCS looks for the status and reason fields in the response body. If the response body cannot be parsed (or absent at all), WCS throws such exception and sets the error status and code according to response header (please read details here Sending custom error message to a client):
1669167058897.png

So it is a normal behaviour for WCS (it just reports the error received from backend). But we recommend to check the backend server logs for 500 Internal error possible reasons.
 

wyvasi

Member
I fixed the REST hook issue on /publishStream, but still get black image after trying to inject video stream into the mixer. I checked the video stream is fine ( checked on media devices ), playing from origin and edge. Also after about a ~1 minute the mixer stops.
Code:
Video stats
Codec: H264
Codec Rate: 90000
Packets Lost: 7
Packets Received: 46210
Bytes Received: 51074118
Jitter Buffer Emitted Count: 15804
Fir Count: 0
Pli Count: 25
Nack Count: 3817
Height: 480
Width: 640
Bitrate: 822288
What should I do?
 
Last edited:

Max

Administrator
Staff member
Also after about a ~1 minute the mixer stops
The mixer stops because it cannot start mixing the stream.
Packets Received: 46210
Nack Count: 3817
You have about 8% of packets which are not received properly, this is a channel quality issue. Try to use TCP for publishing, or use lower resolution/bitrate. A browser can play such stream because it uses jitter buffer for playback, but mixer does not.
You can increase mixer input buffer
Code:
mixer_in_buffering_ms=600
but it may give an additional delay.
Also a strict jitter buffer for publishing streams may help
Code:
use_strict_jitter_buffer=true
jitter_buffer_capacity=30
 
Last edited:

wyvasi

Member
Tried it again to a closer server where NackCount is 0, and video never gets added(tried both with and without the configuration settings ).
It only shows black if there is audio and video stream(attached photo) and I didn't see any errors in the in logs.
 

Attachments

Last edited:

Max

Administrator
Staff member
Does mixer have audio of the added stream? Please send the logs (including the client log for the added stream).
 

Max

Administrator
Staff member
In stream client log, we see periodic exceptions after the stream is added to the mixer:
1670547926924.png

A similar issue is fixed since build 5.2.1402, so please update WCS to the latest build 5.2.1504 and test again.
If the problem is still reproducing, we need a traffic dump and client log for incoming stream (this allows to play the stream from the dump and reproduce the problem at our side). To collect them:
1. Switch publishing to UDP (mandatory, otherwise we can't play the stream from the dump)
2. Enable debug logs, restart WCS
3. Start dump collection
Code:
tcpdump -npi any -B 10240 -w log.pcap
4. Publish the stream, add it to mixer, reproduce the problem
5. Stop publishing
6. Stop dump collection
7. Collect a report using report.sh script.
8. Send the report (do not modify its content) and traffic dump using the form.
 

Max

Administrator
Staff member
We reproduced the issue and raised the ticket WCS-3663. Will inform about progress.
As workaround, disable streaming distribution subgroups on server where mixer is used:
Code:
streaming_distributor_subgroup_enabled=false
 
Top