How to Make Raspberry Pi Webcam Server and Stream Live Video || Motion + Webcam + Raspberry Pi

75,054

163

26

Posted in TechnologyRaspberry-pi

Introduction: How to Make Raspberry Pi Webcam Server and Stream Live Video || Motion + Webcam + Raspberry Pi

About: We run YouTube channel and provide some video tutorials on electronics and programming and also videos on cool projects - how to make them, tech news and more. Subscribe to our channel. :)

Hello and welcome to Being Engineers.

If you are watching this, then you might know how to work with Raspberry Pi and you may want to make a Webcam server that can stream live video over the internet ( local network ).

This is what we will be doing today. The process will be very simple but the result is pretty impressing and useful. Before starting you have to know 2 things:

  1. How to install OS in a Raspberry pi. ( link - https://www.instructables.com/id/HOW-TO-INSTALL-RA... )
  2. How to use your Laptop Screen a monitor for Raspberry pi. ( link - https://www.instructables.com/id/How-to-Use-Window... )

So before we get started, we want to clarify that the process is not the only process to achieve this result. I am showing this to you because I found this most convenient to the user.

You can check out our YouTube channel - www.youtube.com/c/being_engineers1

Our Website - www.being-engineers.com

We have made a video tutorial on it.So do have a look. :)

Now let's begin.

Step 1: Gather the Components

In this project, you will need the following:

  • Raspberry Pi 3 Model B (Any version will work, but in PI 3 we have the provision for WiFi that can make this server wireless)
  • USB Webcam (I will use my old Logitech Webcam. Use a better camera for better results.)
  • 5V 2A Power Source (I will use my Honor 13000mah Power Bank )
  • Lan Cable ( RJ - 45 Cable )
  • Minimum 8 GB Class 10 SD Card ( I will use Sandisk 32GB class 10 SD Card )

If you haven't install the Raspbian OS on the SD card, then you will need a memory card reader and checkout our tutorial on how to install the OS in Raspberry Pi.

Step 2: Set Up Your Raspberry Pi

We assume you have the SD Card with the raspbian OS installed.

Then insert the SD Card in the Pi.

Connect the USB camera to any one of the four available USB port.

Connect the ethernet cable aka LAN cable to your Pi and connect the other end to your router.

Then Power Up the Raspberry Pi.

The next step is only for Raspberry Pi 3 users. Others. go to step 4.

Step 3: Connect Your Pi to Internet Through WiFi (only for Raspberry Pi 3 Users)

Open the desktop of Raspbian and connect to WiFi by putting the correct password.

When the raspbian is connected to the network by WiFi, then shut down the system.

Now detach the LAN cable and restart. Then you must be connected to the Internet via WiFi only.

This will help to move your webcam and the pi anywhere without the RJ-45 cable.

Step 4: Know Your Raspberry Pi IP Address

Do the following steps to view Pi IP address.

  1. Open your browser on laptop or mobile. ( laptop or mobile has to be in the same network as the pi )
  2. Go to your Router settings by typing in the default IP address of your router. ( written somewhere on your router. )
  3. Find the list of connected devices.
  4. Find the corresponding IP address of the device named raspberry.

In our case, it is 192.168.0.107

Step 5: Connect to Your Pi by SSH Connection ( PUTTY )

Open up Putty and type in the IP address of your Pi and connect.

'pi' & 'raspberry' is the default 'login as' and 'password' in Raspbian.

It is always a good practice to Update and Upgrade the system as soon as you log in.

To do it, type in the command 'sudo apt-get update' and 'sudo apt-get upgrade' one at a time.

Step 6: Install the Software and Do the Necessary Settings

Type in the command 'sudo apt-get install motion ' to start the installation.

Now to make sure that the camera is correctly detected.

Type in the command 'lsusb' and enter. You should see the name of your camera. If it is NOT there, then there is some problem in your camera or the camera is not supported in 'motion'.

After the installation is complete, type in the command ' sudo nano /etc/motion/motion.conf ' and press enter.

Then you have to change some settings in the .conf file. It might be difficult sometimes to find the settings but use 'ctrl + w' to find it. So follow the steps:

  1. Make sure 'daemon' is ON.
  2. Set 'framerate' anywhere in between 1000 to 1500.
  3. Keep 'Stream_port' to 8081.
  4. 'Stream_quality' should be 100.
  5. Change 'Stream_localhost' to OFF.
  6. Change 'webcontrol_localhost' to OFF.
  7. Set 'quality' to 100.
  8. Set 'width' & 'height' to 640 & 480.
  9. Set 'post_capture' to 5.
  10. Press ctrl + x to exit. Type y to save and enter to conform.

Again type in the command 'sudo nano /etc/default/motion ' and press enter.

Set ' start_motion_daemon ' to yes. Save and exit.

Step 7: Start the Server

First of all your have to restart the motion software. To do it type in the command 'sudo service motion restart' and press enter.

Again type in the command 'sudo motion' and press enter. Now your server is ready.

Step 8: It's DONE!!

Now open up your browser. Type in the IP address of your raspberry Pi and the port number in this way:

192.168.0.107:8081 (First there is the IP address, then a ':', then the port number). Press Enter.

Now you can see the Live feed coming from your webcam directly on your laptop or mobile or both at the same time.

Hope you have enjoyed this tutorial. If yes then please do SUBSCRIBE to our channel Being Engineers. It really helps us a lot on seeing your support and interest towards our channel and don't forget to share :)

Channel link - https://www.youtube.com/c/being_engineers1

Peace.

2 People Made This Project!

Recommendations

  • Spotless Contest

    Spotless Contest
  • Microcontroller Contest

    Microcontroller Contest
  • Space Challenge

    Space Challenge
user

We have a be nice policy.
Please be positive and constructive.

Tips

3 Questions

0

Hello

Motion doesn't work from outside of the private network (internet)

Hello and thank you for making this tutorial. It is get useful. However, I would like to be able to create a live feed that I can view on the rpi directly, meaning not having to connect to Wi-Fi. How would I do this? Thank you for your help.

26 Comments

I do not see "reboot your pi".because it is still problem..):

I am having issue with the port forwarding. I created an exception for the pi in my router but it still says "ERR_INVALID_HTTP_RESPONSE" every time I try to see my feed. Anyone else have this issue? Thank you.

thank you very much , it works great......but i need to add 1 more thing we also need to change stream_maxrate(in \etc\motion\motion.conf) to higher values like 750 etc, for proper streaming else default value was 1 fps.

1 reply

Well spotted, this made a huge difference reducing the lag. Great tutorial, worked like a charm!

Thank you so much for this post. I've followed your instruction and finally got my video streamed. But after 2-3 days using this method and now my camera doesn't work with Motion anymore. It doesn't work when i type neither: "sudo motion" nor "sudo service motion start". The camera's just off. I try raspivid to test the camera and it works normally. I've tried deleting all the package and reinstall it but it's still the same. What could be the reason for that? Please help me.

4 replies

I had a similar issue, not sure if you have the same issue.

But,
check if it storing photos/videos of every time something gets caught
on your camera (it does this by default, as Motion is for motion
detection and will store those pics). My raspberry pi got full, so I
had to turn that functionality off and remove the photos/videos from the
output folder.

After that, it worked fine. Hope this helps.

Thank you for your reply. I've made a recovery for my Pi but nothing changed.

I had this issue. I searched for the folder using this command:

sudo du -h / | sort -h -r | head -n 10

to find the largest filesHow do I turn off the file saving? What line am I looking for in the motion.conf file?

It should be something like 'output_pictures' which is default to on. Just change that to off. I think there is also a small video clip that will output as well. Change the ffmpeg_output_movies to off also.

I followed this to the letter and for some reason I cannot see a live feed. It does take pictures but the live video is just a black screen with a few white dots where motion is detected. Is this correct or is there something I missed?

It doesn't work with me, when I put my raspberry IP address putty said

network error: connection timed out

how do you make it work with the onboard cam and not usb cam

when iv edited the file and restarted the service i get this

Message from syslogd@raspberrypi at Dec 15 16:19:10 ...

motion: [0:motion] [EMG] [ALL] motion_startup: Exit motion, cannot create log file /var/log/motion/motion.log: Permission denied

Broadcast message from systemd-journald@raspberrypi (Fri 2017-12-15 16:19:10 UTC):

motion[654]: [0:motion] [EMG] [ALL] motion_startup: Exit motion, cannot create log file /var/log/motion/motion.log: Permission denied

WOW! Thanks for the detailed breakdown of the software coding and what needs changed to run the camera. I will use a lot of what you explained to make a dog treat dispenser so I have a way to check on them as they come over for the treats.. thanks so much again! Keep dishing out the good content!!

thank you so much. your post really help me out. bless you

2 replies

Good afternoon all,

Thanks for creating this tutorial, it is very constructive and working like a charm.

A question if I may is : How to record the video please?

Many thanks.

Siamak

How to do "just forward port 8081 to the pi in your router and vala, your camera is on the internet."

23.7.2017

Well that worked for me.

I would like to mount the WebCam on Pimorni's https://shop.pimoroni.com/products/pan-tilt-hat

How can one
draw 4 arrows on the screen for Up,Down,Left and Right so one can
control Servos via the screen and mouse to change the position of the servos.

Many thanks for any help...

thank u sooo much .. very helpful.