View previous topic :: View next topic |
Author |
Message |
Keeper
Joined: 02 Oct 2015 Posts: 8
|
(Separately) Posted: Sun Apr 17, 2016 21:43 Post subject: Задачи для ffmpeg и медиафайлов активного каталога |
|
|
Привет, подскажите, пожалуйста код кнопки, для объединения выделенных 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 оъединяет
Wiki ffmpeg: https://trac.ffmpeg.org/wiki/Concatenate
Спасибо.
! | Avada: | Замечание за оффтоп в теме "Обмен кнопками". Где запрашиваются кнопки, говорилось многократно. Сообщение перенесено. |
! | CaptainFlint: | По запросу Flasher'а обсуждение задач про ffmpeg вынесено в самостоятельную ветку. | |
|
Back to top |
|
|
Flasher
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Sun Apr 17, 2016 22:11 Post subject: |
|
|
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 |
|
|
Keeper
Joined: 02 Oct 2015 Posts: 8
|
(Separately) Posted: Mon Apr 18, 2016 13:18 Post subject: |
|
|
Flasher
Привет, спасибо за ответ! Если вас не затруднит, то выложите, пожалуйста, ваш VBS скрипт.
Вообще, мне нужна реализация вот такой схемы: https://yadi.sk/i/kpdEzNCZr5nZh
но, так как я не совсем понял про перебор по отдельности и реплейсинг, то я думаю у меня не составит труда, взяв за основу ваш VBS, придать скрипту нужный мне функционал.
Еще раз спасибо. |
|
Back to top |
|
|
Flasher
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Tue Apr 19, 2016 01:49 Post subject: |
|
|
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 |
|
|
Keeper
Joined: 02 Oct 2015 Posts: 8
|
(Separately) Posted: Wed Apr 20, 2016 11:47 Post subject: |
|
|
Flasher, большое спасибо вам за скрипт. Очень помогли мне!
Подскажите, если не трудно, последнюю вещь - где ему сказать чтобы окошко cmd'шное открывал в котором виден был бы процесс (что конкретно ffmpeg делает), если это возможно.
Спасибо. |
|
Back to top |
|
|
Flasher
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Wed Apr 20, 2016 14:32 Post subject: |
|
|
Keeper
Пож-та. 3 строка снизу, в конце 0 меняем на 1 (с активацией) или на 2 (свёрнутое).
А зачем? Тут после отработки курсор в ТС встаёт на полученный файл. Что ffmpeg делает и так понятно - склеивает.
Также обращу внимание, что случайно выделенные папки или неподдерживаемые файлы в отработку не попадут. Если файл в группе один, то ничего не произойдёт. Если выделены только неподдерживаемые файлы, то скрипт сообщит об этом. При повторных попытках склеить файлы с тем же именем будут создаваться новые с счётчиком. _________________ Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой. |
|
Back to top |
|
|
Keeper
Joined: 02 Oct 2015 Posts: 8
|
(Separately) Posted: Wed Apr 20, 2016 18:50 Post subject: |
|
|
Дело в том, что я пользовался, до этого скрипта, решением от MP4Tools, который крайне ревностно относился к разному FPS и разрешению у файлов, брался их сам перекодировать в итоге выдавая невоспроизводимый файл. Из-за этого я испортил пару файлов и теперь, для спокойствия, хочу следить за выводом в консоли.
Но, как я выяснил, ffmpeg очень спокойно клеит разный битрейт|разрешение, чему очень рад, но всеже поглядывать на вывод будет не лишним, задача ведь еще и в том чтобы не проверять выходящий результат, или не весь, а выборочно.
Незнаю, канонично ли такое положение или нет, но PotPlayer нормально относится с склеенным в ffmpeg'e файлам с разным битрейтом|разрешением, в отличие от результата из mp4joiner'a. Вообще, подозреваю, исходя из изысканий в сети, что выбранная мною связка h264+AAC с вариативным битрейтом - не по стандарту, но уже поздно что-то менять, да и не относится это к теме.
Еще раз спасибо огромное. |
|
Back to top |
|
|
Mailk
Joined: 16 Jan 2010 Posts: 251
|
(Separately) Posted: Sun May 08, 2016 17:59 Post subject: |
|
|
у меня ошибку дает =строка 34 символ 22, не могу найти указанный фаил.
Куда скопировать FFMpeg? Где свой путь прописать в скрипте? |
|
Back to top |
|
|
Flasher
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Sun May 08, 2016 19:53 Post subject: |
|
|
Ошибки не будет при стандартной установке в системную папку. _________________ Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой. |
|
Back to top |
|
|
Skif_off
Joined: 28 Nov 2012 Posts: 1232
|
(Separately) Posted: Sun May 08, 2016 20:14 Post subject: |
|
|
Flasher
Почему бы не добавить возможность указать путь, как в других скриптах? Ни разу не ставил FFmpeg, при необходимости использовал версию из MeGUI, про фанатов портативности и говорить нечего... |
|
Back to top |
|
|
Dimsok
Joined: 17 Aug 2014 Posts: 663
|
(Separately) Posted: Sun May 08, 2016 20:22 Post subject: |
|
|
Я тоже не понимаю выражение "ставить ffmpeg". Распаковал куда нужно и пользуйся. |
|
Back to top |
|
|
Flasher
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Sun May 08, 2016 23:59 Post subject: |
|
|
Skif_off
Keeper указал строку без пути, что и подразумевало системную привязку. Да и про фанатов малоразмерности не забываем. Ладно, добавил в скрипт.
Dimsok
Распаковка или установка - не суть дела. Хотя что-то мне подсказывать, что кое-чьи "исправленные" c:\Program Files\makedict\makedict.exe и т.п. к распаковке ровным счётом никакого отношения не имеют.
P.S.: А чего только сейчас сбежались? Раньше этот вопрос не мучал? _________________ Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой. |
|
Back to top |
|
|
Skif_off
Joined: 28 Nov 2012 Posts: 1232
|
|
Back to top |
|
|
Flasher
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Mon May 09, 2016 15:17 Post subject: |
|
|
Skif_off wrote: | К слову о малоразмерности - UPX сжимает чуть ли не в 2 раза (2.х). | Всё равно многовато.
Skif_off wrote: | И нашим, и вашим - что-нибудь типа | В этом не вижу смысла. Достаточно "ffmpeg" указать вместо пути.
Skif_off wrote: | Не пользовался | А, просто покритиковать пришёл, по-о-онятно... _________________ Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой. |
|
Back to top |
|
|
Skif_off
Joined: 28 Nov 2012 Posts: 1232
|
(Separately) Posted: Tue May 10, 2016 15:42 Post subject: |
|
|
Flasher
1. Тем не менее - спорно.
2. Ага, просто привычка указывать полный путь, а тут ещё System32/SysWOW64...
3. Спросить, почему в этом скрипте со сторонней утилитой нет возможности задать свой путь сразу после шапки скрипта, как у тебя обычно, - это "покритиковать"? ) |
|
Back to top |
|
|
|