Not able to play the MPEG-DASH stream protocol in Vero 4k+

Hi,

I am trying to play in my Vero 4K+ a local DASH stream. I am testing to stream my desktop screen using OBS and nginx. I manage to watch the stream in my mobile phone using VLC but in OSMC I get the next error.

One or more items failed to play. Check the log for more information about this message.

and the log output is the next one:
https://paste.osmc.tv/orabomimat.xml

Could it be that DASH is not supported?

nb: I also tried to stream using HLS and play it in the Vero 4k+, and for this case I don’t have any problem.

Cheers

The actual problem seems to be that Kodi does not have access to this stream.

Sorry for the late reply, I didn’t have much time.

It doesn’t look a problem of file access. I checked, and nginx is creating the files with the proper permissions. Also I compare it with the working HLS stream and it has the same accessing errors but HLS works. And if I use my mobile phone for the DASH stream, it works using VLC.

Log output for the working HLS stream:
https://paste.osmc.tv/ivusowuqew.xml

Comparing both logs the difference looks like it is in the Creating Demuxer. For HLS works but it fails for DASH.

Cheers

Hi,

Problem is still 403 (permission related).

My suspicion is that HLS and DASH have different URLs.

The 403 happens for both DASH and HLS.

In VLC works for both. And OSMC what I guess that is happening is that the plugin behind the streaming (inputstream.adaptive?) just make multiple tries in order to guess the protocol, and in one of the multiple protocol that supports ask for something not generated by nginx causing the 403.

Regarding the DASH protocol, again it looks like that I have nginx properly configured as I can access it via VLC. The implementation in VLC and OSMC sure that it is different but it will be weird that one gets a 403 and the another no.

In any case I did the changes and here is the output for HLS using the same url as DASH. Working without problems:
https://paste.osmc.tv/ihanuvofag.xml

What’s the actual contents of the .strm?
With partial logs it is a bit difficult to get the full picture.

Hi,

this is my full configuration.

  • The .strm files:

    • dashStream.strm
      http://192.168.3.20:8081/dash/obs.mpd
      
    • hlsStream.strm
      http://192.168.3.20:8081/hls/obs.m3u8
      
  • The nginx conf files:

    • nginx.conf

      ...
      rtmp {
          server {
              listen 1935;
              chunk_size 4096;
              allow publish 127.0.0.1;
              deny publish all;
      
              application live {
                  live on;
                  record off;
      	    
      	    hls on;
                  hls_path /var/www/html/hls;
                  # hls_path /var/www/html/dash;
                  hls_fragment 3;
                  hls_playlist_length 60;
      
      	    dash on;
      	    dash_path /var/www/html/dash;
      	    dash_fragment 15s;
              }
          }
      }
      ...
      
    • sites-available/streamObs

      server {
          listen 8081;
          server_name  localhost;
      
          root /var/www/html;
      
          location /dash {
              # Serve DASH fragments
              types {
      		application/dash+xml mpd;
      	        video/mp4 mp4;
              }
              
              add_header Cache-Control no-cache;
      
              # CORS setup
              add_header 'Access-Control-Allow-Origin' '*' always;
              add_header 'Access-Control-Expose-Headers' 'Content-Length';
      
              # Allow CORS preflight requests
             if ($request_method = 'OPTIONS') {
                 add_header 'Access-Control-Allow-Origin' '*';
                 add_header 'Access-Control-Max-Age' 1728000;
                 add_header 'Content-Type' 'text/plain charset=UTF-8';
                 add_header 'Content-Length' 0;
                 return 204;
             }
          }
      
              location /hls {
              # Disable cache
              add_header Cache-Control no-cache;
      
              # CORS setup
              add_header 'Access-Control-Allow-Origin' '*' always;
              add_header 'Access-Control-Expose-Headers' 'Content-Length';
      
              # allow CORS preflight requests
              if ($request_method = 'OPTIONS') {
                  add_header 'Access-Control-Allow-Origin' '*';
                  add_header 'Access-Control-Max-Age' 1728000;
                  add_header 'Content-Type' 'text/plain charset=UTF-8';
                  add_header 'Content-Length' 0;
                  return 204;
              }
              
      
              types {
                  application/vnd.apple.mpegurl m3u8;
                  video/mp2t ts;
              }
      
          }
      
      
          # rtmp stat
          location /stat {
              rtmp_stat all;
              rtmp_stat_stylesheet stat.xsl;
          }
          
          location /stat.xsl {
              root /var/www/html/rtmp;
          }
      
          # rtmp control
          location /control {
              rtmp_control all;
          }
      }
      
  • Logs with debug mode enable