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 } }