-
-
Notifications
You must be signed in to change notification settings - Fork 123
Streaming Video
jwalter1-quest edited this page Jan 30, 2019
·
7 revisions
from arlo import Arlo
from subprocess import call
USERNAME = '[email protected]'
PASSWORD = 'supersecretpassword'
try:
# Instantiating the Arlo object automatically calls Login(),
# which returns an oAuth token that gets cached.
# Subsequent successful calls to login will update the oAuth token.
arlo = Arlo(USERNAME, PASSWORD)
# At this point you're logged into Arlo.
# Get the list of devices and filter on device type to only get the cameras.
# This will return an array which includes all of the canera's associated metadata.
cameras = arlo.GetDevices('camera')
# Get the list of devices and filter on device type to only get the basestation.
# This will return an array which includes all of the basestation's associated metadata.
basestations = arlo.GetDevices('basestation')
# Open the event stream to act as a keep-alive for our stream.
arlo.Subscribe(basestations[0])
# Send the command to start the stream and return the stream url.
url = arlo.StartStream(basestations[0], cameras[0])
# Record the stream to a file named 'test.mp4'.
# **Requires ffmpeg 3.4 or greater.**
# For this example, I'm going to open ffmpeg.
# Crucially important is the '-t' flag, which specifies a recording time. (See the ffmpeg documentation.)
# This is just a crude example, but hopefully it will give you some ideas.
# You can use any number of libraries to do the actual streaming. OpenCV or VLC are both good choices.
# NOTE: This will print the output of ffmpeg to STDOUT/STDERR. If you don't want that, you will
# need to pass additional arguments to handle those streams.
call(['ffmpeg', '-re', '-i', url, '-t', '10', '-acodec', 'copy', '-vcodec', 'copy', 'test.mp4'])
except Exception as e:
print(e)