まこと の ブログ

MaKoTo no burogu — Journal de bord…

Aller au contenu | Aller au menu | Aller à la recherche

Mot-clé - Montage vidéo

Fil des billets - Fil des commentaires

jeudi, 13 février 2014

Enregistrer une partie de jeu d'arcade avec mame -2-

Suite de l'étude précédente :

J'ai terminé l'écriture du script Mame-inp2video4GnuLinux.sh pour générer automatiquement une vidéo depuis un fichier inp, sans avoir à se palucher les lignes de commandes.
Il est téléchargeable depuis l'annexe de ce billet.

Prérequis :

  • Pour fonctionner le script a besoin des logiciels suivant :

mame
advancecomp
mencoder
avidemux
ffmpeg2theora

sudo apt-get install mame advancecomp mencoder avidemux ffmpeg2theora
  • Télécharger le script et le placer dans le dossier de travail de son choix.
  • Rendre le script exécutable, s'il ne l'est pas déjà :
sudo chmod 775 Mame-inp2video4GnuLinux.sh


Pour enregistrer une partie :

Je rappelle la commande pour enregistrer une partie avec l'émulateur Mame, on va exécuter :

mame nom_de_la_rom -record ma_partie.inp

Et jouer…
L'enregistrement s'arrête lorsqu'on quitte le jeu.

Attention, durant l'enregistrement de la partie, il ne faut faire appel à aucun menu dans l'émulateur, sinon l'enregistrement s'arrêtera !



Pour générer une vidéo depuis la partie précédemment enregistrée :

  • Exécuter simplement le script et suivre les instructions ^__^ :
./Mame-inp2video4GnuLinux.sh


Bon amusement !

Attention, si comme moi vous sauvegardez vos inp dans un coin et qu'un beau jour vous décidez de les rejouer, n'oubliez pas de les recopier dans le dossier inp tel que définit dans mame.ini, car il ne faut pas espérer pouvoir donner le chemin vers le jeu, ni dans le script, ni dans la commande playback expliquée au billet précédent, ça ne fonctionne pas !

samedi, 25 janvier 2014

Enregistrer une partie de jeu d'arcade avec mame

  • Quand on utilise GNU et Linux, comment faire pour enregistrer ses parties de jeux vidéo et les montrer sur le net ?

AdvanceMame2.png
Bien qu'il existe quelques tutos pour faire cela sous Windows®, je n'en ai pas trouvé pour les distributions GNU/Linux.
Je vais donc tâcher de combler ce manque et vous allez voir que si l'opération semble relativement laborieuse dans son explication, elle ne le sera pas autant que sous Windows® avec lequel on doit recourir à un tas de logiciels annexes.

  • J'écrirais donc un script qui s'occupera de faire tout le travail automatiquement.

Lire la suite...

vendredi, 30 août 2013

Une Borne d'Arcade maison -42-

Suite de l'étude précédente :

Une petite vidéo ^^

Résultat d'une journée de travail complète, entre les prises de vue et le montage, pour cette vidéo réalisée avec Cinelerra.
La mauvaise lumière en plus de la caméra inapte à capter correctement en condition de basse lumière, donnent un rendu vraiment pas terrible…

À suivre…

vendredi, 21 mai 2010

Cinelerra, Rendu DVD (entrelacé ou désentrelacé)

Histoire d'une journée ordinaire, dans les miasmes de l'informatique…

Grâce au Manuel de Cinelerra (cf. PJ) page 143, je sais déjà lancer un rendu de mes montages, non seulement au format DVD, mais surtout sans perte de qualité par rapport aux rushs de ma caméra.
En effet j'ai modifié le script donné (-q 3 -b 9600) pour que, lorsque je donne un fichier mpeg2 à manger à Cinelerra, il me ressorte un fichier identique en poids et caractéristiques ! (mplex et ffmpeg -i LeFichier.mpg sont intéressants en cela)
Et c'est déjà pas mal, quand on sait le nombres d'options pour chaque encodages possibles, et qu'on ignore à quoi elles servent !!

Cette méthode est donc devenue ma référence pour sortir mes montages !

  • Créez un fichier texte et nommer le ~/cine_render.sh, ce sera notre script.
  • Copiez dans ce fichier les lignes suivantes :
#/bin/bash
mpeg2enc -v 0 -K tmpgenc -r 16 -4 1 -2 1 -D 10 -E 10 -g 15 -G 15 -q 3 -b 9600 -f 8 -o $1
  • Donnez les droits d'exécution à ce fichier : chmod 777 ~/cine_render.sh
  • Ouvrez votre montage dans Cinelerra, lancer un rendu.
  • Sélectionnez le format de fichier YUV4MPEG Stream.
  • Désélectionnez Rendu des pistes audio et sélectionnez Rendu des pistes vidéo.
  • Cliquez sur la clé des options.
  • Dans la fenêtre qui s'ouvre alors, indiquez le nom du fichier m2v que vous désirez créer. Ce fichier ne comportera que de la vidéo.
  • Cliquez sur Use pipe et renseigner le chemin du script : /home/<your_user>/cine_render.sh %
  • Cliquez sur OK pour fermer la seconde fenêtre et de nouveau OK pour effectuer le rendu de votre fichier m2v.
  • Lorsque le rendu du fichier m2v est terminé, ouvrez de nouveau la fenêtre de rendu, et effectuez le rendu audio d'un fichier AC3 à 256 kbits
  • Enfin, combinez la vidéo et l'audio avec cette commande :
$ mplex -f 8 votre_fichier_video.m2v votre_fichier_audio.ac3 -o votre_fichier_audio_et_video.mpeg


Jusque là, pas de soucis !
Les DVD générés avec ManDVD ou DVD Styler passent bien sur un Télé Cathodique.
Mais restent «peignés» sur un ordinateur (sans filtre adéquat sur le player) ou un Télé LCD (sans platine de salon efficace en désentrelacement).

Qu'à cela ne tienne, je m'en vais désentrelacer mon fichier mpeg que j'me dis bêtement !

Dans Cinelera il y a un effet «désentrelacement» avec plusieurs méthodes au choix.
Après quelques tests, certaines marchent avec plus ou moins de pertes de qualité d'image, d'autres pas…

Frustré, j'eus voulu utiliser le fameux filtre dont dispose Kino, le bien nommé désentrelacement YUV.

Seulement, repasser une fois de plus le montage à la moulinette ne m'enchante guère, pour des raisons de temps passé et surtout de parano quant à l'hypothétique perte de qualité que ce genre de compression-recompressée peut engendrer.
Mais Kino est une interface graphique, alors comment savoir quelle puissante commande il utilise ??
Simplement en le lançant depuis un terminal !

$ kino

Car généralement, les logiciels ainsi lancés indiquent ce qu'il font…
Hop j'initie un rendu DVD sur un fichier DV, avec le filtre, et le terminal indique :

>> Starting Export
>>> ExportMJPEG::startExport
>>> Generated video pipe 'yuvdeinterlace | mpeg2enc -v 0 -f 8 -I 0 -n p -a 3  -o '/home/makoto/TESTS-YUV/ori-kino-YUV'.mpv'
   INFO: [yuvdeinterlace] -------------------------------------------------
   INFO: [yuvdeinterlace]        Motion-Compensating-Deinterlacer
   INFO: [yuvdeinterlace] -------------------------------------------------
   INFO: [yuvdeinterlace] SETTING EXTENDED MMX for MOTION!
   INFO: [yuvdeinterlace] Y4M-Stream is 720x576(420jpeg)
   INFO: [yuvdeinterlace]  Stream is interlaced, bottom-field-first.
>> Leaving Export

Ce qui nous intéresse c'est donc cette ligne :

>>> Generated video pipe 'yuvdeinterlace | mpeg2enc -v 0 -f 8 -I 0 -n p -a 3  -o '/home/makoto/testttt'.mpv'

Mais par quelle magie yuvdeinterlace est-il appelé ??
Après recherches dans le man de mjpegtools (le filtre en fait partie) et moult tentatives j'ai réussi à reproduire la même chose en commande :

$ lav2yuv ori.dv | yuvdeinterlace | mpeg2enc -v 0 -f 8 -I 0 -n p -a 3  -o ori-lav2yuv-YUV.m2v 
   INFO: [yuvdeinterlace] -------------------------------------------------
   INFO: [yuvdeinterlace]        Motion-Compensating-Deinterlacer
   INFO: [yuvdeinterlace] -------------------------------------------------
   INFO: [yuvdeinterlace] SETTING EXTENDED MMX for MOTION!
   INFO: [lav2yuv] Detected libdv PAL output YUY2 (4:2:2)
   INFO: [lav2yuv] set chroma '420paldv' from input
   INFO: [yuvdeinterlace] Y4M-Stream is 720x576(420paldv)
   INFO: [yuvdeinterlace]  Stream is interlaced, bottom-field-first.

Mais en faisant de même sur un fichier mpeg2 tout droit issu de la carte SD de la caméra :

$ lav2yuv MOV004.mpg | yuvdeinterlace | mpeg2enc -v 0 -f 8 -I 0 -n p -a 3  -o ori-lav2yuv-YUV.m2v
   INFO: [yuvdeinterlace] -------------------------------------------------
   INFO: [yuvdeinterlace]        Motion-Compensating-Deinterlacer
   INFO: [yuvdeinterlace] -------------------------------------------------
   INFO: [yuvdeinterlace] SETTING EXTENDED MMX for MOTION!
 Unable to identify file (not a supported format - avi, quicktime).
**ERROR: [lav2yuv] Error opening MOV004.mpg
**ERROR: [yuvdeinterlace] Couldn't read YUV4MPEG header: system error (failed read/write)!
**ERROR: [mpeg2enc] Could not read YUV4MPEG2 header: system error (failed read/write)!

Impossible d'aller plus loin… j'ai eu beau chercher, explorer pas mal de pistes… longtemps… trop longtemps, rien n'y a fait :(
La commande mpeg2enc ne veut pas de mon fichier, pour une sombre histoire de renseignement absent dans le header du fichier…
Car en effectuant :

$ mpeg2enc MOV004.mpg -v 0 -f 8 -I 0 -n p -a 3  -o ori-lav2yuv-YUV.m2v
**ERROR: [mpeg2enc] Could not read YUV4MPEG2 header: bad header magic!

Mais le plus fort, c'est qu'avec le fichier DV aussi !! :

$ mpeg2enc ori.dv -v 0 -f 8 -I 0 -n p -a 3  -o ori-lav2yuv-YUV.m2v
**ERROR: [mpeg2enc] Could not read YUV4MPEG2 header: bad header magic!

Alors comment fais Cinelerra avec sa commande dans le script pour y arriver sans erreur ??!!!
Aucunes idées… Bref -_-;
En désespoir de cause, j'ai voulu tenter ma chance avec Cinelerra en modifiant le script comme ça,

lav2yuv | yuvdeinterlace | mpeg2enc -v 0 -K tmpgenc -r 16 -4 1 -2 1 -D 10 -E 10 -g 15 -G 15 -q 3 -b 9600 -f 8 -o $1

mais ça ne marche pas.

Puis en tournant la page du manuel, quelques références à mjpegtools … et puis, mais pourquoi je m'emmerde à perdre mon temps à vouloir vérifier en commande avant de tenter direct dans le script, comme ça, tel quel, bêtement, pourquoi réfléchir, chercher midi à quatorze heure ?? alors que depuis le début le résultat est sous mes yeux X_X !!!

Kino me disait :

>>> Generated video pipe 'yuvdeinterlace | mpeg2enc -v 0 -f 8 -I 0 -n p -a 3 -o '/home/makoto/TESTS-YUV/ori-kino-YUV'.mpv'

Et bah pouf, je dis à Cinelerra :

yuvdeinterlace | mpeg2enc -v 0 -K tmpgenc -r 16 -4 1 -2 1 -D 10 -E 10 -g 15 -G 15 -q 3 -b 9600 -f 8 -o $1

Et ça marche… -_- Pfffffffffffff

Cependant, on apprend de mjpegtools :

If you deinterlacing the movie with yuvdeinterlace you should tell mpeg2enc that it does not need to do motion estimation for interlaced material. You have to use the -I 0 option of mpeg2enc to say that the frames are already deinterlaced. This will save a lot of time when encoding. If you don't use -I 0 it will not cause problems, the encoding will just take longer.

Par soucis de performances à l'encodage voici donc le nouveau script affublé de l'option «-I 0»

Seconde méthode de référence pour sortir mes montages désentrelacés !

cine_render-desentrelace.sh

#/bin/bash
yuvdeinterlace | mpeg2enc -v 0 -K tmpgenc -r 16 -4 1 -2 1 -D 10 -E 10 -g 15 -G 15 -q 3 -b 9600 -f 8 -I 0 -o $1

Ouf, tout ça pour ça,… il est tard… mais au moins ça marche !! :)

- page 1 de 2