IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Scripts/Batch Discussion :

Comment récupérer la durée d'une vidéo ou d'une musique ?


Sujet :

Scripts/Batch

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Etudiant
    Inscrit en
    Mars 2018
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Etudiant

    Informations forums :
    Inscription : Mars 2018
    Messages : 7
    Points : 6
    Points
    6
    Par défaut Comment récupérer la durée d'une vidéo ou d'une musique ?
    Bonjour,

    Je suis en train de créer un batch afin qu'il me choisisse au hasard un film se trouvant sur mon ordinateur dans un dossier précis: "E:\Videos\Films"
    Pour l'instant, j'ai réussi à récupérer tous les noms des fichiers et à tirer au hasard l'un des films. Cependant, il y a des soirs, je n'ai pas 2h devant moi et je souhaiterais donc ajouter dans ce batch un paramètre afin d'éliminer tous les films ayant une durée > à un temps donné.

    Par exemple, j'aimerais que ça se présente comme ça:
    Durée du film inférieur à :


    Donc voilà, ma question est de savoir comment récupérer la durée d'une vidéo afin de pouvoir ajouter ce paramètre dans le batch.

    Merci d'avance

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    echo off
    
    Setlocal enabledelayedexpansion 
    
    
    :Menu
    cls
    echo Bienvenue dans l'‚diteur de films, voici les options propos‚es:
    echo 1 - Lister les films
    echo 2 - Al‚atoire
    echo 3 - Exit 
    
    
    set /p choix="Que souhaites-tu faire ? "
    if %choix%==1 goto :movies_list
    if %choix%==2 goto :random
    if %choix%==3 goto :end
    
    
    :movies_list
    cls
    REM dir "E:\Videos\Films\"*.mkv /B
    for /R E:\Videos\Films %%F in (*.mkv) do (
    echo %%~nF
    )
    pause
    goto :end
    
    :random
    cls
    set nbfilms=0
    for /R E:\Videos\Films %%a in (*.mkv) do (
    set /a nbfilms+=1
    )
    set /a line=%RANDOM% %% %nbfilms%
    
    :random_2
    set filmsnb=0
    for /R E:\Videos\Films %%f in (*.mkv) do (
    set randomfilm=%%~nf
    set /a filmsnb+=1
    if !filmsnb! == %line% (goto :finish_random)
    )
    
    :finish_random
    cls
    echo !randomfilm!
    pause
    
    
    :end 
    cls
    echo C'est la fin du menu
    pause > nul

  2. #2
    Expert éminent
    Avatar de hackoofr
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2009
    Messages
    3 839
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Juin 2009
    Messages : 3 839
    Points : 9 222
    Points
    9 222
    Par défaut

    Une piste il faut utiliser un vbscript avec le batch, donc tu dois faire un code hybrid batch et vbscript pour obtenir ce que tu veux comme durée de la vidéo
    un exemple en Vbscript à tester chez vous
    Code VB : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    MediaFile = "csharp lesson 1.MP4"
    Const LENGTH = 27 ' Windows Vista+
    'Const LENGTH = 21 ' Windows XP
    Dim oShell  : Set oShell  = CreateObject("Shell.Application")
    Dim oFolder : Set oFolder = oShell.Namespace("C:\Users\Hackoo\Downloads\Video\")
    Dim oFile   : Set oFile   = oFolder.ParseName(MediaFile)
    Dim strLength : strLength = oFolder.GetDetailsOf(oFile,LENGTH)
    WScript.Echo MediaFile & vbCrlf & "Duration = " & strLength

  3. #3
    Expert éminent
    Avatar de hackoofr
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2009
    Messages
    3 839
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Juin 2009
    Messages : 3 839
    Points : 9 222
    Points
    9 222
    Par défaut

    Testez ce code hybrid en batch et vbscript :
    Code Batch : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    @echo off
    Title Get Duration of Media Files (mp3,mp4,mkv,mpg,avi etc...) by Hackoo 2018
    Set "VBSFile=%Temp%\%~n0.vbs" 
    Set "Ext=mkv"
    Set "Folder=C:\Users\Hackoo\Downloads\Video\"
    Setlocal enabledelayedexpansion
    for /R "%Folder%" %%F in (*.%Ext%) do (
        Set "FileName=%%~nxF" 
        Call :GetDuration "!FileName!"
        echo "!FileName!" =====^> Duration = !Duration!
    )
    pause>nul & Exit
    ::******************************************************************************
    :GetDuration <FileName> <Duration>
    (
        echo MediaFile = "%~1"
        echo Const LENGTH = 27 ' Windows Vista+
        echo 'Const LENGTH = 21 ' Windows XP
        echo Dim oShell  : Set oShell  = CreateObject^("Shell.Application"^)
        echo Dim oFolder : Set oFolder = oShell.Namespace^("%Folder%"^)
        echo Dim oFile   : Set oFile   = oFolder.ParseName^(MediaFile^)
        echo Dim strLength : strLength = oFolder.GetDetailsOf^(oFile,LENGTH^)
        echo wscript.stdout.Write strLength
    )>"%VBSFile%"
    For /f "delims=" %%a in ('Cscript //nologo "%VBSFile%"') do (
        Set "Duration=%%a"
    )
    Exit /b
    ::******************************************************************************

  4. #4
    Membre expert
    Avatar de sachadee
    Homme Profil pro
    AMI DU BAT
    Inscrit en
    Janvier 2013
    Messages
    1 478
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Brésil

    Informations professionnelles :
    Activité : AMI DU BAT
    Secteur : Distribution

    Informations forums :
    Inscription : Janvier 2013
    Messages : 1 478
    Points : 3 768
    Points
    3 768
    Par défaut
    ::GetMediaInfo.bat
    ::By SachaDee - 2016
    ::Use and abuse it !!@!

    ::Usage
    ::GetMediaInfo.bat "Folder" "File" "Reference Value of the Info to GET"

    ::Output
    ::Media Info

    ::Example de valeur possible :

    :: 27 = Duree du media (MP4/MP3)
    :: 28 = Bits Rate en Kbs/s (MP4/MP3)
    :: 31 = Dimension d'une image

    Listes des valeurs de References possible à la fin de ce topic.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    ::GetMediaInfo.bat
    ::By SachaDee - 2016
    ::Use and abuse it !!@!
     
    ::Usage
    ::GetMediaInfo.bat "Repertoire" "File" "Value of the Info to GET"
    
    ::Possible Value Example :
    
    :: 27 = Media Duration for video or music files
    :: 28 = Bits Rate in Kbs/s
    :: 31 = Dimensions of an image
    
    
    ::Output
    ::Information du media
    @echo off
     
      If not exist "#.vbs" call:construct
      For /f "delims=" %%a in ('cscript //nologo #.vbs "%~1" "%~2" "%~3"') do set $MediaInfo=%%a
     
    echo %$MediaInfo%
    exit/b
    
    :construct
    (echo.dim objShell&echo.dim objFolder&echo.dim objFolderItem&echo.set objShell = CreateObject("shell.application"^)&echo.set objFolder = objShell.NameSpace(wscript.arguments(0^)^)&echo.set objFolderItem = objFolder.ParseName(wscript.arguments(1^)^)&echo.dim objInfo&echo.objInfo = objFolder.GetDetailsOf(objFolderItem, wscript.arguments(2^)^)&echo.wscript.echo objinfo)>#.vbs
    Liste des Information disponible avec la valeur correspondante :

    Name - 0
    Size - 1
    Item type - 2
    Date modified - 3
    Date created - 4
    Date accessed - 5
    Attributes - 6
    Offline status - 7
    Offline availability - 8
    Perceived type - 9
    Owner - 10
    Kind - 11
    Date taken - 12
    Contributing artists - 13
    Album - 14
    Year - 15
    Genre - 16
    Conductors - 17
    Tags - 18
    Rating - 19
    Authors - 20
    Title - 21
    Subject - 22
    Categories - 23
    Comments - 24
    Copyright - 25
    # - 26
    Length - 27
    Bit rate - 28
    Protected - 29
    Camera model - 30
    Dimensions - 31
    Camera maker - 32
    Company - 33
    File description - 34
    Program name - 35
    Duration - 36
    Is online - 37
    Is recurring - 38
    Location - 39
    Optional attendee addresses - 40
    Optional attendees - 41
    Organizer address - 42
    Organizer name - 43
    Reminder time - 44
    Required attendee addresses - 45
    Required attendees - 46
    Resources - 47
    Meeting status - 48
    Free/busy status - 49
    Total size - 50
    Account name - 51
    Task status - 52
    Computer - 53
    Anniversary - 54
    Assistant's name - 55
    Assistant's phone - 56
    Birthday - 57
    Business address - 58
    Business city - 59
    Business P.O. box - 60
    Business postal code - 61
    Business state or province - 62
    Business street - 63
    Business fax - 64
    Business home page - 65
    Business phone - 66
    Callback number - 67
    Car phone - 68
    Children - 69
    Company main phone - 70
    Department - 71
    E-mail address - 72
    E-mail2 - 73
    E-mail3 - 74
    E-mail list - 75
    E-mail display name - 76
    File as - 77
    First name - 78
    Full name - 79
    Gender - 80
    Given name - 81
    Hobbies - 82
    Home address - 83
    Home city - 84
    Home country/region - 85
    Home P.O. box - 86
    Home postal code - 87
    Home state or province - 88
    Home street - 89
    Home fax - 90
    Home phone - 91
    IM addresses - 92
    Initials - 93
    Job title - 94
    Label - 95
    Last name - 96
    Mailing address - 97
    Middle name - 98
    Cell phone - 99
    Cell phone - 100
    Nickname - 101
    Office location - 102
    Other address - 103
    Other city - 104
    Other country/region - 105
    Other P.O. box - 106
    Other postal code - 107
    Other state or province - 108
    Other street - 109
    Pager - 110
    Personal title - 111
    City - 112
    Country/region - 113
    P.O. box - 114
    Postal code - 115
    State or province - 116
    Street - 117
    Primary e-mail - 118
    Primary phone - 119
    Profession - 120
    Spouse/Partner - 121
    Suffix - 122
    TTY/TTD phone - 123
    Telex - 124
    Webpage - 125
    Content status - 126
    Content type - 127
    Date acquired - 128
    Date archived - 129
    Date completed - 130
    Device category - 131
    Connected - 132
    Discovery method - 133
    Friendly name - 134
    Local computer - 135
    Manufacturer - 136
    Model - 137
    Paired - 138
    Classification - 139
    Status - 140
    Client ID - 141
    Contributors - 142
    Content created - 143
    Last printed - 144
    Date last saved - 145
    Division - 146
    Document ID - 147
    Pages - 148
    Slides - 149
    Total editing time - 150
    Word count - 151
    Due date - 152
    End date - 153
    File count - 154
    Filename - 155
    File version - 156
    Flag color - 157
    Flag status - 158
    Space free - 159
    Bit depth - 160
    Horizontal resolution - 161
    Width - 162
    Vertical resolution - 163
    Height - 164
    Importance - 165
    Is attachment - 166
    Is deleted - 167
    Encryption status - 168
    Has flag - 169
    Is completed - 170
    Incomplete - 171
    Read status - 172
    Shared - 173
    Creators - 174
    Date - 175
    Folder name - 176
    Folder path - 177
    Folder - 178
    Participants - 179
    Path - 180
    By location - 181
    Type - 182
    Contact names - 183
    Entry type - 184
    Language - 185
    Date visited - 186
    Description - 187
    Link status - 188
    Link target - 189
    URL - 190
    Media created - 191
    Date released - 192
    Encoded by - 193
    Producers - 194
    Publisher - 195
    Subtitle - 196
    User web URL - 197
    Writers - 198
    Attachments - 199
    Bcc addresses - 200
    Bcc - 201
    Cc addresses - 202
    Cc - 203
    Conversation ID - 204
    Date received - 205
    Date sent - 206
    From addresses - 207
    From - 208
    Has attachments - 209
    Sender address - 210
    Sender name - 211
    Store - 212
    To addresses - 213
    To do title - 214
    To - 215
    Mileage - 216
    Album artist - 217
    Album ID - 218
    Beats-per-minute - 219
    Composers - 220
    Initial key - 221
    Part of a compilation - 222
    Mood - 223
    Part of set - 224
    Period - 225
    Color - 226
    Parental rating - 227
    Parental rating reason - 228
    Space used - 229
    EXIF version - 230
    Event - 231
    Exposure bias - 232
    Exposure program - 233
    Exposure time - 234
    F-stop - 235
    Flash mode - 236
    Focal length - 237
    35mm focal length - 238
    ISO speed - 239
    Lens maker - 240
    Lens model - 241
    Light source - 242
    Max aperture - 243
    Metering mode - 244
    Orientation - 245
    People - 246
    Program mode - 247
    Saturation - 248
    Subject distance - 249
    White balance - 250
    Priority - 251
    Project - 252
    Channel number - 253
    Episode name - 254
    Closed captioning - 255
    Rerun - 256
    SAP - 257
    Broadcast date - 258
    Program description - 259
    Recording time - 260
    Station call sign - 261
    Station name - 262
    Summary - 263
    Snippets - 264
    Auto summary - 265
    Search ranking - 266
    Sensitivity - 267
    Shared with - 268
    Sharing status - 269
    Product name - 270
    Product version - 271
    Support link - 272
    Source - 273
    Start date - 274
    Billing information - 275
    Complete - 276
    Task owner - 277
    Total file size - 278
    Legal trademarks - 279
    Video compression - 280
    Directors - 281
    Data rate - 282
    Frame height - 283
    Frame rate - 284
    Frame width - 285
    Total bitrate - 286
    ________________________________
    Un p'tit coup de pouce ça fait toujours plaisir, pensez-y !
    ________________________________

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Etudiant
    Inscrit en
    Mars 2018
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Etudiant

    Informations forums :
    Inscription : Mars 2018
    Messages : 7
    Points : 6
    Points
    6
    Par défaut
    Bonjour à vous deux,

    Je suis désolé du retard de ma réponse mais j'avais pas mal de travail.
    Le code donné par hackoofr a permis de répondre à ma question et de résoudre mon problème, merci.
    Sinon, le code de sachadee ne fonctionne pas, il indique que "echo dim n'est pas reconnu en tant que commande interne..."

    Serait-il cependant possible d'avoir un peu plus d'informations sur cette partie du code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    :GetDuration <FileName> <Duration>
    (
        echo MediaFile = "%~1"
        echo Const LENGTH = 27 ' Windows Vista+
        echo 'Const LENGTH = 21 ' Windows XP
        echo Dim oShell  : Set oShell  = CreateObject^("Shell.Application"^)
        echo Dim oFolder : Set oFolder = oShell.Namespace^("%Folder%"^)
        echo Dim oFile   : Set oFile   = oFolder.ParseName^(MediaFile^)
        echo Dim strLength : strLength = oFolder.GetDetailsOf^(oFile,LENGTH^)
        echo wscript.stdout.Write strLength
    )>"%VBSFile%"
    For /f "delims=" %%a in ('Cscript //nologo "%VBSFile%"') do (
        Set "Duration=%%a"
    )

    Et si j'ai bien compris, la fonction CALL permet d’appeler un programme externe tel qu'un .vbs ou .bat sans avoir besoin qu'une fenêtre s'ouvre, est-ce cela ?

    Merci à vous deux,

    Bonne journée

Discussions similaires

  1. Saisir une image à partir d'une photo ou d'une vidéo
    Par lohengrin56 dans le forum Flash/Flex
    Réponses: 0
    Dernier message: 07/07/2009, 16h17
  2. Récupérer une petite partie d'une vidéo
    Par °°° Zen-Spirit °°° dans le forum Flash
    Réponses: 13
    Dernier message: 07/10/2006, 18h35
  3. Réponses: 4
    Dernier message: 13/09/2006, 16h02
  4. Réponses: 1
    Dernier message: 31/07/2006, 13h54
  5. copie d'une table Y d'une base A vers une table X d'une base
    Par moneyboss dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 30/08/2005, 21h24

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo