I am trying to embed an RTSP stream from an IP Camera into a website. I've found out, that embedding an RTSP directly is tricky and resourceful, also it requires the user to take some crucial actions (installing different players like VLC or enabling some browser plugins), so I decided to convert the RTSP stream into a live stream (HLS or MPEG-DASH) on the fly, using FFMPEG. When I try to generate HLS files, the CPU load jumps to 100%, so I thought (as my video server is pretty weak, with a single-core CPU) that MPEG-DASH is the option for me to stick with, as it adds 2-3% of cpu load, which is more than acceptable. However, when I try to validate my manifest.mpd file with https://conformance.dashif.org/ it returns the following:
✔ XLink resolving
✖ MPD Validation
✖ Schematron Validation
I tried to play the livestream's manifest with Dash.js but the player stucks in Loading state. However, when I try to play this livestram's manifest with VLC, JW Player 8 and THEOPlayer, it works perfectly. Yet, ffprobe
returns: http://MY_PUBLIC_IP:PORT/mpeg-dash/manifest.mpd: Invalid data found when processing input
. What am I doing wrong, and how to generate my dash files, so they would be playable with conventional (and free) players like Dash.js?
Resources:
The command I'm using: ffmpeg -i rtsp://USERNAME:PASSWORD@192.168.0.200:554/live -an -c:v copy -b:v 2000k -f dash -window_size 10 -extra_window_size 0 -min_seg_duration 2000000 -use_timeline 1 -use_template 1 -remove_at_exit 1 /var/www/camera/mpeg-dash/manifest.mpd