Raspberry Pi caméra Birdbox (8 / 12 étapes)

Étape 8: Recompiler FFMPEG

Un utilitaire appelé FFMPEG va faire de la vidéo en streaming. Raspbian vient avec FFMPEG installé, cependant, la version pré-installée n’est pas compilée pour utiliser le pilote natif de GPU pour FFMPEG doit être recompilé pour l’utiliser. J’ai trouvé les instructions ici fonctionnent bien, Notez que la crtmpserver des sections de ce site ne sont pas obligatoires parce que nous sommes en streaming vidéo sur internet pour les serveurs SEGfL. La procédure suivante à partir du lien ci-dessus sera recompiler FFMPEG. Une note de prudence : lorsque vous tapez dans « make », je dirais vous laisser exécuter pendant la nuit car il faut heures pour recompiler !

 cd /usr/src 
 sudo chown `whoami`:users ffmpeg 
 git clone git://source.ffmpeg.org/ffmpeg.git ffmpegcd ffmpeg<br> 
 ./configure 
 make 
 sudo make install 
sudo raspivid -t -1 -w 960 -h 540 -fps 25 -b 500000 -vf -o - | ffmpeg -i - -vcodec copy -an -f flv rtmp://<username>:<password> 

FFMPEG est maintenant prêt à être utilisé. Vous pouvez le tester avec la page de diffusion en continu de SEGfL en suivant les étapes suivantes :

  1. Ouvrir le fmeProfile.xml de fichier de configuration XML que vous avez téléchargé depuis le site Web SEGfL
  2. Trouver la balise XML « url », qui était censé être sous l’étiquette « rtmp ». Ce sera quelque chose comme : rtmp://broadcast.e2bn.org/microsites2fme
  3. Juste en dessous de cette trouvaille le code XML de la balise « amont » qui est une longue séquence de chiffres et de caractères
  4. Vous aurez également besoin de l’identifiant et le mot de passe que vous a noté plus haut vers le bas

FFMPEG et la page web SEGfL Birdbox peuvent être testées en utilisant raspivid comme suit :

 import smtplib import email import mimetypes import StringIO import subprocess import os import time import sys import time import picamera from datetime import datetime from PIL import Image from email.MIMEMultipart import MIMEMultipart from email.Utils import COMMASPACE from email.MIMEBase import MIMEBase from email.parser import Parser from email.MIMEImage import MIMEImage from email.MIMEText import MIMEText from email.MIMEAudio import MIMEAudio</p><p># Original code written by brainflakes and modified to exit # image scanning for loop as soon as the sensitivity value is exceeded. # this can speed taking of larger photo if motion detected early in scan # Motion detection settings: # PGM maded changes to read values dynamically via command line parameters. # -------------------------- # Threshold - (how much a pixel has to change by to be marked as "changed") # Sensitivity - (how many changed pixels before capturing an image) needs to be higher if noisy view # ForceCapture - (whether to force an image to be captured every forceCaptureTime seconds) # filepath - location of folder to save photos # filenamePrefix - string that prefixes the file name for easier identification of files. threshold = 10 sensitivity = 180 forceCapture = True forceCaptureTime = 60 * 60 # Once an hour filepath = "/home/pi/images/" filenamePrefix = "pgm" fileType = "jpg" # File photo size settings saveWidth = 800 saveHeight = 600 diskSpaceToReserve = 40 * 1024 * 1024 # Keep 40 mb free on disk sys.stdout = os.fdopen(sys.stdout.fileno(), 'w', 0) camera = picamera.PiCamera()</p><p># Email variables user = 'mattwood262 smtp_host = 'smtp.gmail.com' smtp_port = 587 # server = smtplib.SMTP() # server.connect(smtp_host,smtp_port) # server.ehlo() # server.starttls() # server.login(user,'') fromaddr = 'matt tolist = 'matt sub = 'Subject: birdbox activity'</p><p># Capture a small test image (for motion detection) def captureTestImage(): imageData = StringIO.StringIO() # try: camera.capture(imageData, format='bmp', use_video_port=True) # command = "raspistill -w %s -h %s -t 1 -n -e bmp -o -" % (100, 75) # except: # camera.capture(imageData, format='bmp', use_video_port=True) imageData.seek(0) im = Image.open(imageData) buffer = im.load() imageData.close() return im, buffer</p><p># Save a full size image to disk def saveImage(width, height, diskSpaceToReserve): keepDiskSpaceFree(diskSpaceToReserve) time = datetime.now() filename = filenamePrefix + "-%04d_%02d_%02d-%02d%02d%02d" % (time.year, time.month, time.day, time.hour, time.minute, time.second)+ "." + fileType fullfilename = filepath + filename # camera.resolution = (saveWidth, saveHeight) camera.capture(fullfilename, format='jpeg', use_video_port=True) # subprocess.call("echo %s > temp.out" % filename, shell=True) # subprocess.call("/home/pi/Dropbox-Uploader/dropbox_uploader.sh upload %s %s" % (fullfilename, filename), shell=True) # msg = email.MIMEMultipart.MIMEMultipart() # msg['From'] = fromaddr # msg['To'] = tolist # msg['Subject'] = sub # msg.attach(MIMEText('\nsent via python', 'plain')) # server.sendmail(user,tolist,msg.as_string()) # print "Captured image: %s" % filename camera.wait_recording(60)</p><p># Keep free space above given level def keepDiskSpaceFree(bytesToReserve): if (getFreeSpace() < bytesToReserve): for filename in sorted(os.listdir(".")): if filename.startswith(filenamePrefix) and filename.endswith("." + fileType): os.remove(filename) print "Deleted %s to avoid filling disk" % filename if (getFreeSpace() > bytesToReserve): return</p><p># Get available disk space def getFreeSpace(): st = os.statvfs(".") du = st.f_bavail * st.f_frsize return du</p><p>#--------------------------------------------------------- </p><p># Start capturing video camera.resolution = (640, 480) camera.framerate = 30 # camera.resolution = (1024, 768) camera.start_recording(sys.stdout, format='h264')</p><p># Get first image image1, buffer1 = captureTestImage()</p><p># Reset last capture time lastCapture = time.time()</p><p># added this to give visual feedback of camera motion capture activity. Can be removed as required os.system('clear') f = open('./logfile','w') f.write(' Motion Detection Started') f.write(' ------------------------') # print "Pixel Threshold (How much) = " + str(threshold) # print "Sensitivity (changed Pixels) = " + str(sensitivity) # print "---------- Motion Capture File Activity --------------"</p><p>while (True):</p><p> # Get comparison image try: image2, buffer2 = captureTestImage() except: subprocess.call("echo 'timeout' > temp.out", shell=True) image2, buffer2 = captureTestImage()</p><p> # Count changed pixels changedPixels = 0 for x in xrange(0, 100): # Scan one line of image then check sensitivity for movement for y in xrange(0, 75): # Just check green channel as it's the highest quality channel pixdiff = abs(buffer1[x,y][1] - buffer2[x,y][1]) if pixdiff > threshold: changedPixels += 1</p><p> # Changed logic - If movement sensitivity exceeded then # Save image and Exit before full image scan complete if changedPixels > sensitivity: lastCapture = time.time() saveImage(saveWidth, saveHeight, diskSpaceToReserve) break continue</p><p> # Check force capture if forceCapture: if time.time() - lastCapture > forceCaptureTime: changedPixels = sensitivity + 1 # Swap comparison buffers image1 = image2 buffer1 = buffer2 #------------------------------------------------------------ 

Si vous allez à la page Webcam Live pour votre école sur le site du projet Birdbox, puis vous devriez voir la vidéo en direct.

Notez que j’ai essayé de nombreux arrangements pour améliorer la qualité vidéo, augmenter la résolution et accroître les trames par seconde mais je crois que les paramètres de serveur-côté ont priorité.

Articles Liés

3D imprimé Raspberry Pi caméra de sécurité

3D imprimé Raspberry Pi caméra de sécurité

Article paru dans 3Ders.orgMise à jour : Si vous aimez mon vote instructable s'il vous plaît pour moi dans le défi Raspberry Pi et épilogue. Je mettrai aussi la 5e étape pour comprendre comment configurer Motion sur le premier démarrage. Merci pour v
Raspberry Pi Cam réservoir v1.0

Raspberry Pi Cam réservoir v1.0

J'aime les chars depuis comme un petit enfant. Construire mon propre jouet de réservoir est toujours un de mes rêves. Mais en raison du manque de connaissances et de compétences. Le rêve est juste un rêve.Après des années d'étude en design industriel
Raspberry PI caméra Spinner impression 3D

Raspberry PI caméra Spinner impression 3D

Ce Instructable est pour un module 3D appareil photo imprimé-spinner pour le jury de la caméra de Raspberry PI.Dans le cadre d'un projet plus vaste (un ordinateur portable de Raspberry PI), j'avais besoin d'un moyen d'implémenter une avant et l'arriè
Raspberry Pi caméra

Raspberry Pi caméra

Voici une configuration de caméra pi framboise très basique que vous pouvez utiliser comme vous le souhaitez. Tandis qu'il mon être moins sophistiqué que d'autres projets de caméra rpi j'espère améliorer lentement mes dessins. Si vous allez de l'avan
Raspberry Pi - caméra de détection de mouvement

Raspberry Pi - caméra de détection de mouvement

Dans cette vidéo nous allons regarder comment créer une caméra motion activée en utilisant le module framboise de pi et de la caméra.Je vais utiliser la dernière image de raspbian. Je vais également utiliser code C au programme et vous pouvez regarde
Raspberry Pi caméra sugru monture

Raspberry Pi caméra sugru monture

appareil photo la Pi est un must ont mais étant un utilisateur de reflex numérique wannabe, j'étais curieux de connaître le champ de vision et de la distance focale de la caméra.La caméra avait un FOV très étroite ce qui en fait mauvais pour les phot
Timelapse simple caméra à l’aide de Raspberry Pi et une boîte de café

Timelapse simple caméra à l’aide de Raspberry Pi et une boîte de café

tout en développant le BerryCam j'ai pensé qu'il serait assez cool pour créer une caméra timelapse qui pourrait être laissée à l'extérieur sur une période de temps, pour capturer une séquence d'images qui pourraient ensuites être réunies dans un clip
Raspberry Pi comme caméra de surveillance peu coûteux HD

Raspberry Pi comme caméra de surveillance peu coûteux HD

cette instructable décrit comment construire une cam de surveillance basé sur un micro-ordinateur Raspberry Pi qui enregistre la vidéo HD quand quelque chose se déplace dans la zone surveillée. Image en direct peut être visualisée depuis n'importe qu
ITO : Raspberry Pi Robot avec commande à distance caméra Pan/Tilt et de Streamer de la vidéo sur internet

ITO : Raspberry Pi Robot avec commande à distance caméra Pan/Tilt et de Streamer de la vidéo sur internet

(Si vous aimez ce Instructable, n'oubliez pas de voter là-dessus - au-dessus : drapeau de coin à droite. Il est en concurrence sur l'INTERNET des objets et des concours d'automatisation. Merci beaucoup! ;-)Il s'agit d'une deuxième partie de mon précé
Raspberry Pi babyphone avec Splunk

Raspberry Pi babyphone avec Splunk

Ces étapes vous apprendra comment assembler les composants requis pour faire un babyphone Raspberry Pi et de collecter ces données dans Splunklecteur du journal et un outil d'analyse, de présélection que les données d'une manière significative. À la
Photo - la 3D imprimé framboise Pi caméra.

Photo - la 3D imprimé framboise Pi caméra.

Chemin du retour au début de 2014, j'ai publié une caméra Instructable appelé le SnapPiCam. L'appareil a été conçu en réponse à la nouvelle version Adafruit PiTFT.Il a été bien plus d'un an maintenant et avec ma récente incursion dans l'impression 3D
PiNoculars - Raspberry Pi Binoculars

PiNoculars - Raspberry Pi Binoculars

Attachez une framboise Pi 2 + caméra pour une paire de jumelles (ou télescope, microscope, etc.) et utiliser une des touch d'adafruit LCD + image personnalisée raspbian pour voir et prendre des photos. (Faire défiler les photos ci-dessus pour obtenir
Cam de sécurité Pi framboise facile avec Upload automatique Web

Cam de sécurité Pi framboise facile avec Upload automatique Web

Il s'agit d'un projet que j'ai mis ensemble super rapide au moins une semaine ou plus. La raison pour laquelle que j'avais besoin de mettre en place la façon dont je l'ai fait a été d'obtenir un système de sécurité de base en place dès que possible p
Toutes les Station météo bricolage Raspberry Pi avec le logiciel

Toutes les Station météo bricolage Raspberry Pi avec le logiciel

Retour à la fin février, j'ai vu ce post sur le site de Raspberry Pi.http://www.raspberrypi.org/School-Weather-station-...Ils avaient créé le Raspberry Pi des Stations météorologiques pour les écoles. J'ai voulu totalement un ! Mais à cette époque (e