2017-07-04 2 views
-4

Je veux une webcam pour enregistrer et un écran pour afficher le "live" flux avec quelques secondes de retard.Comment montrer/diffuser la webcam avec quelques secondes de retard?

Cas d'utilisation: besoin d'enregistrer une performance et l'afficher presque en direct, avec quelques secondes de retard pour un examen rapide. La performance prend quelques secondes maximum, besoin de l'afficher tout de suite sans cliquer manuellement. Il y a beaucoup d'essais, un clic manuel rendrait le processus beaucoup plus long.

sources possibles:

  • caméra principale sur un téléphone 6.0.1 Android (avant un trouble comme un paysage de GB)
  • caméra principale ou avant sur une tablette 6.0 Android
  • webcam un ordinateur portable (Linux Ubuntu 17.04 ou Windows 8.1) - pas de GPU séparé

affiche possibles:

  • tablette Android, comme ci-dessus
  • ordinateur portable
  • , comme ci-dessus

Autres infos:

  • pas audio nécessaire
  • réseau WiFi commun
  • IP Webcam déjà installé sur le téléphone et l'onglet laissez
  • compétences en programmation (je préfère Python)
  • pouvez configurer un serveur nginx
  • ... sur le net aussi
  • connexion internet

Essentials:

  • montrant en fait un flux lisible avec un retard> = 2s

Nice-to-haves:

  • ne pas utiliser retard réglable Internet
  • , sinon: dans la gamme 3-6s
  • bonne qualité
  • disposition sur demande
  • super fonctionnalité duper: possibilité d'enregistrer (sur clic, les dernières x secondes sont sauvegardées)

Généralement en utilisant la webcam de l'ordinateur portable et l'affichage de flux sur son écran avec un retard personnalisé serait génial.

+7

https://video.stackexchange.com/a/5149 – qlown

Répondre

6

Jetez un oeil à Open Broadcast Software (OBS) Si vous avez la version payante de ce logiciel, vous pouvez utiliser le Studio Mode qui prévisualiser le flux avant leur mise en ligne. Il peut être installé sur Windows, Mac et Linux et est open source.

Vous pouvez la fourche sur github et changer le code selon les besoins (compétences requises :))

l'espoir que cela vous aide.

2

Miguel Grinberg a écrit un excellent tutoriel de streaming vidéo en Python qui envoie des images JPEG successivement. Consultez son blog ici:

http://blog.miguelgrinberg.com/post/video-streaming-with-flask1

Chacun de ces JPEG peut être rapidement examiné puis diffusé. [Pour prendre en compte le délai requis]

En ce qui concerne l'obtention du flux vidéo d'entrée, vous pouvez interfacer une webcam en utilisant OPENCV. OpenCV utilise VideoCapture qui renvoie les images brutes sous forme d'octets. Ces octets doivent être encodés en JPEG et interfacés avec le code de Miguel.

import cv2 

class VideoCamera(object): 
    def __init__(self): 
    # Using OpenCV to capture from device 
    self.video = cv2.VideoCapture(0) 

    def __del__(self): 
    self.video.release() 

    def get_frame(self): 
    success, image = self.video.read() 
    # We are using Motion JPEG, but OpenCV defaults to capture raw images, 
    # so we must encode it into JPEG in order to correctly display the 
    # video stream. 
    ret, jpeg = cv2.imencode('.jpg', image) 
    return jpeg.tobytes() 

Cette approche vous aidera à répondre à tous les éléments nécessaires:

  • Pas d'Internet nécessaire
  • délai réglable - Contrôlez facilement le retard et le traitement que vous souhaitez effectuer sur chaque image
  • Enregistrement sur demande - Stockez les images capturées selon les besoins
  • Avoir un enregistrement retour de la fonctionnalité, en enregistrant simplement les 24 * x cadres précédents (flux 24fps)
1

J'ai essayé dans un de mes projets la boîte à boutons qui est assez simple.

La tokbox est payante et supporte python. le lien est tokbox

Il y a aussi de nombreux APIs disponibles qui sont libres comme Apache Open Meeting échantillon .Python sont disponibles dans GitHub.

Pour plus d'informations et le but de l'évaluation des autres api de vous pouvez passer par ce lien Open source conferencing products comparison

Des détails supplémentaires sont disponibles sur le wiki

http://opensourceecology.org/wiki/Videoconferencing

Avec NGINX exactement here est le lien.

0

Peut-être que cet outil aidera: Kinovea, si vous regardez dans son features sous "Live Capture" il y a une option pour retarder un flux en direct.