Total Commander Forum Index Total Commander
Форум поддержки пользователей Total Commander
Сайты: Все о Total Commander | Totalcmd.net | Ghisler.com | RU.TCKB
 
 RulesRules   SearchSearch   FAQFAQ   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

Задачи для ffmpeg и медиафайлов активного каталога
Goto page 1, 2  Next
 
Post new topic   Reply to topic    Total Commander Forum Index -> Автоматизация Total Commander printer-friendly view
View previous topic :: View next topic  
Author Message
Keeper



Joined: 02 Oct 2015
Posts: 8

Post (Separately) Posted: Sun Apr 17, 2016 21:43    Post subject: Задачи для ffmpeg и медиафайлов активного каталога Reply with quote

Привет, подскажите, пожалуйста код кнопки, для объединения выделенных mp4 файлов в новый и присвоения ему имени последнего выбранного.
Строка ffmpeg:
Code:
ffmpeg -f concat -i mylist.txt -c copy output
, где mylist.txt имеет вид:
Code:
file '/path/to/file1'
file '/path/to/file2'
file '/path/to/file3'

Очень важно присваивать имя последнего выбранного файла, согласно сортировке, если это возможно.
PS: mencoder, хоть и имеет синтаксис приемлемый для написания конопки через %S, неподходит для меня ибо имеет проблемы с h264 и AAC, короче не объединяет оно с такими исходными данными как у меня, а ffmpeg оъединяет Very Happy
Wiki ffmpeg: https://trac.ffmpeg.org/wiki/Concatenate
Спасибо.

 !  Avada:
Замечание за оффтоп в теме "Обмен кнопками". Где запрашиваются кнопки, говорилось многократно. Сообщение перенесено.


 !  CaptainFlint:
По запросу Flasher'а обсуждение задач про ffmpeg вынесено в самостоятельную ветку.
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 14229
Location: Москва

Post (Separately) Posted: Sun Apr 17, 2016 22:11    Post subject: Reply with quote

Keeper
Если нужно сразу списком без перебора по отдельности, то через кнопку не очень удобно, т.к. реплейсинг в cmd в чистом виде не предусмотрен. Лучше vbs-ник.
_________________
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.


Last edited by Flasher on Thu Apr 21, 2016 02:00; edited 1 time in total
Back to top
View user's profile Send private message
Keeper



Joined: 02 Oct 2015
Posts: 8

Post (Separately) Posted: Mon Apr 18, 2016 13:18    Post subject: Reply with quote

Flasher
Привет, спасибо за ответ! Если вас не затруднит, то выложите, пожалуйста, ваш VBS скрипт.
Вообще, мне нужна реализация вот такой схемы: https://yadi.sk/i/kpdEzNCZr5nZh
но, так как я не совсем понял про перебор по отдельности и реплейсинг, то я думаю у меня не составит труда, взяв за основу ваш VBS, придать скрипту нужный мне функционал. Smile
Еще раз спасибо.
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 14229
Location: Москва

Post (Separately) Posted: Tue Apr 19, 2016 01:49    Post subject: Reply with quote

Keeper
Code:
'======================================================================
' Склеить выбранные видеофрагменты в файл с именем последнего фрагмента
' Условие: путь запуска пустой
' Параметры: %F "<путь целевого каталога>" "<добавка к базовому имени>"
' Пример:    %F "%T" _joined
'======================= Путь к утилите FFmpeg ========================
Prog = """%COMMANDER_PATH%\Utils\FFmpeg\ffmpeg.exe"""
'======================================================================
With WScript.Arguments
  Title = "   Объединение видео" : C = .Count : If C = 0 Then WScript.Quit
  If C <> 3 Then MsgBox "Укажите 3 параметра!", 4144, Title : WScript.Quit
  List = .Item(0) : T = .Item(1) : PFix = .Item(2)
End With
Dim WSH : Set WSH = CreateObject("WScript.Shell")
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
      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 & " -f concat -i " & List & " -c copy """ & F & """",0, True
  If .FileExists(F) Then WSH.Exec "%COMMANDER_EXE% /S /O /A /" & P & "=""" & F & """ /P=" & P
End With

_________________
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.


Last edited by Flasher on Mon May 09, 2016 00:17; edited 2 times in total
Back to top
View user's profile Send private message
Keeper



Joined: 02 Oct 2015
Posts: 8

Post (Separately) Posted: Wed Apr 20, 2016 11:47    Post subject: Reply with quote

Flasher, большое спасибо вам за скрипт. Очень помогли мне!
Подскажите, если не трудно, последнюю вещь - где ему сказать чтобы окошко cmd'шное открывал в котором виден был бы процесс (что конкретно ffmpeg делает), если это возможно.
Спасибо.
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 14229
Location: Москва

Post (Separately) Posted: Wed Apr 20, 2016 14:32    Post subject: Reply with quote

Keeper
Пож-та. 3 строка снизу, в конце 0 меняем на 1 (с активацией) или на 2 (свёрнутое).
А зачем? Тут после отработки курсор в ТС встаёт на полученный файл. Что ffmpeg делает и так понятно - склеивает. Smile
Также обращу внимание, что случайно выделенные папки или неподдерживаемые файлы в отработку не попадут. Если файл в группе один, то ничего не произойдёт. Если выделены только неподдерживаемые файлы, то скрипт сообщит об этом. При повторных попытках склеить файлы с тем же именем будут создаваться новые с счётчиком.
_________________
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Back to top
View user's profile Send private message
Keeper



Joined: 02 Oct 2015
Posts: 8

Post (Separately) Posted: Wed Apr 20, 2016 18:50    Post subject: Reply with quote

Flasher wrote:
А зачем?
Дело в том, что я пользовался, до этого скрипта, решением от MP4Tools, который крайне ревностно относился к разному FPS и разрешению у файлов, брался их сам перекодировать в итоге выдавая невоспроизводимый файл. Из-за этого я испортил пару файлов и теперь, для спокойствия, хочу следить за выводом в консоли.
Но, как я выяснил, ffmpeg очень спокойно клеит разный битрейт|разрешение, чему очень рад, но всеже поглядывать на вывод будет не лишним, задача ведь еще и в том чтобы не проверять выходящий результат, или не весь, а выборочно.
Незнаю, канонично ли такое положение или нет, но PotPlayer нормально относится с склеенным в ffmpeg'e файлам с разным битрейтом|разрешением, в отличие от результата из mp4joiner'a. Вообще, подозреваю, исходя из изысканий в сети, что выбранная мною связка h264+AAC с вариативным битрейтом - не по стандарту, но уже поздно что-то менять, да и не относится это к теме.

Еще раз спасибо огромное.
Back to top
View user's profile Send private message
Mailk



Joined: 16 Jan 2010
Posts: 184

Post (Separately) Posted: Sun May 08, 2016 17:59    Post subject: Reply with quote

у меня ошибку дает =строка 34 символ 22, не могу найти указанный фаил.
Куда скопировать FFMpeg? Где свой путь прописать в скрипте?
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 14229
Location: Москва

Post (Separately) Posted: Sun May 08, 2016 19:53    Post subject: Reply with quote

Ошибки не будет при стандартной установке в системную папку.
_________________
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Back to top
View user's profile Send private message
Skif_off



Joined: 28 Nov 2012
Posts: 1152

Post (Separately) Posted: Sun May 08, 2016 20:14    Post subject: Reply with quote

Flasher
Почему бы не добавить возможность указать путь, как в других скриптах? Ни разу не ставил FFmpeg, при необходимости использовал версию из MeGUI, про фанатов портативности и говорить нечего...Smile
Back to top
View user's profile Send private message
Dimsok



Joined: 17 Aug 2014
Posts: 651

Post (Separately) Posted: Sun May 08, 2016 20:22    Post subject: Reply with quote

Я тоже не понимаю выражение "ставить ffmpeg". Распаковал куда нужно и пользуйся.
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 14229
Location: Москва

Post (Separately) Posted: Sun May 08, 2016 23:59    Post subject: Reply with quote

Skif_off
Keeper указал строку без пути, что и подразумевало системную привязку. Да и про фанатов малоразмерности не забываем. Ладно, добавил в скрипт.

Dimsok
Распаковка или установка - не суть дела. Хотя что-то мне подсказывать, что кое-чьи "исправленные" c:\Program Files\makedict\makedict.exe и т.п. к распаковке ровным счётом никакого отношения не имеют.

P.S.: А чего только сейчас сбежались? Раньше этот вопрос не мучал?
_________________
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Back to top
View user's profile Send private message
Skif_off



Joined: 28 Nov 2012
Posts: 1152

Post (Separately) Posted: Mon May 09, 2016 12:31    Post subject: Reply with quote

Flasher wrote:
Keeper указал строку без пути, что и подразумевало системную привязку. Да и про фанатов малоразмерности не забываем.

Мне показалось, подразумевало краткость, сестру таланта, но спорить не буду Smile К слову о малоразмерности - UPX сжимает чуть ли не в 2 раза (2.х).

И нашим, и вашим - что-нибудь типа
 Hidden text

(Или .FileExists(Prog) нужно брать в скобки?) У себя в некоторых случаях делаю подобным образом.
Flasher wrote:
А чего только сейчас сбежались? Раньше этот вопрос не мучал?

Не пользовался, но даже мысли не возникало, что для этого скрипта было сделано такое исключение Smile
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 14229
Location: Москва

Post (Separately) Posted: Mon May 09, 2016 15:17    Post subject: Reply with quote

Skif_off wrote:
К слову о малоразмерности - UPX сжимает чуть ли не в 2 раза (2.х).
Всё равно многовато.

Skif_off wrote:
И нашим, и вашим - что-нибудь типа
В этом не вижу смысла. Достаточно "ffmpeg" указать вместо пути.
Skif_off wrote:
Не пользовался
А, просто покритиковать пришёл, по-о-онятно...

_________________
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Back to top
View user's profile Send private message
Skif_off



Joined: 28 Nov 2012
Posts: 1152

Post (Separately) Posted: Tue May 10, 2016 15:42    Post subject: Reply with quote

Flasher
1. Тем не менее - спорно.
2. Ага, просто привычка указывать полный путь, а тут ещё System32/SysWOW64...
3. Спросить, почему в этом скрипте со сторонней утилитой нет возможности задать свой путь сразу после шапки скрипта, как у тебя обычно, - это "покритиковать"? Smile)
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic    Total Commander Forum Index -> Автоматизация Total Commander All times are GMT + 4 Hours
Goto page 1, 2  Next
Page 1 of 2

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2005 phpBB Group