evenements:obc2012:dikogeek
Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédenteDernière révisionLes deux révisions suivantes | ||
obc2012:dikogeek [2013/05/02 14:23] – [Format proposé] florianh | evenements:obc2012:dikogeek [2017/04/28 21:53] – ↷ Page déplacée de obc2012:dikogeek à evenements:obc2012:dikogeek dbozec | ||
---|---|---|---|
Ligne 13: | Ligne 13: | ||
Il se veut interactif et se présentera sous forme de courte vidéo que l' | Il se veut interactif et se présentera sous forme de courte vidéo que l' | ||
- | ====== Format proposé | + | ===== Format proposé ===== |
* Un pupitre avec des boutons (environ 35, suivant le nombre de définition) | * Un pupitre avec des boutons (environ 35, suivant le nombre de définition) | ||
Ligne 22: | Ligne 22: | ||
__Anthony écrivait :__ | __Anthony écrivait :__ | ||
- | \\ | + | \\ \\ |
//En fait je me pose une autre question ergonomique : | //En fait je me pose une autre question ergonomique : | ||
- | \\ | + | \\ \\ |
ne vaudrait-il pas mieux qu'on ait un joystick qui permette de se balader dans une liste de mots classée par ordre alphabérique et un seul bouton qui lance la vidéo. | ne vaudrait-il pas mieux qu'on ait un joystick qui permette de se balader dans une liste de mots classée par ordre alphabérique et un seul bouton qui lance la vidéo. | ||
- | \\ | + | \\ \\ |
le tout dans un boitier en bois qui contient :\\ | le tout dans un boitier en bois qui contient :\\ | ||
- | * enceinte | + | - enceinte\\ |
- | * écran LCD pour voir les mots en local | + | - écran LCD pour voir les mots en local\\ |
- | * sortie son pour brancher sur une sono | + | - sortie son pour brancher sur une sono\\ |
- | * sortie vidéo pour moniteur, télé ou vidéo proj | + | - sortie vidéo pour moniteur, télé ou vidéo proj\\ |
- | * alim externe | + | - alim externe |
- | \\ | + | \\ \\ |
Comme ça deux usages : sur batterie, en autonome et seulement sonore ou sur secteur avec vidéo ? | Comme ça deux usages : sur batterie, en autonome et seulement sonore ou sur secteur avec vidéo ? | ||
- | \\ | + | \\ \\ |
ce qui présenterai l' | ce qui présenterai l' | ||
du coup pour naviguer et lancer les vidéo ça pourrait être un site web genre CMS permettant à un admin d' | du coup pour naviguer et lancer les vidéo ça pourrait être un site web genre CMS permettant à un admin d' | ||
et du coup on pourrait même mettre sur le web ! | et du coup on pourrait même mettre sur le web ! | ||
et re du coup pour mettre à jour la borne avec de nouvelles définitions, | et re du coup pour mettre à jour la borne avec de nouvelles définitions, | ||
- | \\ | + | \\ \\ |
qu'en pensez-vous ?// | qu'en pensez-vous ?// | ||
+ | |||
+ | |||
+ | ---- | ||
+ | |||
+ | Voilà, l' | ||
+ | |||
+ | ===== Technique ===== | ||
+ | |||
+ | On part donc sur l' | ||
+ | \\ \\ | ||
+ | Voici la chaîne de traitement \\ \\ | ||
+ | |||
+ | - Appui sur un bouton | ||
+ | - Récupération de l' | ||
+ | - Lancement de la vidéo associé à l'ID unique | ||
+ | - Lecture de la vidéo | ||
+ | - Si un autre bouton est pressé, on tue la tâche en cours, on lance une nouvelle vidéo | ||
+ | - Etc. | ||
+ | |||
+ | ==== Vidéo | ||
+ | |||
+ | |||
+ | J'ai testé différente manières de lire une vidéo sous Raspi. \\ \\ | ||
+ | |||
+ | - Tout d' | ||
+ | - OpenCV | ||
+ | - PyMedia | ||
+ | - PyGame | ||
+ | - En faisant des appels système dans des programmes Python | ||
+ | - On peut utiliser OmxPlayer ou RaspPyPlayer (à tester) et passer en paramètre la vidéo souhaité | ||
+ | \\ \\ | ||
+ | J'ai trouvé les librairies python complexe à mettre sur pieds. Il faut les bonnes versions, compiler certaines fois car les packages ne sont pas bons. Bref complexe, mais l' | ||
+ | \\ \\ | ||
+ | Avec OmxPlayer on refile la lecture de la vidéo au système, c'est donc très simple, cependant, c'est pour gérer la lecture, arrêt, suivant, etc. car il faut utiliser des appels système à travers python. | ||
+ | \\ \\ | ||
+ | Bref, je ne sais pas si je suis bien clair, mais l' | ||
+ | \\ \\ | ||
+ | Je vous laisse rajouter des idées si vous avez de l' | ||
+ | |||
+ | |||
+ | === Vos idées === | ||
+ | |||
+ | * C'est par ici | ||
+ | |||
+ | ==== Interaction homme/ | ||
+ | |||
+ | Nous aurons probablement besoins d' | ||
+ | |||
+ | Il y a eu plusieurs idées : | ||
+ | |||
+ | * Interfacer avec Arduino | ||
+ | * Utiliser les ports I2C et ISCP de Raspi | ||
+ | * Utiliser un clavier PS2 ou USB et utiliser le contrôle du clavier | ||
+ | * Registre à décalage | ||
+ | |||
+ | === Vos idées === | ||
+ | |||
+ | * C'est par ici | ||
+ | |||
+ | ===== Code source ===== | ||
+ | < | ||
+ | # | ||
+ | # -*-coding: | ||
+ | |||
+ | #Import des librairies nécessaires | ||
+ | import select, time | ||
+ | import sys, tty, termios | ||
+ | import os | ||
+ | import pygame | ||
+ | import subprocess, signal | ||
+ | from subprocess import Popen, PIPE | ||
+ | from pygame.locals import * | ||
+ | #import RPi.GPIO as GPIO | ||
+ | # | ||
+ | from evdev import InputDevice, | ||
+ | dev = InputDevice('/ | ||
+ | |||
+ | fpid = os.fork() | ||
+ | if fpid!=0: | ||
+ | # | ||
+ | sys.exit(0) | ||
+ | |||
+ | # | ||
+ | # | ||
+ | # | ||
+ | |||
+ | pygame.init() | ||
+ | pygame.display.init() | ||
+ | |||
+ | def accueil(): | ||
+ | ecran = pygame.display.set_mode((0, | ||
+ | image = pygame.image.load("/ | ||
+ | ecran.blit(image, | ||
+ | pygame.display.flip() # | ||
+ | |||
+ | #Fonction appelé lors d'un appuie bouton | ||
+ | def fct_movie(channel): | ||
+ | ecran = pygame.display.set_mode((0, | ||
+ | image = pygame.image.load("/ | ||
+ | ecran.blit(image, | ||
+ | pygame.display.flip() # | ||
+ | #Lancement d'un sous process pour récuperer la liste des processes en cours | ||
+ | p = subprocess.Popen([' | ||
+ | #Vérifie si le process se termine naturellement | ||
+ | while (p.poll() is None): | ||
+ | if dev.read_one() is not None: | ||
+ | os.killpg(p.pid, | ||
+ | break | ||
+ | if p.poll() is not None: | ||
+ | accueil() | ||
+ | |||
+ | # | ||
+ | # | ||
+ | # | ||
+ | accueil() | ||
+ | for event in dev.read_loop(): | ||
+ | if (event.code == ecodes.KEY_A and event.value == 0): | ||
+ | fct_movie(' | ||
+ | if (event.code == ecodes.KEY_B and event.value == 0): | ||
+ | fct_movie(2) | ||
+ | if (event.code == ecodes.KEY_C and event.value == 0): | ||
+ | fct_movie(3) | ||
+ | if (event.code == ecodes.KEY_D and event.value == 0): | ||
+ | fct_movie(' | ||
+ | |||
+ | pygame.display.quit() | ||
+ | pygame.quit() | ||
+ | </ | ||
+ | |||
+ |
evenements/obc2012/dikogeek.txt · Dernière modification : 2024/04/26 14:48 de 127.0.0.1