
T'as dû confondre total du mpls avec le total de chaque m2ts, ce que je cherche à faire

Avec ce mpls on voit mieux le hic

- 00000.rar
- 00000.rar
- (183 Octets) Téléchargé 159 fois
► Afficher le texte
Code : Tout sélectionner
#cs ----------------------------------------------------------------------------
AutoIt Version: 3.3.6.1
From idea of: Web Free Software
Author: mikell
Script Function:
_Include_MPLSs_+_Extract_Chapters_List.au3
#ce ----------------------------------------------------------------------------
; analyse de fichier playlist *.mpls
#Include <Array.au3>
#include <File.au3>
_Get_All_MPLSs()
; ==> _Get_All_MPLSs() ===============================================
Func _Get_All_MPLSs()
;$SourcePath = "F:\Temp Recode\ssifSource5 GUI\Titanic\BDMV Disk 2\PLAYLIST\"
$SourcePath = ".\"
Local $FileList = _FileListToArray($SourcePath,'*.mpls', 1)
$MPLSsCount = UBound($FileList)-1
_ArraySort($FileList)
For $i = 0 to UBound($FileList)-2
Global $mfile = $SourcePath&$FileList[$i]
_Extract_Chapters_List()
Next
If @error = 1 Or @error = 4 Then
MsgBox(0, "", "No Folders or MPLS Files Found.")
Else
;MsgBox(0, "", "Done.")
EndIf
EndFunc ; ==> _Get_All_MPLSs()
; <== _Get_All_MPLSs() ===================================================
; ==> _Extract_Chapters_List() ===========================================
Func _Extract_Chapters_List()
$info = ""
$ch = ""
$m2 = ""
$ps = ""
Global $info, $n = 82, $ch, $chap[1][2], $m2ts[1][3] , $m2, $ps, $dureeM2TS
$size = FileGetSize($mfile)
$mpls = FileOpen($mfile, 16)
Global $caract = StringRegExp(FileRead($mpls), '[[:xdigit:]]{2}', 3)
FileClose($mpls)
;_arraydisplay($caract, "fichier")
For $i = 40 to $size-20
If _M2ts($i)<>0 Then
$m2 += 1
ReDim $m2ts[$m2+1][3]
$res = _M2ts($i)
$m2ts[$m2][0] = $res[0][0]
$m2ts[$m2][1] = $res[0][1]
$m2ts[$m2][2] = $res[0][2]
EndIf
Next
$m2ts[0][0] = $m2
;_arraydisplay($m2ts, "durées")
$in = _GetZeBin($n)
;$info &= "point d'entrée" & @TAB & _Display($in) & @crlf
$chap[0][1] = -1
For $i = $n+8 to $size-4
If _Chapitres($i)<>0 Then
$ch += 1
ReDim $chap[$ch+1][2]
$pos = $i-4
$res1 = _Chapitres($i)
$chap[$ch][0] = $res1[0][0]
$chap[$ch][1] = $res1[0][1]
If $chap[$ch][1]<>$chap[$ch-1][1] Then
$ps += $m2ts[$chap[$ch][1]+1][1]
$start = _Display($in)
$end = _Display($ps+$in)
$dureeM2TS = _Display(($ps+$in)-$in)
$m2tsFile = $m2ts[$chap[$ch][1]+1][0]
$info &= $m2tsFile & @CRLF
;$info &= "point d'entrée" & @TAB & $start & @CRLF
;$info &= "point de sortie " & @TAB & $end & @CRLF & @CRLF
;$info &= "Durée totale" & @TAB & $duree & @CRLF & @CRLF
Else
$m2tsFile = ""
EndIf
$info &= @TAB & "Chapitre " & StringFormat("%02i", $ch) & @TAB & _Display($chap[$ch][0]-$in) & @CRLF
If $m2tsFile Then
$info &= @TAB & $m2tsFile & "=" & @TAB & $dureeM2TS & @CRLF
EndIf
EndIf
Next
;_arraydisplay($chap, "chapitres")
Msgbox(0, $mfile, $info)
EndFunc
;================================================
Func _M2ts($pos)
Local $array[1][3], $char[20]
For $i = 0 to 19
$char[$i] = "0x" & $caract[$pos+$i]
Next
Local $ext = StringFormat("%.2X%.2X%.2X%.2X", $char[5], $char[6], $char[7], $char[8])
If $ext = "4D325453" Then
$nbr = Chr($char[0]) & Chr($char[1])& Chr($char[2]) & Chr($char[3]) & Chr($char[4])
$in1 = "0x" & StringFormat("%.2X%.2X%.2X%.2X", $char[12], $char[13], $char[14], $char[15])
$out1 = "0x" & StringFormat("%.2X%.2X%.2X%.2X", $char[16], $char[17], $char[18], $char[19])
$dur1 = $out1-$in1
$array[0][0] = $nbr & ".m2ts" ; m2ts 2D & 3D
$array[0][1] = $dur1
$array[0][2] = _Display($dur1)
Return $array
Else
Return 0
EndIf
EndFunc
Func _GetZeBin($pos)
$bin = "0x" & $caract[$pos] & $caract[$pos+1]& $caract[$pos+2] & $caract[$pos+3]
Return $bin
EndFunc
Func _Chapitres($pos)
Local $char[12], $add, $array[1][2]
For $i = 0 to 11
$char[$i] = "0x" & $caract[$pos-8+$i]
Next
Local $postref = StringFormat("%.2X%.2X%.2X%.2X", $char[8], $char[9], $char[10], $char[11])
If $postref = "FFFF0000" Then
Local $backref = StringFormat("%.2X%.2X%.2X%.2X", $char[0], $char[1], $char[2], $char[3])
Local $ref = "0x" & StringFormat("%.2X%.2X%.2X%.2X", $char[4], $char[5], $char[6], $char[7])
For $i = 0 to $m2ts[0][0]
If $backref = "0001000" & $i Then
For $j = 1 to $i
$add += $m2ts[$j][1]
Next
$array[0][0] = $ref + $add
$array[0][1] = $i
Return $array
EndIf
Next
Else
Return 0
EndIf
EndFunc
Func _Display($pts)
$sec = $pts/45000
Return StringFormat("%02.0f:%02.0f:%06.3f", Floor($sec/3600), Floor(Mod($sec, 3600)/60), Mod($sec, 60) )
EndFunc
