Video Streaming Corruption

Taylor

Member
Hello

We have an issue were a number of users have been getting corrupted videos using the stream publishing but we are unable to figure out why or re-create it.

We think one of the factors may be the OS - Browser, Windows 10 - Chrome, as they all have the same user agent, however when we attempted on the same OS - Browser it went through fine.

I cannot share the videos for privacy reasons, so I'm hoping that by at least sharing the meta-data there might be a pattern/hint that'll lead to fixing it. Our only idea is that it's either due to the Os - Browser or a poor internet connection.

Each of them have attempted to do recordings multiple times but have ended up with the same results.

User Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.54 Safari/537.36
OS: Windows 10
Browser: Chrome

WCS: 5.2.944-5acbc64fdeb97e83bdf77d41ee2b17e1e4059e73
Web SDK: 2.0.168-a8c61f9ba0f76ff2f159a4ca4cf1f355c27f59e1

Media Server Settings:
periodic_fir_request=true
record_audio_codec_channels=1

Video 1:

File Size: 47.7kB​
Duration: 0 seconds​
Video - Dimensions: 320x240​
Video - Codec: H.264 (Constrained Baseline Profile)​
Video - Frame Rate: 20 fps​
Video - Bit Rate: 7514 kbps​
Audio - Codec: N/A​
Audio - Channels: 0​
Audio - Sample Rate: 0 Hz​
Audio - Bit Rate: N/A​
Time Between Start and Stop Streaming: 60 seconds approx.​

Video 2:

File Size: 64.1kB​
Duration: 1 second​
Video - Dimensions: 320x240​
Video - Codec: H.264 (Constrained Baseline Profile)​
Video - Frame Rate: 30 fps​
Video - Bit Rate: 397 kbps​
Audio - Codec: MPEG-4 AAC​
Audio - Channels: Mono​
Audio - Sample Rate: 44100 Hz​
Audio - Bit Rate: 74 kbps​
Time Between Start and Stop Streaming: 50 seconds approx.​

Video 3:

File Size: 8.2kB​
Duration: 0 seconds​
Video - Dimensions: 320x240​
Video - Codec: H.264 (Constrained Baseline Profile)​
Video - Frame Rate: N/A​
Video - Bit Rate: N/A​
Audio - Codec: N/A​
Audio - Channels: 0​
Audio - Sample Rate: 0 Hz​
Audio - Bit Rate: N/A​
Time Between Start and Stop Streaming: 19 seconds approx.​

Video 4:

File Size: 42.5kB​
Duration: 0 seconds​
Video - Dimensions: 320x240​
Video - Codec: H.264 (Constrained Baseline Profile)​
Video - Frame Rate: 13 fps​
Video - Bit Rate: 2499 kbps​
Audio - Codec: MPEG-4 AAC​
Audio - Channels: Mono​
Audio - Sample Rate: 44100 Hz​
Audio - Bit Rate: 74kbps​
Time Between Start and Stop Streaming: 58 seconds approx.​

Video 5:

File Size: 23.2kB​
Duration: 0 seconds​
Video - Dimensions: 320x240​
Video - Codec: H.264 (Constrained Baseline Profile)​
Video - Frame Rate: 30.33 fps​
Video - Bit Rate: 5434 kbps​
Audio - Codec: N/A​
Audio - Channels: 0​
Audio - Sample Rate: 0 Hz​
Audio - Bit Rate: N/A​
Time Between Start and Stop Streaming: 49 seconds approx.​

Our recorded video for comparison (working fine):

File Size: 252.2kB​
Duration: 5 seconds​
Video - Dimensions: 320x240​
Video - Codec: H.264 (Constrained Baseline Profile)​
Video - Frame Rate: 25 fps​
Video - Bit Rate: 296 kbps​
Audio - Codec: MPEG-4 AAC​
Audio - Channels: Mono​
Audio - Sample Rate: 44100 Hz​
Audio - Bit Rate: 74 kbps​
Time Between Start and Stop Streaming: 5 seconds​

Thanks
 

Max

Administrator
Staff member
Good day.
I cannot share the videos for privacy reasons, so I'm hoping that by at least sharing the meta-data there might be a pattern/hint that'll lead to fixing it. Our only idea is that it's either due to the Os - Browser or a poor internet connection.
This seems like publisher channel issue. For all the corrupted recordings duration is shown 0 or 1 second, and file size is too small for corresponding publishing time. This means packets loss, or audio-video synchronization problems, or both reasons leading to a small amount of media data in file.
So you should recommend to those clients to use more reliable network, for example LTE instaed of 3G, Wi-Fi instead of LTE, wired connection instead of Wi-Fi etc.
Also, you can use TCP for publishing, this should help to eliminate packet loss.
Code:
session.createStream({
    name: streamName,
    display: localVideo,
    ...
    transport: "TCP"
}).on(STREAM_STATUS.PUBLISHING, function (stream) {
...
}).publish();
Some our customers also claim the latest Chrome build 95.0.4638.54 problems on relatively old GPUs. The main symptom is 100% GPU load in Chrome task manager. In this case, hardware acceleration disabling in browser settings may help.
 

Taylor

Member
Hello Max

Thank you for the quick reply. This is the kind of answer I was hoping for.

I will let the team know about the potential issue with the latest Chrome build and what we can do regarding the potential issue that it's due to an unreliable network.

As for setting transport publishing to TCP, while that is definitely something I'd like to try out, since we cannot recreate the issue and it'll require code changes, it may not be possible for me to implement and test this at this time.

Once again, thank you so much for the reply.
 
Top