Skip to content

Instantly share code, notes, and snippets.

@docPhil99
Last active March 1, 2024 12:31
Show Gist options
  • Star 47 You must be signed in to star a gist
  • Fork 5 You must be signed in to fork a gist
  • Save docPhil99/d8667de1e8c5e96e2203f2bc0f28f89d to your computer and use it in GitHub Desktop.
Save docPhil99/d8667de1e8c5e96e2203f2bc0f28f89d to your computer and use it in GitHub Desktop.
Mac webcam FFmpeg

#Capture and stream a webcam To capture using the iSight camera on a Mac, or infact any other webcam connected to the Mac, we can use FFmpeg. First get a list of the devices installed.

ffmpeg -f avfoundation -list_devices true -i "" 

This will list the aviable video and audio devices.

The below will capture at 30fps and the set video size to a file. ffmpeg -f avfoundation -framerate 30 -video_size 640x480 -i "0:none" out.avi

The -i 0:none will select the 0 indexed video source and no audio.

We can stream this to the network with

ffmpeg -f avfoundation -framerate 30 -video_size 640x480 -i "0:none" -vcodec libx264 -preset ultrafast -tune zerolatency -pix_fmt yuv422p -f mpegts udp://localhost:12345

This can be viewed using VLC or OpenCV, although there maybe a significant lactancy in the stream.

To save the stream to file, it might be useful to save it as multiple files so out.avi does not get too big. We can change the output file every minute or so with the segment filter

For example, this captures my webcam and saves to a new file every 60 seconds. ffmpeg -f avfoundation -framerate 25 -video_size 640x480 -i "0:none" -flags +global_header -f segment -segment_time 60 -segment_format_options movflags=+faststart -reset_timestamps 1 test%d.mp4

@PHDPeter
Copy link

avfoundation is for OS X
for linux use:

sudo apt-get install v4l-utils
v4l2-ctl --list-devices

For Windows, you will need something different (see, https://trac.ffmpeg.org/wiki/Capture/Webcam#Listdevices1)

@shivam-51
Copy link

shivam-51 commented Aug 18, 2022

@PHDPeter The resolution you use here is 640x480 is there a way to check all the resolution supported by my webcam and then choose one out of it?

@docPhil99
Copy link
Author

@shivam-51 you need to specify the camera (eg /dev/video0), and run v4l2-ctl -d /dev/video0 --list-formats-ext

@shivam-51
Copy link

@docPhil99 what would be the command for mac? v42l does not work on my machine.

@vudzero
Copy link

vudzero commented Aug 31, 2022

I'm also looking for a way to list webcam supported formats on MacOS

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment