RTSP Proxy for local accessed content archive - proxy

I have local access from one computer to RTSP server by my ISP which is delivering IPTV content archive (timeshift). RTSP is avilable only from this computer because it has correctly configured internet access to the server. Because I would like to watch the content of this RTSP server on every device at home, I'd like to create local server which would accept connections and just transfer data from the end server (by ISP) to client.
I already tried to configure Live555 RTSP Proxy, but it's not really the right software which would enable me what I need. Another thing I tried out is Darwin Streaming Server, but I think it wouldn't support the format of IPTV content archive. What do I actually need?
Link to ISP's content archive looks like: rtsp://archive.my-isp.tld:554/programme_id_channel.ts.
I would like to access to the same stream via rtsp://IP-of-my-computer:port/programme_id_channel.ts.
Is there any software which is acting like proxy and it would be possible to set it to my needs? I would really appreciate any answer and help.
P.S.: Type of ISP's stream is MPEG TS.
EDIT: I already tried out node-ffmpeg-mpegts-proxy and it works good for approximately 10 seconds, then I got some error from avconv about RTSP packet loss and stream stops. I would also need an option to seek video to wanted destination and with current setup (default options of avconv) of node-ffmpeg-mpegts-proxy. For the start I need something that will successfully stream video from source to destination.

Related

Proxying an RTSP url using an RTSP Proxy Server

I have a use case where I need to restream an RTSP URL.
For all the below cases, Live555 is built locally by cloning the source.
For all the below cases, required ports are opened for RTSP in respective servers.
First I set up a file to be streamed using Live555MediaServer. This is in an AWS instance (AWS1).
./Live555MediaServer ashi.webm gives
rtsp://public_IP_of_instance:8554/ashi.web
I check whether an incoming stream is working or not, by trying to play it in VLC player. This incoming stream is working fine and playing well on VLC.
Now, to restream, I tried Live555ProxyServer. Now incoming stream from AWS1 is restreamed to another URL by running Live555ProxyServer on my Mac.
./Live555ProxyServer rtsp://public_IP_of_instance_one:8554/ashi.web gives,
rtsp://localhost:8554/ProxyStream
This URL is also playable in VLC.
Now I setup another AWS instance (AWS2) and run ProxyServer on it, listening to AWS1.
That is,
./Live555ProxyServer rtsp://public_IP_of_instance_one:8554/ashi.web gives,
rtsp://public_IP_of_instance_two:8554/ProxyStream
This URL is not playable.
I tried using -t flag for TCP instead of UDP. I tried checking the incoming RTSP stream with ffprobe and the stream is showing all the required details.
What could be the possible reason? What is the missing piece in this pipeline? Do we've great industry-grade open source RTSP servers?
EDIT:
I don't know what is exactly happened, but using VLC as the client to check the stream was the problem. I moved to ffmpeg and tried to write it to a file using
ffmpeg -i rtsp://public_IP_of_instance_two:8554/proxyStream -acodec copy -vcodec copy abc.webm
So the stream from ProxyServer is fine.
The lead to the change of client was the repeated warning from live555ProxyServer about outdated firmware explained here.
I'm currently using VLC Version 3.0.3 Vetinari (Intel 64bit) in Mac which is the latest version. Maybe VLC is using an old version of Live555 internally.

How do I connect my IP Remote Camera to ZoneMinder?

I am using Ubuntu 16.04, ZoneMinder v1.29.1 with this docker and this camera(hikvision ir panoramic fisheye). I can connect to the camera and I get the camera interface for settings etc. The problem is the live views need a windows dependent plugin, that's why I wanted to use ZoneMinder.
Now I configured everything according to this guide. Basically I had to add a monitor, set the source to remote, set the protocol to rtsp, set the method to rtp/rtsp, set the host name to < user>:< pw>#< correct-ip>, set port to the rtsp port reported by the camera webinterface and set the host path to all possible things: I tried /Streaming/Channels/[1,2,3,4]/ and /live and /Streaming/Channels/[101,102,103]-[401,402,403,404]/ but I never had a live stream. I really don't know what I am doing wrong. Does anybody know the right host path or any other issues that could prevent me from receiving a live feed? According to this site the hikvision products should work with ZoneMinder. Maybe I am just missing something small and stupid, thank you.
EDIT:
I used ONVIF Device Manager to detect my rtsp stream: It is rtsp://< ip>:554/Streaming/Channels/101?transportmode=unicast&profile=Profile_101 and I use exactly those settings in ZoneMinder but it does still give me a 404 error on the video.
Most Hikvision cameras don't work with the "Remote" option, but with the "Ffmpeg" option.
Source should begin with rtsp://"username":"passwd"#"IP-ADDRESS cam":554 and sometimes you have to append things like /cam/realmonitor?channel=1&subtype=0?tcp
Protocol should be RTP/Unicast

Identify local (LAN) vs live URL FFmpeg

Hi I am using FFmpeg in my iOS app for stream local and live URL.
Is there any way to identify the URL which I am opening is local or live.
Actually I want to specify the rtsp_transport in avformat_open_input accordingly.
If I do not specify the transport its by default taking UDP.
In UPD I am losing packets in live stream.So i want to specify the transport TCP for live and default for local url.
Got the solution. I can not identify the URL is live or on lan but I can identify URL support protocol or not.
When you called avformat_open_input() for open an URL it return -43 if given protocol is not supported.
In my case I am opening URL with TCP so it works fine for live URL but for LAN I got error code -43 which is for unsupported protocol. Whenever I got the any error code regarding unsupported protocol I open the URL again with different protocol.

How can I setup video streaming via http on windows?

I'm looking for a module to one of these web servers (apache, nginx, lighthttpd) to create video streaming in webm format. My operating system is Windows.
Why don't you try to use VLC? It's capable of webm http streaming. Try this in your command line:
C:\Program Files\VideoLAN\VLC>vlc.exe --sout "#transcode{vcodec=VP80,vb=300,scale=1,acodec=vorb,ab=128,channels=2,samplerate=44100}:http{mux=webm,dst=:8080/mountpoint.webm}" yourmovie.foo
You don't need to use a http server in the middle, except if you want to do some rewrite rules to keep vlc sending webm video to another port (like 8080) and then do some rewrite to make it look like it's coming from port 80.
I hope it helps.

IIS Live Smooth Streaming to AWS EC2

I am trying to do live video streaming from my laptop webcam out to a AWS EC2 Windows instance. Below link details the steps I followed: http://learn.iis.net/page.aspx/620/getting-started-with-iis-live-smooth-streaming/
A few seconds after pressing the "START" on ExpressionsEncoder4, I get random error pop-outs like "An unknown error has occurred", "A network error has occurred causing the encode to stop" and "The request could not be understood by the server".
Once in a while, these errors doesn't appear and I am able to see the captured video output on the preview screen.
At any one time, I am unable to register any streams on the IIS Publishing Point.
Any ideas? Thanks for any help!
There are a few problems here to solve. Let's go through them one by one.
Unknown Errors
Most often, "an unknown error has occurred" comes from calls to DirectShow APIs that fail for any unexpected reason (weird capture device, CPU can't keep up with encode, and basically any event that can interrupt the DirectShow graph frame stream). Try a different capture source, and see if your results change. Also, do a long encode from your device to a local Windows Media file to make sure everything is okay here.
Network Errors / Request not Understood by Server
Network errors in my experience have been mostly related to bandwidth; however Request Not Understood could mean you have something changing something in your HTTP requests (a proxy in between, etc).
Test On-Demand First
Test an on-demand stream from your EC2 server first. Download Big Buck Bunny or encode something yourself and make sure you can access http://example.com/BigBuckBunny.ism/Manifest in your browser. Test it using Smooth Streaming Health Monitor on the client side and server chunk performance using IIS Smooth Streaming Performance Testing Tool. This will verify that IIS Media Services is working properly.
Startup Order
Make sure you are starting your live publishing point stream in the following order:
On your EC2 server, navigate to the Live Publishing Point and start it. This will put the publishing point in a state that is ready to accept a stream.
In Expression Encoder, press Connect after entering the publishing point URL. You should see a successful connection at this point as long as port 80 is open.
Press Start and encoding should begin. (Best to start with only 1 or 2 bitrates when testing your stream; keep the bandwidth low.)
Alternate Setup
If all else fails, set up a Smooth Stream on your localhost (Expression pushes stream to IIS Media Services on localhost), and configure your localhost publishing point to push the stream to your EC2 instance. This is also a good method to use if you need a more network-hiccup-tolerant solution for long term streams or where your connection isn't as solid as you'd like.
Good luck and hopefully some of this info will narrow it down.

Resources