Last active
June 7, 2020 06:42
-
-
Save ProjectSoft-STUDIONIONS/8236355ae8972617baf213d819ad1717 to your computer and use it in GitHub Desktop.
Конвертер видео в директории для воспроизведения с USB на TV с помощью ffmpeg
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
' Файл должен быть сохранён в кодировке Windows-1251 (ANSI) | |
' ffmpeg должен быть установлен глобально - https://projectsoft.ru/apps/install-package-ffmpeg/ или https://github.com/ProjectSoft-STUDIONIONS/ffmpegInstaller/ | |
' Строгий режим | |
Option Explicit | |
Const DS = "\" | |
Dim objFSO | |
Dim objFile | |
Dim path | |
Dim tPath | |
Dim ext | |
Dim str | |
Dim WshShell | |
Dim old_dir | |
Dim out_dir | |
Dim obj | |
Dim toExt | |
Dim fileCount | |
Dim convertCount | |
Set WshShell = WScript.CreateObject("Wscript.Shell") | |
Set objFSO = CreateObject("Scripting.FileSystemObject") | |
Set obj = CreateObject("Scripting.Dictionary") | |
Sub createFolder(dir) | |
If Not objFSO.FolderExists(dir) Then | |
objFSO.CreateFolder(dir) | |
End If | |
End Sub | |
Sub deleteFile(file) | |
If objFSO.FileExists(file) Then | |
objFSO.DeleteFile file, True | |
End If | |
End Sub | |
toExt = "avi" | |
path = objFSO.GetParentFolderName(objFSO.GetFile(Wscript.ScriptFullName)) & DS | |
str = "" | |
fileCOunt = 0 | |
convertCount = 0 | |
' extensions video | |
obj.add "avi", "avi" | |
obj.add "m2ts", "m2ts" | |
obj.add "m4p", "m4p" | |
obj.add "m4v", "m4v" | |
obj.add "mkv", "mkv" | |
obj.add "mov", "mov" | |
obj.add "mp2", "mp2" | |
obj.add "mp4", "mp4" | |
obj.add "mpe", "mpe" | |
obj.add "mpeg", "mpeg" | |
obj.add "mpg", "mpg" | |
obj.add "mpv", "mpv" | |
obj.add "mts", "mts" | |
obj.add "webm", "webm" | |
obj.add "wmv", "wmv" | |
If WScript.Arguments.Count = 1 Then | |
tPath = WScript.Arguments.Item(0) & DS | |
If objFSO.FolderExists(tPath) Then | |
path = tPath | |
End If | |
End If | |
old_dir = path & "old" & DS | |
out_dir = path & "out" & DS | |
For Each objFile In objFSO.GetFolder(path).Files | |
ext = LCase(objFSO.GetExtensionName(objFile.Name)) | |
' Если это видео файл и не является выходным форматом | |
If obj.exists(ext) And Not ext = toExt Then | |
' Формируем строку для запуска ffmpeg | |
str = "ffmpeg -i """ & path & objFile.Name & """ """ & out_dir & objFSO.GetBaseName(objFile.Name) & ".avi""" | |
' Если директории для результата нет - создаём | |
createFolder(out_dir) | |
' Если файл результата существует - удалить | |
deleteFile(out_dir & objFSO.GetBaseName(objFile.Name) & ".avi") | |
' Запускаем ffmpeg и ждём завершения процесса | |
WshShell.Run str, 7, True | |
' Если директории для исходных нет - создаём | |
createFolder(old_dir) | |
' Если исходный файл существует - удалить | |
deleteFile(old_dir & objFile.Name) | |
objFile.Move old_dir & objFile.Name | |
fileCount = fileCount + 1 | |
convertCount = convertCount + 1 | |
End If | |
If ext = toExt Then | |
' Если директории для результата нет - создаём | |
createFolder(out_dir) | |
' Если директории для исходных нет - создаём | |
createFolder(old_dir) | |
' Если исходный файл существует - удалить | |
deleteFile(out_dir & objFile.Name) | |
objFile.Copy out_dir & objFile.Name | |
' Если исходный файл существует - удалить | |
deleteFile(old_dir & objFile.Name) | |
objFile.Move old_dir & objFile.Name | |
fileCount = fileCount + 1 | |
End If | |
Next | |
MsgBox "Обработано файлов: " & fileCount & vbCrlf & "Конвертировано файлов: " & convertCount |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment