Skip to content

Instantly share code, notes, and snippets.

@ProjectSoft-STUDIONIONS
Last active June 7, 2020 06:42
Show Gist options
  • Save ProjectSoft-STUDIONIONS/8236355ae8972617baf213d819ad1717 to your computer and use it in GitHub Desktop.
Save ProjectSoft-STUDIONIONS/8236355ae8972617baf213d819ad1717 to your computer and use it in GitHub Desktop.
Конвертер видео в директории для воспроизведения с USB на TV с помощью ffmpeg
' Файл должен быть сохранён в кодировке 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