Lecteur vidéo qui affiche des millisecondes

J'ai besoin de lire des fichiers MP4 sur mon win7 qui, en dehors des minutes et des secondes, devrait afficher les millisecondes.

J'ai actuellement GOM, VLC et MPC-HC. (Notez que je souhaite utiliser un lecteur vidéo léger régulier et ne pas avoir à charger le fichier dans un programme de montage vidéo tel que sony vegas, etc.).

Le plus proche que je pourrais obtenir est en utilisant MPC-HC, en ajoutant un fichier srt (subs) fictif pour la vidéo et en activant l'option Subresync (comme indiqué sur https://trac.mpc-hc.org/ticket/3700 ). Cela montre le format désiré de mm:ss.SSS . Mais la création d'un dummy srt (qui doit contenir au moins 1 entrée de sous-titre pour que l'option Subresync soit activée) soit lourde.

Existe-t-il une autre solution?

Vous l'avez presque eu. Media Player Classic (MPC-HC), cette option est déjà intégrée. Cliquez avec le bouton droit de la souris sur l'horodatage en bas à droite et choisissez Haute précision

Entrez la description de l'image ici

D'autres joueurs comme VLC, SMPlayer, Mplayer, KMPlayer n'ont pas cette option. Malgré le fait que KMPlayer a littéralement un millier d'options de configuration

Mais le contournement des sous-titres fonctionne avec n'importe quel joueur. Cela a été démontré pour VLC

Voici le code (en python) pour générer le fichier de sous-titres pour la solution de contournement des sous-titres:

 def generateSRTFile(fileName, duration): """ Generate SRT (subtitle) file for micro second display in video fileName: "Movie1.srt" duration: "00:12:54" NOTE: ignored seconds to make the program more simplified """ # get the hours, min, sec from duration time_split = duration.split(':') hours = int(time_split[0]) minutes = int(time_split[1]) seconds = 59 # int(time_split[2]) millisecs = [x*10 for x in range(0,100)] # open a file to write f = open(name=fileName, mode='w', buffering=1) # iterate to print to file blockNo = 1 for h in range(hours+1): for m in range(minutes+1): for s in range(seconds+1): for ms in millisecs: f.write(subtitle(h, m, s, ms, blockNo)) blockNo += 1 # close the file return f.close() def subtitle(h, m, s, ms, bn): """ Returns the subtitle block for the given parametes h: hours, m: minutes, s: seconds, ms: milli seconds, bn: block number """ block = "" block += formatToString(bn) + "\n" time_line = formatToString(h)+":"+formatToString(m)+":"+formatToString(s)+"," block += time_line+formatToString(ms, 3) + " --> " + time_line + \ formatToString(ms+10 if ms!=990 else 999, 3) + "\n" block += "time " + time_line + formatToString(ms ,3) + "\n\n" return block def formatToString(num, length=2): """ Format given number to given length. ie num = 5 and length = 2. Result = "05" """ # number of digits in num digits = len(str(num)) # mathematical equivalent for finding digits #n = num #digits = 0 #if n==0: #digits = 1 #else: #while n: #n = n/10 #digits += 1 # find how much shorter is num than length if digits >= length: strNum = str(num) else: diff = length-digits strNum = "" for i in range(diff): strNum += "0" strNum += str(num) # return return strNum if __name__=="__main__": generateSRTFile(fileName='/home/inblueswithu/Downloads/default.srt', duration="00:05:56")