Задачи для ffmpeg и медиафайлов активного каталога

Обсуждение вопросов автоматизации Total Commander с помощью сторонних программ и скриптовых технологий.

Модераторы: d-view, Моторокер, Avada, CaptainFlint, Nik

Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

[cut="Skif_off"]1. Чего тут спорить? Это мой взгляд на сборки.
3. А кроме вопроса там ничего нет? :wink: И каким ещё может быть мотив лезть в тему, к которой у самого нет интереса? (рит.)[/cut]
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Skif_off
Сообщения: 1252
Зарегистрирован: Ср ноя 28, 2012 13:44

Сообщение Skif_off »

[cut="Flasher"]1. Помимо твоего взгляда есть другие, а сборки - были, есть и будут. Ты ведь не для себя сделал этот скрипт? :)
3. Причину "влезазания" пояснил. Раз не добавил кнопку у себя, то нельзя?[/cut]
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

[cut="Skif_off"]1. Сделал для того, кого устроило. Если бы не было задано условие или делился своим, то в исходном виде путь бы присутствовал.
3. Не нужно. Просто бессмысленно. Тебя это не должно вообще трогать. Это не справка и не TCKB.[/cut]
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Keeper
Сообщения: 8
Зарегистрирован: Пт окт 02, 2015 13:57

Сообщение Keeper »

Flasher, привет еще раз, подскажи как совсем не закрывать окно. Посмотреть на что ругается нужно.
Обновил ffmpeg (Latest Zeranoe FFmpeg Build Version: 7d17d31 (2016-09-22)) - окошко молниеносно откр\закр без результата.
Руками если ...-f concat -i myfile... сделать, то всё отлично...
PS: Обновил потому что заметил что после конкатенации framerate меняется на несколько сотых (например было, 30000 становится 29ххх, где ххх произвольное число https://yadi.sk/i/E6MK4nfkvaQLF), думал новая версия поможет не трогать fps но походу это так и задумано, ответа этому в гугле даже не нашел и вообще это не по теме форума :P .

Добавлено спустя 16 минут:

Flasher
А еще я бы хотел попросить у тебя помощи в создании, если не трудно, кнопочки для резки видео файла.

Код: Выделить всё

ffmpeg -ss [start] -i in.mp4 -t [duration] -c copy out.mp4
Here, the options mean the following:
    -ss specifies the start time, e.g. 00:01:23.000 or 83 (in seconds)
    -t specifies the duration of the clip (same format).
    Recent ffmpeg also has a flag to supply the end time with -to.
    -c copy copies the first video, audio, and subtitle bitstream from the input to the output file without re-encoding them. This won't harm the quality and make the command run within seconds.
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

Keeper
В 3-й строке снизу Prog меняем на "cmd /k " & Prog .

В отношении кнопки нужна конкретика. Одно дело разбить на равные части, а другое - по длительности, начиная с начала. И вряд ли тут можно одной кнопкой обойтись.
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Keeper
Сообщения: 8
Зарегистрирован: Пт окт 02, 2015 13:57

Сообщение Keeper »

Flasher, вот исходя из команды
ffmpeg -ss [start] -i in.mp4 -t [duration] -c copy out.mp4
Я представляю это так: на выделенном файле нажимается кнопка, запрашивает переменную старт (в секундах) и переменную продолжительность (в секундах), подставляет это всё в команду и готово :-)

Еще интересует вопрос по предыдущему скрипту: что нужно дописать в него чтобы добавить функцию удаления файлов в корзину (не shift+del), которые были объединены?

PS: Разобрался с новой версией ffmpeg'a - у меня он ругался unsafe file name - у меня в именах есть пробелы и другие символы, которые ему стали не по нраву. Нужно дописать в команду -safe 0 и всё будет ок. Источник: https://ffmpeg.org/pipermail/ffmpeg-use ... 31489.html

PPS:
В 3-й строке снизу Prog меняем на "cmd /k " & Prog .
У меня не сработало, просто окошко моргало без результата. вин10... отловил ошибку записав с экрана выполнение, потом покадрово просмотрел :-)
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

Keeper
Разбиение на части и вырезка - это не одно и то же. Для разбиения нужно знать, сколько частей требуется либо размер частей кроме последней.

[cut="Касаемо удаления исходников дописок хватает:"]

Код: Выделить всё

'======================================================================
' Склеить выбранные видеофрагменты в файл с именем последнего фрагмента

' Условие:   путь запуска пустой

' Параметры: %F
'            "<путь целевого каталога>"
'            "<добавка к базовому имени>"
'            <скрывать/показывать/сворачивать консоль: 0/1/2>
'            <удалять исходники после выполнения: 1>   (необязательный)

' Примеры:   %F "%T" _joined 0  |   %F "%P" "" 2 1
'======================= Путь к утилите FFmpeg ========================
Prog = """%COMMANDER_PATH%\Utils\FFmpeg\ffmpeg.exe"""
'======================================================================
With WScript.Arguments
  Title = "  Объединение видео" : C = .Count : If C = 0 Then WScript.Quit
  If C < 4 Then MsgBox "Укажите 4 параметра!", 4144, Title : WScript.Quit
  List = .Item(0) : T = .Item(1) : PFix = .Item(2) : Mode = .Item(3)
  If C = 5 Then Del = .Item(4)
End With : Dim WSH : Set WSH = CreateObject("WScript.Shell")
If Del = 1 Then Set Dict = CreateObject("Scripting.Dictionary")
With CreateObject("Scripting.FileSystemObject")
  All = .OpenTextFile(List).ReadAll : T = .BuildPath(T, "")
  With New Regexp
    .IgnoreCase = True : .Multiline = True : .Global = True
    .Pattern = "^.*\.(3g[2p]2?|4xm|avi|asf|dat|dvr-ms|fl[iv]|film" &_
    "_cpk|gif|h26[134]|qtm2ts?|m4v|mkv|mo[dv]|mp4|mpe?g|mxf|nuv|"  &_
    "og[gm]|pva|rm|roq|swf|ts|tp|t[ox]d|vcd|vivo|vob|webm|wmv)(?!\\)$"
    If Not .Test(All) Then MsgBox "В выбранном списке нет " &_
    "поддерживаемых файлов!", 4144, Space(22) & Title : WScript.Quit
    With .Execute(All)
    If .Count = 1 Then WScript.Quit
    For i = 0 To .Count - 1
      If Del = 1 Then Dict.Add .Item(i).Value, ""
      S = S & "file '" & .Item(i).Value & "'" & VbCrLf
    Next : F = .Item(i - 1).Value End With
  End With
  With .OpenTextFile(List, 2) : .Write Left(S, Len(S) - 2) : .Close
  End With : If WSH.CurrentDirectory & "" = T Then P = "L" Else P = "R"
  BN = .GetBaseName(F) & PFix : Ext = "." & .GetExtensionName(F)
  i = 0 : F = BN & Ext
  While .FileExists(T & F) Or .FolderExists(T & F)
    i = i + 1 : F = BN & " (" & i & ")" & Ext
  Wend : F = T & F
  WSH.Run Prog & " -safe 0 -f concat -i " & List & " -c copy """ & F & """", Mode, True
  If .FileExists(F) Then
    If Del = 1 Then
      Set RBin = CreateObject("Shell.Application").Namespace(&Ha)
      CD = WSH.CurrentDirectory & ""
      For Each Key in Dict.Keys : RBin.MoveHere(CD & Key) : Next
    End If: WSH.Exec "%COMMANDER_EXE% /S /O /A /" & P & "=""" & F & """ /P=" & P
  End If
End With
[/cut]Не тестировал.
Keeper писал(а):у меня в именах есть пробелы и другие символы, которые ему стали не по нраву.
Вряд ли пробелы, там про них и не сказано.
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
newsky
Сообщения: 101
Зарегистрирован: Пт мар 19, 2010 14:54

Сообщение newsky »

Есть простой батничек для перепаковки MOV в mp4 и перекодирования звука:

Код: Выделить всё

::::::::::::::::::::::::::::::::::::::::::::::::
::BEGIN
Set ffexepath=c:\Windows\ffmpeg\bin
for %%a in (*.mov) do (
ffmpeg.exe -i "%%~a" -vcodec copy -acodec aac -ab 192k "%%~na.mp4" 2>"%%~na.log"
)
::END
::::::::::::::::::::::::::::::::::::::::::::::::
Есть кнопочка:

Код: Выделить всё

TOTALCMD#BAR#DATA
"%COMMANDER_PATH%\Soft\bat\MOV2MP4 convert.bat"

%COMMANDER_PATH%\icons\Imtoo-Video-Converter-ultimate-Free-Download.ico
Перепаковать MOV в MP4


-1
1. Как нужно изменить батник, что-бы задать в нём путь к ffmpeg если ffmpeg находится по адресу: %COMMANDER_PATH%\soft\ffmpeg\bin
2. Что нужно добавить к кнопке, что-бы бат обрабатывал только выделенные файлы, а не все в папке, как сейчас это происходит.

Может для этих задач в самом бат нужно что-то изменить? Может и без батника можно обойтись, и лучше использовать скрипт для ТС?
addhaloka
Сообщения: 169
Зарегистрирован: Вт ноя 09, 2010 16:09

Сообщение addhaloka »

newsky писал(а):Может и без батника можно обойтись, и лучше использовать скрипт для ТС?
Можно попробовать как-то так:

Код: Выделить всё

TOTALCMD#BAR#DATA
%ComSpec% /c for /f "delims=" %a in
('type %WF') do "%%COMMANDER_PATH%%\Bin\FFmpeg\bin\ffmpeg.exe" -i "%%~a" -vcodec copy -acodec aac -ab 192k "%%~na.mp4" 2>"%%~na.log"
%COMMANDER_PATH%\Icons\etcbar.dll,1207
Конвертировать выделенные видеофайлы в .mp4

1
-1
newsky
Сообщения: 101
Зарегистрирован: Пт мар 19, 2010 14:54

Сообщение newsky »

addhaloka, Большое Вам спасибо! То, что нужно и значительно удобней!
Ответить