Contenu | Rechercher | Menus

Annonce

Le forum rencontre en ce moment quelques soucis de charge, il est possible qu'une erreur soit affichée quand vous postez un message, ne rechargez pas la page au risque de poster une seconde fois votre message

Si vous rencontrez des soucis à rester connecté sur le forum (ou si vous avez perdu votre mot de passe) déconnectez-vous et reconnectez-vous depuis cette page, en cochant la case "Me connecter automatiquement lors de mes prochaines visites".

nombre réponses : 25

#0 Re : -1 »  La Stereo-3D sous Linux » Le 26/11/2012, à 02:02

magestik
Réponses : 1216

@b&nder: bizarre surtiut si tu utilises une sortie HDMI 3D.

@fredz: j'ai une théorie : l'écran peut monter jusqu'à 240 Hz mais en entrée tu peux très bien être limité a 24 Hz. Donc pour activer la 3D tu dois passer en résolution 3D (frame packing).

De toute façon il faut que tu ajoutes le mode dans le serveur x avec xrandr avant de vouloir le sélectionner. Regarde le post de jean un peu plus haut wink

#1 Re : -1 »  La Stereo-3D sous Linux » Le 26/11/2012, à 18:33

magestik
Réponses : 1216

@b&nder: tu utilises un cable DVI mais en fait tu lui envoi une résolution qui fait partie des normes HDMI 1.4 (frame-packing). Quand ton écran reçoit cette résolution (1280x1470) il comprend que c'est de la 3D même si ça ne vient pas de l'entrée HDMI. Tous les écrans n'en sont pas capables : pour certain le frame-packing ne peut venir que de la prise HDMI donc si ça vient du DVI tu auras une erreur sur l'OSD de ton écran. J’arrête là pour les explications, maintenant, pour en revenir à ton problème (et si j'ai bien compris = tu utilises une résolution HDMI ?), tant que tu ne changes pas ta résolution alors tes lunettes devraient être désactivées.

Question : est-ce que tu utilises glQuadBufferEmu ?


@fredz : je vais réexpliquer parce que mon explication d'hier était un peu rapide (il étais tard et j'étais pas sur mon ordi). Donc ce que je voulais dire c'est que peut-être que ton écran est capable d'afficher 240 images par secondes mais peut-être qu'il ne peut pas prendre autant en entrée. Et ce serait loin d'être anormal,  il y a beaucoup de télé capable d'afficher du 600 Hz depuis des années, mais elles ne peuvent pas prendre une fréquence si importante en entrée. C'est en interne qu'elle calcule des images intermédiaires pour améliorer (soit disant) la fluidité. Dans ton cas je pense que tu ne peux pas utiliser le mode 240 Hz ni le mode 120 Hz directement. Soit tu utilises une source HDMI 3D (le fameux frame-packing qu'on sait utiliser depuis quelques temps grâce aux expériences de jean-le-petit) soit tu utilises une source 2D et tu es alors limité à une fréquence plus "normale" comme le 24 Hz (voir 60 Hz si t'as de la chance) en HDMI Full HD.

#2 Re : -1 »  La Stereo-3D sous Linux » Le 27/11/2012, à 20:57

magestik
Réponses : 1216

Désolé mais je peux rien faire : ca ne vient pas de glQuadBufferEmu puisque tu ne l'utilises pas et je n'utilise ni l'HDMI 3D ni les lunettes Nvidia tongue

Mais puisque tu parles je verrais bien un problème d'interférence : une autre source qui emet des IR et qui active les lunettes ... Ce serait quand même bizarre ...

#3 Re : -1 »  La Stereo-3D sous Linux » Le 02/12/2012, à 14:12

magestik
Réponses : 1216

Désolé en ce moment j'ai pas trop le temps de répondre ou de m'occuper du projet.

@freewee : je pourrais te donner une explication rapide mais si tu es novice tu comprendrais pas tout et tu serais dégouté. Donc tu vas devoir patienter un peu, le temps que je me remette dedans et que je simplifie un peu l'installation.

Par contre je peux répondre à tes questions :
- ça ne pose pas de problème que tu utilises les pilotes propriétaires;
- il te faudra les librairies OpenGL et les paquets de développement pour la compilation;
- les applications compatibles 3D sont toutes les applications supportant le Quad-Buffer d'OpenGL nativement ... c'est-à-dire pas grand chose pour le moment. Mais il y a quelques lecteurs de vidéos (Bino, mplayer entre autres), des visionneurs d'images, quelques jeux. Su le wiki la liste des logiciels compatibles est à peu près à jour je crois.
- les mkv 3D sont lisibles avec Bino (et surement avec mplayer) par contres tu peux oublier les Blu-Ray 3D pour le moment : les Blu-Ray sont déjà difficilement lisibles alors en 3D ...

Mais ne t'inquiète pas, tu y arriveras wink

#4 Re : -1 »  La Stereo-3D sous Linux » Le 02/12/2012, à 14:51

magestik
Réponses : 1216

Si ça peut t'aider je peux te donner les commandes à utiliser pour la compilation et l’exécution, ce sera mieux que de revenir en arrière et te "dépatouiller" mais je sais pas si ça va beaucoup t'aider.

Déjà il faut commencer par installer tous les paquets nécessaires, dont je ne connais pas les noms exacts : OpenGL, GLX, libusb 1.0 et un autre paquet dont je retiens jamais le nom ^^

Bref, pour la compilation il faut utiliser la commande "make". Il faut au préalable se place dans le bon dossier (c'est-à-dire le dossier ou se trouve ce que tu as téléchargés sur github) grâce à la commande cd /home/NOM/Bureau/glQuadBufferEmu  (ici c'est comme si tu avais mis téléchargé les fichiers sur ton bureau dans le dossier glQuadBufferEmu).

Pour l'utilisation ça se passe aussi en ligne de commande (en étant dans le même dossier) : LD_PRELOAD=./glQuadBufferEmu.so nomduprogramme.

Par exemple : LD_PRELOAD=./glQuadBufferEmu.so glxgears -stereo (qui lancera un programme de démo en 3D, même si la 3D est pas super ^^).


Si tu n'y arrives pas (ou si tu ne comprends pas) ne désespère pas, Linux c'est pas toujours comme ça, là c'est spécial parce que c'est un logiciel en cours de développement, une beta test en quelque sorte.

#5 Re : -1 »  La Stereo-3D sous Linux » Le 02/12/2012, à 15:58

magestik
Réponses : 1216
freewee a écrit :

Merci

Je ré ouvre mon portable dès que possible, mon PC de bureau avec écran ViewSonic à émetteur intégré ne devant pas être encore compatible!

Et bien si, il est compatible ! Avec le pilote propriétaire il suffit de rajouter une ligne dans le fichier /etc/xorg.conf. Et si il supporte l'HDMI 3D alors il faut relire les messages de jean un peu plus haut wink

Normalement tout marche à peu près, il faut juste que je prenne un peu de temps pour tout remettre en forme, faire des instructions d'installation etc ... Mais en ce moment j'ai pas vraiment le temps, j'ai pas mal de choses à faire pour la fac ... et il me reste moins de 3 semaines ^^ Après ça ira mieux. J'espère.

#6 Re : -1 »  La Stereo-3D sous Linux » Le 02/12/2012, à 17:23

magestik
Réponses : 1216
freewee a écrit :
magestik a écrit :

Et bien si, il est compatible ! Avec le pilote propriétaire il suffit de rajouter une ligne dans le fichier /etc/xorg.conf. Et si il supporte l'HDMI 3D alors il faut relire les messages de jean un peu plus haut wink

Je vais relire ça! J' ai dejà testé mon portable sur l' écran du PC de bureau, en HDMI 1.4a (en 1.3 aussi et je n' ai pas vu de différence), ça fonctionne bien. Mais mon PC de bureau est branché actuellement en DVI sur le ViewSonic, le 3D Vision fonctionne bien; y at'il une chance que ça marche en DVI?
En tout cas merci, je m' attelle à la tâche!

Oui, on sait activer tous les modes 3D, HDMI 3D ou DVI 3D.

Le DVI 3D c'est une résolution 120 Hz avec une petite modification au niveau des timings. Si tu veux tu peux aussi faire passer un signal frame-packed (résolution qui appartient normalement à la norme HDMI 1.4) dans une câble DVI.

Pour portable c'est glQuadBufferEmu qui s'occupera de contrôler les lunettes alors que sur ton écran de bureau ce sera juste un changement de résolution (pour le moment il faut le faire manuellement) qui les activera les lunettes.

J'ai pas de 3D active donc j'ai jamais vraiment pu tester les résolutions 3D donc ce que je te conseille c'est de lire en priorité les messages de jean-le-petit vu que c'est vraiment lui qui a fait des recherches et beaucoup de tests.

Voilà.

#7 Re : -1 »  La Stereo-3D sous Linux » Le 09/12/2012, à 17:21

magestik
Réponses : 1216

Est-ce que tu as téléchargé le firmware ?

Je viens d'accepter une modification sur github venant de PKN_zeta (ça faisait longtemps big_smile ). Normalement la compilation devrait marcher correctement !

#8 Re : -1 »  La Stereo-3D sous Linux » Le 09/12/2012, à 18:40

magestik
Réponses : 1216
freewee a écrit :

Bonjour

Non je n' avais pas téléchargé le nvstusb,ce que je viens de faire et l' ai placé dans lib/firmware à tout hasard (excuse l' inexpérience), puis redémarré.
Je n' ai pas de changement , toujours la même erreur Glxgears au lancement du programme de démo... sad

Non au contraire tu l'as placé juste ou on devrait le placer, sauf que pour le moment faut que tu le place à côté de glQuadBufferEmu.so (j'ai trouvé ça plus simple pour le moment) wink

#9 Re : -1 »  La Stereo-3D sous Linux » Le 12/12/2012, à 21:53

magestik
Réponses : 1216

Est-ce que tu utilises le pilote propriétaire ou le pilote libre (nouveau) ? L'option "Stereo 10" ne marche que pour le pilote propriétaire !

Si tu utilises le pilote libre tu vas devoir utiliser une résolution personnalisée qui activera la stéréoscopie.

Dès que je serai en vacances je m'occuperais de remettre au propre le driver et la doc, promis tongue

#10 Re : -1 »  La Stereo-3D sous Linux » Le 16/12/2012, à 22:46

magestik
Réponses : 1216

Faut voir avec jean, c'est lui l'expert ^^

Sinon faut essayer de modifier la résolution avec xrandr.

#11 Re : -1 »  La Stereo-3D sous Linux » Le 03/01/2013, à 17:21

magestik
Réponses : 1216

Bonjour à tous, et bonne année !

En ce moment j'ai pas trop le temps d'avancer sur glQuadBufferEmu. Je travaille sur un jeu en OpenGL pour mes études donc je peux pas repousser, faut que je le finisse à temps et c'est un projet assez conséquent. Par contre j'apprends plein de choses en OpenGL ça devrait beaucoup me servir quand j'aurais un peu de temps pour me remettre sur glQuadBufferEmu. Il reste pas tant que ça a faire pour avoir quelque chose de correct !

Désolé pour tout ceux qui attendent que j'avance ... Mais je vais vraiment essayer de prendre quelques heures pour faire un peu de ménage (supprimer les trucs qui servent plus) et compléter un peu les différents points essentiels.

Allez perdez pas espoir wink

#12 Re : -1 »  La Stereo-3D sous Linux » Le 26/01/2013, à 20:07

magestik
Réponses : 1216

De toute facon je fais plus de paquet (ni deb ni autre).
Faudrait que j'essaye de me refaire un petit ppa sur launchpad.

#13 Re : -1 »  La Stereo-3D sous Linux » Le 17/02/2013, à 14:49

magestik
Réponses : 1216

Bonjour à tous !

Comme je l'ai déjà dit j'ai pas le temps de bosser de manière directe sur glQuadBufferEmu puisque j'ai un projet scolaire à finir. Par contre, je travaille indirectement puisque j’acquiers des connaissances en OpenGL. Du coups, dès la fin des cours (mi-mars) je serai capable d'améliorer le driver très rapidement !

Bon, là je me suis répété, je vous avais déjà dit tout ça. Sauf que je viens d'intégrer la Stéréoscopie dans mon projet de fin d'année (qui est un jeu de foot en OpenGL) et je suis très satisfait ! En quelques heures seulement j'ai juste modifié ma gestion de caméra pour pouvoir facilement calculer des vues légèrement différentes (voir ici : http://paulbourke.net/stereographics/stereorender/) et pouvoir les afficher comme si y'avait un carte graphique QUAD-BUFFER. Et voilà, glQuadBufferEmu a fait le reste !

Aucun problème à l'affichage, glQuadBufferEmu a pas bronché. Pourtant mon jeu est en OpenGL 3.1 alors que quand j'ai écrit glQuadBufferEmu je connaissais à peine l'OpenGL 2.1 ! Quand je vois à quel point glQuadBufferEmu est déjà stable ça me donne encore plus envie de continuer et d'aller jusqu'au bout pour proposer quelque chose de parfait !!!

Attendez-moi, d'ici un mois c'est reparti wink

#14 Re : -1 »  La Stereo-3D sous Linux » Le 18/04/2013, à 19:44

magestik
Réponses : 1216
linuxienubuntiste a écrit :

Come back Jésus !

Jésus ? roll

J'avais dit que je reviendrais "d'ici un mois" ... et ça fait deux mois depuis hier ...

J'vous avais expliqué que j'avais mes projets scolaires à finir sauf que maintenant je suis en stage et c'est pas facile de me remettre dans le projet pour le moment. Je suis en stage de 9h à 18h tous les jours (pour la plupart d'entre vous c'est normal, mais pour moi c'est quand même nouveau, c'est le but d'un stage non ? tongue) donc ça me laisse très peu de temps pour moi. En plus après avoir passé 8h sur l'ordi (à bosser!) pendant la journée je suis pas forcement motivé pour me remettre sur l'ordi le soir.

Donc non je n'ai pas abandonné définitivement le projet mais oui j'ai un peu mis le projet en pause, le temps de bien m'habituer au stage (qui est génial d'ailleurs).

Sinon c'est bien de poster un petit message comme ça, ça peut que me remotiver wink

#15 Re : -1 »  La Stereo-3D sous Linux » Le 19/04/2013, à 22:18

magestik
Réponses : 1216
linuxienubuntiste a écrit :

PS: je suis anti religions donc jésus dans mon vocabulaire est simplement un berger pour incapables, le vrai en l’occurrence si il à réellement existé un précurseur dans l’endoctrinement mystique, mais c'est un tout autre débat.

Je l'ai pas mal pris wink Au contraire, c'est pas tout les jours qu'on me compare à Jésus lol

#16 Re : -1 »  La Stereo-3D sous Linux » Le 17/05/2013, à 19:49

magestik
Réponses : 1216

On ca commencer par pseudemys. Je résume : un écran noir lors du lancement de glxgears que ce soit avec ou sans l'option stereo ? Et ça marche sans utiliser glQuadBuffeEmu ? Je suppose que c'est un problème de driver : tu dois avoir 2 librairies OpenGL installés mesa et le driver proprio ! Essaye de désinstaller la librairie que tu n'utilises pas wink

Maintenant, ChuangTseu, pourquoi toi tu n'irais pas sur IRC qu'on discute ? tongue J'avais dit qu'il faudrait un contributeur pour me relancer. Tu as l'air de convenir parfaitement pour le rôle. Déjà tu es étudiant en L3, comme moi. Tu es en stage de fin de L3, comme moi. Ton sujet de stage est un combo C++/OpenGL, presque comme moi. Et tu as lu les 49 pages du sujet, comme moi xD

Tu arrives quand même un peu trop tôt mais on fera avec ^^ De mon côté je suis en stage jusqu'au 31 aout. Jusqu'à maintenant tout mes week-end étaient pris par un autre projet (secret ^^) ... mais ce "projet" se finit demain ! Bon après j'ai mon rapport de stage à faire pour le 3 juin donc mes prochains week-end vont pas être super libres non plus.

Donc en gros je peux me remettre dans le projet tout doucement pour repartir à un rythme normal d'ici un mois. En tout cas faut qu'on se parle sur IRC un de ces jours (rapidement) !!!

#17 Re : -1 »  La Stereo-3D sous Linux » Le 18/05/2013, à 11:17

magestik
Réponses : 1216
ChuangTseu a écrit :

Eh ben que de points communs !

Bon moi je suis en semi-stage à vrai dire (en labo de recherche avec des horaires bien souples) donc j'ai plus de temps à consacrer à la "contribution".
En plus je fini le 10 juin.

Bref du coup j'essaierais de me mettre souvent sur l'IRC #stereo3D pour pas te rater big_smile

Ok ça marche. Je serais sur IRC toute la journée aujourd'hui wink

ChuangTseu a écrit :

Et aussi précision importante, je n'ai qu'un portable avec écran classique et aucun kit pour 3D, mais ça m'interesse malgré tout, surtout que si ça permet de rendre la 3D par la méthode OpenGL standard (quadBuffer) avec la 3D Vision, ça pourrais me pousser à inverstir dedans un de ces jours tongue

Ça c'est pas très grave, j'ai passé plus d'un an à développer des logiciels stéréo sans aucun matos 3D. Bon maintenant je suis bien équipé, je peux tester presque toutes les technos smile

#18 Re : -1 »  TVDownloader: télécharger les médias du net ! » Le 23/11/2012, à 15:13

magestik
Réponses : 2858

Ok, nickel alors.

Par contre il me faudrait un fichier master.m3u de ftvodhd-i.akamaihd.net, histoire de faire un truc portable. En gros que la class PluzzDLM3U soit capable de télécharger n'importe quel fichier dans la meilleure qualité disponible quelque soit le lien de la playlist. Alors que pour le moment c'est codé en dur avec des expressions régulières !

Donc si quelqu'un me trouve un master.m3u je pourrais parser les m3u correctement, sans expression régulière et donc lancer le téléchargement comme il faut, en utilisant des adresses relatives au fichier de playlist (alors que ça aussi c'est codé en dur apparemment).

#19 Re : -1 »  TVDownloader: télécharger les médias du net ! » Le 23/11/2012, à 17:30

magestik
Réponses : 2858

Ça marche nickel big_smile Bon, la qualité est quand même limite quand y'a du noir, mais ça marche, je vais enfin pouvoir regarder mon épisode de Castle x)

Par contre là il me manque une ou deux petites choses avant de pouvoir poster le code. Mais ça arrive wink

#20 Re : -1 »  TVDownloader: télécharger les médias du net ! » Le 23/11/2012, à 18:12

magestik
Réponses : 2858

Je viens de regarder Castle avec cette méthode, donc je vois pas en quoi c'est inquiétant tongue

Je suis en train de finaliser l'intégration dans pluzzdl, j'espère poster le code d'ici une heure.

#21 Re : -1 »  TVDownloader: télécharger les médias du net ! » Le 23/11/2012, à 19:11

magestik
Réponses : 2858

Bon, alors, ça marche, j'arrive à télécharger les vidéos avec pluzzdl.

Par contre j'ai pas trop bien réussi à l'intégrer dans pluzzdl donc je vais mettre les morceaux de code modifiés ici comme ça le développeur principal (je sais même pas qui c'est ^^) de pluzzdl pourra l'intégrer comme il le voudra.

Donc il faut ajouter ces 3 lignes dans le init de la classe PluzzDL:

#utilisation du lien mobile
args = re.findall( "/(([0-9]{4})/S([0-9]{2})/J([0-9]{1})/([0-9]*)-([0-9]{6,8}))-", self.pageInfos )[0]
mobile_link = "http://medias2.francetv.fr//catchup-mobile/france-dom-tom/non-token/non-drm/m3u8/%s.m3u8" %(args[0])
downloader = PluzzDLM3U8(mobile_link, self.nomFichier, self.navigateur, self.stopDownloadEvent, self.progressFnct )

J'ai aucune idée de ou l'ajouter ... il faudrait que quand aucune autre vidéo n'est disponible (ou utilisable, comme actuellement) ça utilise la vidéo mobile. Et avec le code actuel c'est pas facile à faire. J'aurais bien fait les modifications nécessaires moi même mais y'a beaucoup de chose de changer donc je pense pas que ce soit à moi de le faire (c'est la première fois que je vous aide).

Maintenant le code de la classe PluzzDLM3U8 :

class PluzzDLM3U8( object ):
	"""
	Telechargement des liens m3u8
	"""

	def __init__( self, m3u8URL, nomFichier, navigateur, stopDownloadEvent, progressFnct ):
		self.m3u8URL           = m3u8URL
		self.nomFichier        = nomFichier
		self.navigateur        = navigateur
		self.stopDownloadEvent = stopDownloadEvent
		self.progressFnct      = progressFnct

		self.historique        = Historique()

		self.nomFichierFinal   = "%s.mkv" %( self.nomFichier[ : -3 ] )

	def ouvrirNouvelleVideo( self ):
		"""
		Creer une nouvelle video
		"""
		try :
			# Ouverture du fichier
			self.fichierVideo = open( self.nomFichier, "wb" )
		except :
			logger.critical( "Impossible d'écrire dans le répertoire %s" %( os.getcwd() ) )
			sys.exit( -1 )
		# Ajout de l'en-tête
		#	Fait dans creerMKV

	def ouvrirVideoExistante( self ):
		"""
		Ouvre une video existante
		"""
		try :
			# Ouverture du fichier
			self.fichierVideo = open( self.nomFichier, "a+b" )
		except :
			logger.critical( "Impossible d'écrire dans le répertoire %s" %( os.getcwd() ) )
			sys.exit( -1 )

	def creerMKV( self ):
		"""
		Creer un mkv a partir de la video existante (cree l'en-tete de la video)
		"""
		logger.info( "Création du fichier MKV (vidéo finale) ; veuillez attendre quelques instants" )
		try:
			commande = "ffmpeg -i %s -vcodec copy -acodec copy %s 1>/dev/null 2>/dev/null" %( self.nomFichier, self.nomFichierFinal )
			os.system( commande )
			os.remove( self.nomFichier )
			logger.info( "Fin !" )
		except:
			logger.error( "Impossible de créer la vidéo finale" )
			sys.exit( -1 )

	def telecharger( self ):

		if( re.match( "http://ftvodhd-i.akamaihd.net/[^\.]+", self.m3u8URL ) ):
			# Recupere le fichier master.m3u8
			self.m3u8 = self.navigateur.getFichier( self.m3u8URL )
			# Recupere le lien avec le plus gros bitrate (toujours 1205000 ?)
			try:
				self.listeFragmentsURL = re.findall( "http://ftvodhd-i\.akamaihd.net/.+?index_2_av\.m3u8.+", self.m3u8 )[ 0 ]
			except:
				logger.critical( "Impossible de trouver le lien vers la liste des fragments" )
				sys.exit( -1 )

			# Recupere la liste des fragments
			self.listeFragmentsPage = self.navigateur.getFichier( self.listeFragmentsURL )

			# Extrait l'URL de tous les fragments
			self.listeFragments = re.findall( "http://ftvodhd-i.akamaihd.net.+", self.listeFragmentsPage )

			# Nombre de fragments
			self.nbFragMax = float( len( self.listeFragments ) )
			logger.debug( "Nombre de fragments : %d" %( self.nbFragMax ) )
		else: # mobile
			quality = M3U(self.m3u8URL, self.navigateur)

			max_bandwith_val = -1
			max_bandwith_url = ""

			for f in quality.files:
				try:
					s = f.options['EXT-X-STREAM-INF'].split(',')
					b = s[1].split('=')
					if b[0] == 'BANDWIDTH':
						bandwidth = int(b[1])
				except:
					bandwidth = 0

				if bandwidth >= max_bandwith_val:
					max_bandwith_url = quality.getURL(f.name)
					max_bandwith_val = bandwidth

			self.listeFragmentsURL = max_bandwith_url
			#print max_bandwith_url


		#
		# Creation de la video
		#
		self.premierFragment    = 1
		self.telechargementFini = False
		video = self.historique.getVideo( self.listeFragmentsURL )
		# Si la video est dans l'historique
		if( video is not None ):
			# Si la video existe sur le disque
			if( os.path.exists( self.nomFichier ) or os.path.exists( self.nomFichierFinal ) ):
				if( video.finie ):
					logger.info( "La vidéo a déjà été entièrement téléchargée" )
					if( not os.path.exists( self.nomFichierFinal ) ):
						self.creerMKV()
					sys.exit( 0 )
				else:
					self.ouvrirVideoExistante()
					self.premierFragment = video.fragments
					logger.info( "Reprise du téléchargement de la vidéo au fragment %d" %( video.fragments ) )
			else:
				self.ouvrirNouvelleVideo()
				logger.info( "Impossible de reprendre le téléchargement de la vidéo, le fichier %s n'existe pas" %( self.nomFichier ) )
		else: # Si la video n'est pas dans l'historique
			self.ouvrirNouvelleVideo()

		# Ajout des fragments
		logger.info( "Début du téléchargement des fragments" )
		try:
			if( re.match( "http://ftvodhd-i.akamaihd.net/[^\.]+", self.m3u8URL ) ):
				i = self.premierFragment
				while( i <= self.nbFragMax and not self.stopDownloadEvent.isSet() ):
					frag = self.navigateur.getFichier( self.listeFragments[ i - 1 ] )
					self.fichierVideo.write( frag )
					# Affichage de la progression
					self.progressFnct( min( int( ( i / self.nbFragMax ) * 100 ), 100 ) )
					i += 1
				if( i == self.nbFragMax + 1 ):
					self.progressFnct( 100 )
					self.telechargementFini = True
					logger.info( "Fin du téléchargement" )
					self.creerMKV()
			else:
				playlist = M3U(max_bandwith_url, self.navigateur)
				i = 0
				for f in playlist.files:
					#print playlist.getURL(f.name)
					#print f.options

					frag = self.navigateur.getFichier(playlist.getURL(f.name))
					self.fichierVideo.write( frag )
					++i

				logger.info( "Fin du téléchargement" )
				self.creerMKV()

		except KeyboardInterrupt:
			logger.info( "Interruption clavier" )
		except:
			logger.critical( "Erreur inconnue" )
		finally :
			# Ajout dans l'historique
			self.historique.ajouter( Video( lien = self.listeFragmentsURL, fragments = i, finie = self.telechargementFini ) )
			# Fermeture du fichier
			self.fichierVideo.close()

Donc c'est un peu le bordel parce que j'ai préféré laisser l'ancien code pour le moment (en mettant plusieurs conditions). D'abord je sais pas à quoi ressemble le fichier master.m3u8 donc je voulais pas trop supprimer de code pour eviter de casser des choses qui marche actuellement. Si quelqu'un me donne un master.m3u8 je pourrais faire les modifications nécessaires pour fusionner les 2 codes (et donc enlever toutes les conditions). Ensuite j'ai utilisé plusieurs autres classes que j'avais faite en travaillant en local, pour tester plus rapidement. Et quand j'ai vu le code de PluzzDL j'ai bien vu que c'était pas la bonne solution puisqu'aucune autre classe de téléchargement n'utilise des classe extérieure pour les téléchargement.

Donc voilà le code de mes classes, dans lesquelles j'utilise des iterateurs, je trouvais que c'était assez sympa de les utiliser dans ce contexte :

#!/usr/bin/env python
# -*- coding:Utf-8 -*-

from Navigateur import Navigateur
import StringIO

class M3U_file:
	def __init__(self, name, ext):
		self.name = name
		self.options = ext

	def __str__(self):
		return self.name

class M3U_iterator:
	def __init__(self, data):
		self.buf = StringIO.StringIO(data)

	def __next_line(self):
		l = self.buf.readline()

		if l == "":
			raise StopIteration

		return l.rstrip('\n\r')

	def next(self):
		l = self.__next_line()


		while l[0] == '#':
			ext = {}

			try:
				s = l.split(':')
				ext[s[0].lstrip('#')] = s[1]
			except:
				pass

			l = self.__next_line()

		return M3U_file(l, ext)


	def __iter__(self):
		return self

class M3U:
	def __init__(self, url, navigateur):
		splited = url.split('/')
		self.m3u = splited[-1]
		splited[-1] = ""
		self.basedir = '/'.join(splited)

		data = navigateur.getFichier(url)

		self.files = M3U_iterator(data)

	def getURL(self, filename):
		return self.basedir + filename

Je suis bien au courant que ce que j'ai fait aura besoin de beaucoup de modifications pour être intégrer avec les normes du projet, alors ne vous genez pas. J'ai trouvé une solution, je l'ai implémenté à ma façon et je l'ai partagé. A vous d'adapter selon vos habitudes wink

Et si vous voulez, je peux faire des modifications moi même si vous me dites ce que je dois faire tongue

#22 Re : -1 »  TVDownloader: télécharger les médias du net ! » Le 23/11/2012, à 20:14

magestik
Réponses : 2858
chaoswizard a écrit :

Arf, dire qu'on y avait pensé à cette histoire de flux différents selon si on est sur PC/mobile/box...

Je viens de faire rapidement la modif ; je verrais ce WE pour faire mieux.

Merci à tous en tout cas !

De rien. Si tu as besoin d'aide, dis le moi, je pourrais m'occuper de modifier des trucs si tu veux wink

chaoswizard a écrit :

(ça serait bien de faire un petit récapitulatif des pseudos parce qu'entre les différents forums, mails, ..., je ne sais plus qui est qui tongue)

Moi je suis que sur ce forum et la première fois que j'ai posté c'était y'a 2 jours. Donc je suis personne, ou juste un petit nouveau. Enfin tu comprends quoi ^^

#23 Re : -1 »  TVDownloader: télécharger les médias du net ! » Le 23/11/2012, à 21:02

magestik
Réponses : 2858

Ah oui c'est vrai j'ai oublié de préciser quand même que jchb était mon partenaire de la nuit pour cette découverte formidable big_smile
D'ailleurs c'est lui qui a eu l'idée de regarder les liens des vidéos de l'appli mobile.

Je vais en profiter pour vous faire un compte rendu de l'application mobile, comme promis.

Pour commencer l'application télécharge un fichier zip contenant un fichier JSON par chaine. Chaque fichier contient la liste des programmes disponibles en replay et pour chaque programme disponible il y a le lien vers la playlist m3u.
Voilà le lien du fichier :  http://webservices.francetelevisions.fr … x_main.zip
Normalement y'a un espèce de timestamp en paramètre pour ce zip mais je pense que c'est plus pour empêcher la mise en cache.

Je précise que je n'utilise pas cette archive dans mon code. J'ai trouvé une correspondance entre les liens c'est plus simple. Sinon il faudrait télécharger l'archive, ouvrir les fichier JSON un par un et les parcourir en essayant de trouver la correspondance entre le lien à télécharger et le programme dans le JSON.

Retour à l'application. Quand on clique sur un programme, l'application récupère le fichier m3u globale qui contient 4 playlist m3u, chacune ayant des fragments de différentes qualités (bande-passante). Les quatre qualités sont 150k, 240k, 440k et 840k. Exemple : http://medias2.francetv.fr/catchup-mobi … 21119.m3u8

Là on voit clairement quelque chose de connu à la fin : m3u8/2012/S47/J1/72780286-20121119.m3u8
Donc ce morceau je le récupère (regex powaaa) dans le getInfosOeuvre.php qui est toujours appelé au chargement de PluzzDL.

L'appli sélectionne la playlist (surement en déterminant la bande-passante disponible en se basant sur la vitesse de téléchargement du zip) et la récupère. La playlist spécifique pour la qualité a la même adresse de base que la playlist globale, en gros ils rajoute juste la qualité après la date : 72780286-20121119-840k.m3u8 Par exemple : http://medias2.francetv.fr/catchup-mobi … -840k.m3u8

Dans mon cas je sélectionne toujours la playlist ayant la plus haute bande-passante, sans utiliser de REGEX comme c'était avant sur le master.m3u. Ce qui est bien c'est que si le master.m3u a la même syntaxe que les m3u mobile alors on peut simplifier le code en supprimant la condition permettant l'expression régulière pour trouver la meilleure qualité pour ftvod, mon code utilise la playlist globale et lit chaque sous playlist et les options associés pour determiner celle qui a la meilleure qualité.

Finalement l'application récupère les fragments et les lis directement. Les fragments sont placés dans un sous dossier portant le nom de la playlist et sont nommé comme les playlist en ajoutant le numéro du fragment à la fin : 72780286-20121119-840k/72780286-20121119-0.ts Petit exemple : http://medias2.francetv.fr/catchup-mobi … 21119-0.ts

De mon côté je télécharge les fragments et je met tout dans le même fichier et à la fin je lance ffmpeg pour convertir en mkv pour que ce soit lisible : là j'ai rien inventé hein ^^ J'ai juste repris le code déjà existant dans pluzzdl.

Voilà, j'espère que c'était clair ^^

La seule hypothèse que j'utilise c'est qu'on peut trouver le nom de la playlist (via une regex uniquement) dans le getInfosOeuvres.php ... ce qui est toujours le cas normalement. Tout les reste fonctionne comme l'application pluzz du coups même si ils font des (petits) changements ça devrait pas tout casser.

#24 Re : -1 »  TVDownloader: télécharger les médias du net ! » Le 23/11/2012, à 21:05

magestik
Réponses : 2858
spixunl a écrit :

Deux choses :
- quel est l'interet de l'appel a ffmpeg ? A premiere vue le .ts se lit tres bien avec mplayer non ?
- il faudrait tester le retour de ffmpeg justement, le .ts a bien ete recupere pour moi, mais quelque chose a du foirer avec ffmpeg et le .ts a ete supprime comme si de rien n'etait...
Je regarde si c'est un pb uniquement pour ffmpeg chez moi ou pas.
Par contre faire un os.remove si le os.system n'a pas marche c'est un peu rude je pense.

EDIT: oui tout betement je pensais avoir ffmpeg d'installe mais non ... donc pour moi le DL n'aurait jamais "fonctionne" tel quel

J'ai pas trop touché à ça. C'était déjà fait donc j'ai pas trop touché.

Et l'appel à ffmpeg (je crois qu'ils en parlaient vers la page 84) permet de faire un vrai mkv lisible correctement. En entré il prend un fichier dans lequel on a mis tout les fragments bout à bout (donc psa trop lisible) et en sortir on a un beau MKV qui fonctionne sans aucun problème. Mais c'est pas un ré-encodage ou quoi que ce soit, ça dure 1 seconde au maximum ^^