Code:Powershell-script video conversion-020.ps1

Aller à la navigation Aller à la recherche
Clear-Host
Set-Location C:\Support\ffmpeg

# Attention. Pour les noms de fichiers qui contiennent des espaces, le script de fonctionne pas.
# en solution rapide, prévoir de renommer le fichier avant traitement.
$listeFichier = Get-ChildItem *.mp4
$compteur = 0

ForEach ($fichier in $listeFichier) {
  $tl          = $listeFichier.length
  $compteur    = $compteur + 1
  $tailleListe = $listeFichier.Length
  
  # récupération des dates des fichiers
  $dateCreation = $fichier.CreationTime
  $dateModif    = $fichier.LastWriteTime
  $dateAcces    = $fichier.LastAccessTime
  $taille       = $fichier.Length/1024

  # renommage des fichiers
  $fichierNom    = $fichier.BaseName
  $fichierExt    = $fichier.Extension
  $fichierAncien = $fichier.BaseName + "-vieux" + $fichier.Extension
  Rename-Item -Path $fichier -NewName $fichierAncien
  $fichierNouveau = $fichier

  # arguments pour le traitement vidéo
  $arg = "-i " + $fichierAncien + " -r 25 -b:v 2048k -b:a 96k -vf scale=1280:720 " + $fichierNouveau
  # $arg="-i " + $fichierAncien + " -r 25 -b:v 2048k -b:a 96k -vf scale=720:1280 " + $fichierNouveau

   # l'option -Wait permet d'attendre la fin d'un traitement avant de lancer le suivant
 Try {
    $debutTraitement = Get-Date # Début de traitement
    Write-Host $compteur "/" $tailleliste " : " $fichier.Name $taille.ToString("#") " | En cours"
    Start-Process -Wait ffmpeg.exe -ArgumentList $arg 
    $finTraitement = Get-Date # Fin de traitement
    $duree         = $fintraitement - $debuttraitement
    Write-Host "     Terminé. Durée de traitement :" $duree.TotalSeconds "s"
    Start-Sleep -s 3

    # modification des dates des nouveaux fichiers
    $(Get-Item $fichier).CreationTime   = $($datemodif)
    $(Get-Item $fichier).LastWriteTime  = $($datemodif)
    $(Get-Item $fichier).LastAccessTime = $($datemodif)
    }
 Catch {
    Write-Host $compteur "/" $tailleliste " : " $fichier.Name $taille.ToString("#") " | Erreur fichier " $fichierAncien
    }
 }