跳到主要內容

host camera module mjpeg output on remote server?


https://www.raspberrypi.org/forums/viewtopic.php?t=85768

Hello,

Is it possible to "forward" the mjpeg output stream to a remote server, and then view the stream by visiting that server? For instance, ff the rPi is behind a wifi/firewall that won't enable me to browse to it from an external browser, is it possible to somehow netcat that mjpeg file (or some other means) to an external location of my choosing, and be able to view it that way?

I've browsed around these forums, and the googles, but haven't seen any examples of this setup. Thanks for any ideas!

Greg
User avatar
kusti8

Re: host camera module mjpeg output on remote server?

You could just setup port forwarding and view it directly on the pi to reduce latency and the use for another server.
There are 10 types of people: those who understand binary and those who don't.
ohm3141

Re: host camera module mjpeg output on remote server?

kusti8 wrote:You could just setup port forwarding and view it directly on the pi to reduce latency and the use for another server.
In this example, I don't have access to the (open Wifi) router. How can I "push" the mjpeg feed to another server (e.g., my website)?

Greg
User avatar
kusti8

Re: host camera module mjpeg output on remote server?

I don't understand what you mean. Where is the website server. If it is your local computer, run a Ethernet cable from that to the raspberry pi and google how to bridge a network. If the website is hosted by a service, there is no way without a network.
There are 10 types of people: those who understand binary and those who don't.
ohm3141

Re: host camera module mjpeg output on remote server?

kusti8 wrote:I don't understand what you mean. Where is the website server. If it is your local computer, run a Ethernet cable from that to the raspberry pi and google how to bridge a network. If the website is hosted by a service, there is no way without a network.
The Pi is going to be located in a public place, associated to a public wifi that I don't have control over, viewing a TV screen that I'd want to stream back to me, say, sitting at home. So the server could be my home computer, or a hosted web server owned by me. I'm just wondering if there's a way to forward, or access remotely, the mjpeg stream that's created locally on the Pi, keeping in mind I can't port forward on the wifi router the Pi is attached to.

It'd be awesome if the output location of the mjpeg-streamer program could be, instead of "/var/www", "user@www.xxx.yyy.zzz:/var/www". But if that's not possible, some kind of script or program that could constantly re-stream the mjpeg file to another server of my choosing. Does that make sense? I'm trying to find examples of people doing something like this but I'm not coming up with anything.

Greg
ghans

Re: host camera module mjpeg output on remote server?

Ahh , the wonders of NATing .

Well this is a though one. The scalable solution is to set up
a VPN server and have the Pi act as client. With OpenVPN
you can mitigate the "impact" of firewalls and NAT easily
(at least that's what i heard).

The hacky solution is to use reverse SSH tunneling.
First get grips on using mjpeg-streamer. It is a popular piece
of software , and the foundations V4L2 driver has
made it quite easy to use it with the official camera .
See here for a good guide :
http://www.raspberrypi.org/forums/viewt ... 43&t=83570

Report your progress after trying that , while i look for
my notes on SSH tunneling ...

ghans
• Don't like the board ? Missing features ? Change to the prosilver theme ! You can find it in your settings.
• Don't like to search the forum BEFORE posting 'cos it's useless ? Try googling : yoursearchtermshere site:raspberrypi.org
philthy07

Re: host camera module mjpeg output on remote server?

There is a post on how to forward a stream to a FTP server. Won't be real time, but if you started viewing the file @ 1 fps less than was being saved it should flow pretty well.

https://medium.com/@Cvrsor/how-to-make- ... 5a2d61da3d
ohm3141

Re: host camera module mjpeg output on remote server?

ghans wrote:The hacky solution is to use reverse SSH tunneling.
Ghans,

I've successfully setup an automatic reverse SSH connection with the Pi in the past. If I get that up and running again, do you think I'd be able to port forward http requests from my local computer across the ssh tunnel? So when the user browses to ":80/var/www/video_feed.mjpeg" it actually sends them down the ssh tunnel to ":80/var/www/video_feed.mjpeg"?

Thanks for the suggestion philthy07, but the lag with the motion/ftp setup will be too great for my application.

Greg
ghans

Re: host camera module mjpeg output on remote server?

Yes , but then the stream is only accessible for people in
your LAN. Except you make your SSH server listen on
all interfaces , enable portforwarding and run a DynDNS
client in parallel.

ghans
• Don't like the board ? Missing features ? Change to the prosilver theme ! You can find it in your settings.
• Don't like to search the forum BEFORE posting 'cos it's useless ? Try googling : yoursearchtermshere site:raspberrypi.org
User avatar
kusti8

Re: host camera module mjpeg output on remote server?

ghans wrote:Yes , but then the stream is only accessible for people in
your LAN. Except you make your SSH server listen on
all interfaces , enable portforwarding and run a DynDNS
client in parallel.

ghans

Above it says that he does not have access to the network and cannot configure port forwarding since it is public.
There are 10 types of people: those who understand binary and those who don't.
ohm3141

Re: host camera module mjpeg output on remote server?

ghans wrote:The hacky solution is to use reverse SSH tunneling.
SSH tunneling was the appropriate solution - thanks ghans. For those that are interested, here's what I had to do. When the pi starts up I automatically start a reverse SSH connection back to a computer I control like so:

ssh -fN -p 22222 -R \*:9000:localhost:22 @

This sets up a listening port (9000) on my computer that enables me to login to the pi when it's behind its wifi/firewall. Then I initiate a port forward command using ssh on the computer I control like so:

ssh -L \*:8080:localhost:80 @localhost -p 9000

Now, when I browse localhost:8080 on my computer, it forwards all requests over port 9000 to the pi, essentially serving up the webpage that the Pi is hosting (an mjpeg feed from the camera). I also have my home router setup to forward external 8080 requests to my computer that has the port forward running, so I can access the pi's webcam externally.

Greg
ghans

Re: host camera module mjpeg output on remote server?

Check out autossh to keep your connection up all the time:
http://www.harding.motd.ca/autossh/

ghans
• Don't like the board ? Missing features ? Change to the prosilver theme ! You can find it in your settings.
• Don't like to search the forum BEFORE posting 'cos it's useless ? Try googling : yoursearchtermshere site:raspberrypi.org
bobdxcool

Re: host camera module mjpeg output on remote server?

ohm3141 wrote:
ghans wrote:The hacky solution is to use reverse SSH tunneling.
SSH tunneling was the appropriate solution - thanks ghans. For those that are interested, here's what I had to do. When the pi starts up I automatically start a reverse SSH connection back to a computer I control like so:

ssh -fN -p 22222 -R \*:9000:localhost:22 @

This sets up a listening port (9000) on my computer that enables me to login to the pi when it's behind its wifi/firewall. Then I initiate a port forward command using ssh on the computer I control like so:

ssh -L \*:8080:localhost:80 @localhost -p 9000

Now, when I browse localhost:8080 on my computer, it forwards all requests over port 9000 to the pi, essentially serving up the webpage that the Pi is hosting (an mjpeg feed from the camera). I also have my home router setup to forward external 8080 requests to my computer that has the port forward running, so I can access the pi's webcam externally.

Greg
Hi

I was using motion to setup a live webcam feed from the pi 3. I am using a 3g dongle for internet. I want to stream the live video onto my web server with a static IP. I have a frontend UI running on my webserver and I wish to view the live video stream , when I click a certain Tab on the UI. I was going through your method of using a reverse ssh tunnel to view the live stream. So when the pi boots up, I send the command
Code: Select all
ssh -fN -p 22222 -R \*:9000:localhost:22 @
And when I want to view the live stream from the pi and click on the particular tab on the UI of my web server, I make the server send out the command in the background:
Code: Select all
ssh -L \*:8080:localhost:80 @localhost -p 9000

After the command is sent ,the particular tab (video stream tab) on the UI is directed to the URL, "localhost:8080".

Is this correct ? Is there anything else that would be required for me to do ?
RpiName

Re: host camera module mjpeg output on remote server?

ohm3141 wrote:Is it possible to "forward" the mjpeg output stream to a remote server, and then view the stream by visiting that server? For instance, ff the rPi is behind a wifi/firewall that won't enable me to browse to it from an external browser, is it possible to somehow netcat that mjpeg file (or some other means) to an external location of my choosing, and be able to view it that way?
See this:
http://www.linux-projects.org/uv4l/tuto ... to-camera/
bobdxcool

Re: host camera module mjpeg output on remote server?

RpiName wrote:
ohm3141 wrote:Is it possible to "forward" the mjpeg output stream to a remote server, and then view the stream by visiting that server? For instance, ff the rPi is behind a wifi/firewall that won't enable me to browse to it from an external browser, is it possible to somehow netcat that mjpeg file (or some other means) to an external location of my choosing, and be able to view it that way?
See this:
http://www.linux-projects.org/uv4l/tuto ... to-camera/
Thanks. I was looking online regarding using uv4l for streaming. It does stream the video with good quality. But again, I have to enter the raspberry pi IP address again to view the stream and so the stream can only be viewed locally. My question is how do I make it stream to my server ?
RpiName

Re: host camera module mjpeg output on remote server?

bobdxcool wrote:Thanks. I was looking online regarding using uv4l for streaming. It does stream the video with good quality. But again, I have to enter the raspberry pi IP address again to view the stream and so the stream can only be viewed locally. My question is how do I make it stream to my server ?
I do not know what you exactly mean by "my server", but UV4L not only supports end-to-end audio/video streaming like you said, but, to put it simple, it can "push" audio/video streams from any supported device (or pseudo-device in your case) to a given Janus or Jitsi Meet server deployed on internet or other networks. In other words, you do not necessarily need to know the address of your Raspberry Pi. I suggest that you read through the tutorials at http://linux-projects.org for more informations.
bobdxcool

Re: host camera module mjpeg output on remote server?

RpiName wrote:
bobdxcool wrote:Thanks. I was looking online regarding using uv4l for streaming. It does stream the video with good quality. But again, I have to enter the raspberry pi IP address again to view the stream and so the stream can only be viewed locally. My question is how do I make it stream to my server ?
I do not know what you exactly mean by "my server", but UV4L not only supports end-to-end audio/video streaming like you said, but, to put it simple, it can "push" audio/video streams from any supported device (or pseudo-device in your case) to a given Janus or Jitsi Meet server deployed on internet or other networks. In other words, you do not necessarily need to know the address of your Raspberry Pi. I suggest that you read through the tutorials at http://linux-projects.org for more informations.
When I say my server, I mean I have rented a linux server on AWS with a static IP and have a UI running on the front end of this server.
bobdxcool

Re: host camera module mjpeg output on remote server?

ghans wrote:Check out autossh to keep your connection up all the time:
http://www.harding.motd.ca/autossh/

ghans
I have a server with public IP hosted by AWS. Now I have been able to connect to my PI (running wirh a 3g dongle) through the server using reverse ssh. I followed the guide, http://jerrygamblin.com/2016/04/23/pers ... spberrypi/

Now, there is a video stream running on my pi (motion) on the port 8081 (mypiipaddress:8081). Can you please help me on how to forward this stream onto my server with public IP so that I can view the stream on any browser by typing :portno
punktea

Re: host camera module mjpeg output on remote server?

If you re-phrase your question to "live video streaming on your website" or "embed live video in your webpage" you will get a lot more leads. Essentially you need to subscribe to a video broadcasting service (like ipcamlive.com) then make your Pi feed a video stream to that service then embed required HTML snippet on your website. To configure Pi to stream video, search for "raspberry pi rtsp streaming" and you will see various implementations. I also found this link in raspberry pi forum viewtopic.php?f=43&t=132503
thebeachtoday

Re: host camera module mjpeg output on remote server?

In case anyone needs this...two things: Cloud-based web server, I use AWS EC2, that runs a web server [Apache in my case] and has two virtual hosts - one for the web and one for the stream. These are very basic, do not overthink it. Remember to reload the webserver after creating the virtual host files:
Code: Select all

ServerName webserver.somedomain.com
ProxyPreserveHost On

Order allow,deny
Allow from all

ProxyPass / http://localhost:10100/
ProxyPassReverse / http://localhost:10100/


ServerName livestream.somedomain.com
ProxyPreserveHost On

Order allow,deny
Allow from all

ProxyPass / http://localhost:10101/
ProxyPassReverse / http://localhost:10101/
On the RPi, set up autossh. I run it as a service and use ExecStart to point to this simple bash script that sets up tunnels to both the web and live stream:
Code: Select all
/usr/bin/autossh -N -q -o "ExitOnForwardFailure yes" -o "ServerAliveInterval 60" -o "ServerAliveCountMax 3" -o "StrictHostKeyChecking=no" -N -i /etc/cloud_server_secure_key_file.pem  ubuntu@ec2-XX-YY-ZZ-00.compute-1.amazonaws.com -g -R ec2-XX-YY-ZZ-00.compute-1.amazonaws.com:10100:127.0.0.1:80 &
/usr/bin/autossh -N -q -o "ExitOnForwardFailure yes" -o "ServerAliveInterval 60" -o "ServerAliveCountMax 3" -o "StrictHostKeyChecking=no" -N -i /etc/cloud_server_secure_key_file.pem  ubuntu@ec2-XX-YY-ZZ-00.compute-1.amazonaws.com -g -R ec2-XX-YY-ZZ-00.compute-1.amazonaws.com:10101:127.0.0.1:8080 &
To call the stream in HTML file, use the tag with the src as livestream.somedomain.com/stream.

You will want to tinker with /etc/uv4l/uv4l-raspicam.conf to get the best settings - standard live stream settings, nothing specific to RPi or UV4L
User avatar
SlowBro

Re: host camera module mjpeg output on remote server?

A down side of SSH port forwarding: If someone were to hack the web server (not unthinkable) they would then be able to reach into your home network. They would have to then hack the IP camera but that's definitely not difficult these days; many of them don't get new firmwares. Typically they have a telnet port (!) open and are running Linux. Once in the IP camera they have your entire network.

I'm looking into RTMP myself, I think that's the best solution.
ghans

Re: host camera module mjpeg output on remote server?

Reverse SSH does not need port forwarding. That's why it is so attractive. Together with SSH keys it is raher secure.

ghans
• Don't like the board ? Missing features ? Change to the prosilver theme ! You can find it in your settings.
• Don't like to search the forum BEFORE posting 'cos it's useless ? Try googling : yoursearchtermshere site:raspberrypi.org
User avatar
SlowBro

Re: host camera module mjpeg output on remote server?

Yes but I am not talking about firewall port forwarding. I’m talking about what is being recommended here. If someone gains access into the server on the outside of your home network where reverse forwarding is being sent to, they can reach into your network via the reverse port, is my point. It just takes a vulnerability to your camera and they’re in.

This is more secure than firewall port forwarding, but not much.

留言

這個網誌中的熱門文章

2017通訊大賽「聯發科技物聯網開發競賽」決賽團隊29強出爐!作品都在11月24日頒獎典禮進行展示

2017通訊大賽「聯發科技物聯網開發競賽」決賽團隊29強出爐!作品都在11月24日頒獎典禮進行展示 LIS   發表於 2017年11月16日 10:31   收藏此文 2017通訊大賽「聯發科技物聯網開發競賽」決賽於11月4日在台北文創大樓舉行,共有29個隊伍進入決賽,角逐最後的大獎,並於11月24日進行頒獎,現場會有全部進入決賽團隊的展示攤位,總計約為100個,各種創意作品琳琅滿目,非常值得一看,這次錯過就要等一年。 「聯發科技物聯網開發競賽」決賽持續一整天,每個團隊都有15分鐘面對評審團做簡報與展示,並接受評審們的詢問。在所有團隊完成簡報與展示後,主辦單位便統計所有評審的分數,並由評審們進行審慎的討論,決定冠亞季軍及其他各獎項得主,結果將於11月24日的「2017通訊大賽頒獎典禮暨成果展」現場公佈並頒獎。 在「2017通訊大賽頒獎典禮暨成果展」現場,所有入圍決賽的團隊會設置攤位,總計約為100個,展示他們辛苦研發並實作的作品,無論是想觀摩別人的成品、了解物聯網應用有那些新的創意、尋找投資標的、尋找人才、尋求合作機會或是單純有興趣,都很適合花點時間到現場看看。 頒獎典禮暨成果展資訊如下: 日期:2017年11月24日(星期五) 地點:中油大樓國光廳(台北市信義區松仁路3號) 我要報名參加「2017通訊大賽頒獎典禮暨成果展」>>> 在參加「2017通訊大賽頒獎典禮暨成果展」之前,可以先在本文觀看各團隊的作品介紹。 決賽29強團隊如下: 長者安全救星 可隨意描繪或書寫之電子筆記系統 微觀天下 體適能訓練管理裝置 肌少症之行走速率檢測系統 Sugar Robot 賽亞人的飛機維修輔助器 iTemp你的溫度個人化管家 語音行動冰箱 MR模擬飛行 智慧防盜自行車 跨平台X-Y視覺馬達控制 Ironmet 菸消雲散 無人小艇 (Mini-USV) 救OK-緊急救援小幫手 穿戴式長照輔助系統 應用於教育之模組機器人教具 這味兒很台味 Aquarium Hub 發展遲緩兒童之擴增實境學習系統 蚊房四寶 車輛相控陣列聲納環境偵測系統 戶外團隊運動管理裝置 懷舊治療數位桌曆 SeeM智能眼罩 觸覺點字學習系統
2019全台精選3+個燈會,週邊順遊景點懶人包 2019燈會要去哪裡看?全台精選3+個燈會介紹、週邊順遊景點整理給你。 東港小鎮燈區-鮪鮪到來。 2019-02-15 微笑台灣編輯室 全台灣 各縣市政府 1435 延伸閱讀 ►  元宵節不只看燈會!全台元宵祭典精選、順遊景點整理 [屏東]2019台灣燈會在屏東 2/9-3/3:屏東市 · 東港鎮 · 大鵬灣國家風景區 台灣燈會自1990年起開始辦理,至2019年邁入第30週年,也是首次在屏東舉辦,屏東縣政府與交通部觀光局導入創新、科技元素,融入在地特色文化設計,在東港大鵬灣國家風景區打造廣闊的海洋灣域燈區,東港鎮結合漁港及宗教文化的小鎮燈區,及屏東市綿延近5公里長的綵燈節河岸燈區,讓屏東成為璀璨的光之南國,迎向國際。 詳細介紹 ►  2019台灣燈會在屏東 第一次移師國境之南 大鵬灣燈區 主題樂園式燈會也是主燈所在區,區內分為農業海洋燈區、客家燈區、原住民燈區、綠能環保燈區、藝術燈區、宗教燈區、競賽花燈及317個社區關懷據點手作的萬歲光廊等。 客家燈籠隧道。 平日:周一~周四14:00-22:30(熄燈) 假日:周五~周六10:00-22:30(熄燈)  屏東燈區: 萬年溪畔 屏東綵燈節藍區-生態。 綵燈節--每日17:30 - 22:00(熄燈) 勝利星村--平日:14:00 - 22:30(熄燈) 假日:10:00 - 22:30(熄燈) 燈區以「彩虹」為主題,沿著蜿蜒市區的萬年溪打造近5公里長的光之流域,50組水上、音樂及互動科技等不同類型燈飾,呈現紅色熱情、橙色活力、黃色甜美、綠色雄偉、藍色壯闊、靛色神祕、紫色華麗等屏東風情。勝利星村另有懷舊風的燈飾,及屏東公園聖誕節燈飾。 東港小鎮燈區 東港小鎮燈區-鮪鮪到來。 小鎮燈區以海的屏東為主題,用漁港風情及宗教文化內涵規劃4個主題區,分別為張燈結綵趣、東津好風情、神遊幸福海、延平老街區。每日17:00~22:30(熄燈) 以上台灣燈會資料來源: 2019台灣燈會官網 、 i屏東~愛屏東 。 >> 順遊行程 小吃旅行-東港小鎮 東港小吃和東港人一樣,熱情澎湃而且誠意滿滿,從市街找到巷裡,早餐吃到宵夜,可惜
自製直播音源線 Bird Liang   October 6, 2016   in  View Bird Liang, Chief Engineer (梁子凌 / 技術長兼工程輔導長) 負責 AppWorks 技術策略與佈署,同時主導工程輔導。人生的第一份正職工作是創業,之後在外商圈電子業中闖蕩多年,經歷過 NXP、Sony、Newport Imagining、Crossmatch 等企業,從事無線通訊、影像系統、手機、面板、半導體、生物辨識等不同領域產品開發。熱愛學習新事物,協助團隊解決技術問題。放棄了幾近退休般的生活加入 AppWorks,為的是幫助更多在創業路上的人,並重新體驗創業的熱情。台大農機系、台科大電子所畢業,熱愛賞鳥、演奏管風琴,亦是不折不扣的熱血 Maker。 隨著 Facebook 開放一般帳號直播,現在我們只要拿起手機,隨時隨地都可以開始直播。回想幾年前 AppWorks 剛開始進行 Demo Day 直播時,還要將 HDMI 訊號接進 PC 中、再編碼打進 YouTube 的複雜度,實不可同日而語。 但用手機或平板直播最大的問題往往不是影像而是聲音。iPhone 或 iPad 上的攝影機,感度和解析度早已不輸數年前的專業攝影機,只要現場光不太差,大概都可以拍出令人滿意的畫面。但直播的聲音一直是個大問題,手機上的麥克風跟人耳所聽到的聲音其實有很大的差距,在比較大的場子裡,光是仰賴內建麥克風的收音多半無法有令人滿意的效果。 在大型的活動中,現場通常會有 PA 系統,最理想的方式還是想辦法將 PA 的訊號餵進 iPad 或 iPhone 中,保證聲音乾淨又清楚,絕對不會有其它有的沒的現場音。 iPhone 的耳機孔雖然可以插帶有麥克風的耳機 (如 Apple 原廠的 EarPods),但它的訊號位準是電容式麥克風的位準。PA 控台的輸出幾乎都是 line level 的,兩者的訊號電壓相差百倍以上,我們得做個小東西來解決這個差距。 Line 與 Mic 在 mixer 上,我們常會看到輸入可以在兩種規格中切換: line level 和 mic level。Mic level 顧名思義就是從麥克風來的訊號,這個訊號的規格是從不需供電的傳統動圈麥克風來的。因為不需供電,所有的訊號都來自於聲壓