<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[Серый форум &mdash; CMD/BAT: Вставка параметров из файла]]></title>
	<link rel="self" href="http://forum.script-coding.com/extern.php?action=feed&amp;tid=10952&amp;type=atom" />
	<updated>2023-03-17T19:44:18Z</updated>
	<generator>PunBB</generator>
	<id>http://forum.script-coding.com/viewtopic.php?id=10952</id>
		<entry>
			<title type="html"><![CDATA[Re: CMD/BAT: Вставка параметров из файла]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=157211#p157211" />
			<content type="html"><![CDATA[<p>Однажды я снимал грозу (молнии) на камеру телефона. Потом видео просматривал, искал и вырезал фрагменты с молниями и собирал эти фрагменты в один конечный файл. Ключевая команда примерно такая:</p><div class="codebox"><pre><code>
dir /b final-?.mp4 | busybox sed &quot;s/^/file /&quot; | ffmpeg.exe -protocol_whitelist file,pipe -f concat -i - -c:v copy -y final-123.mp4
</code></pre></div><p>Что значат параметры и опции команды ffmpeg - не помню, уточняйте сами по документации. По мне, она весьма громадна и крайне неинтуитивна.</p><p>Я использую BusyBox - он дает возможность использовать средства Unix команд. Рекомендую.</p>]]></content>
			<author>
				<name><![CDATA[Rumata]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=24846</uri>
			</author>
			<updated>2023-03-17T19:44:18Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=157211#p157211</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: CMD/BAT: Вставка параметров из файла]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=157200#p157200" />
			<content type="html"><![CDATA[<p>К слову у меня есть рабочий пример для SOX и он кстати очень прост:</p><div class="codebox"><pre><code>
@echo on
setlocal enabledelayedexpansion
REM Склеивание MP3-файлов
sox &quot;D:\_WORK-set\*.mp3&quot; &quot;D:\#PROD\output.mp3&quot;
REM Уменьшение громкости
sox &quot;D:\#PROD\output.mp3&quot; &quot;D:\#PROD\final.mp3&quot; vol -22dB
REM Удаление временного файла
del &quot;D:\#PROD\output.mp3&quot;
echo Готово!
pause
</code></pre></div><p>Но хочется добиться похожего результата по средствам FFMPEG.</p>]]></content>
			<author>
				<name><![CDATA[grisha.puding]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=43055</uri>
			</author>
			<updated>2023-03-17T14:42:46Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=157200#p157200</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: CMD/BAT: Вставка параметров из файла]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=157199#p157199" />
			<content type="html"><![CDATA[<p>Вот кстати пример того что предложил хваленый ChatGPT как я уж не извращался с объяснением того что необходимо но даже разбивая ему задачу на очень маенкие этапы или как в ТЗ детано описывая необходимое, результат был одинаков предложенный им код не работал не в каком виде.</p><p>Это одна из вариаций того что я предлагал но суть одна даже простую задачу с построением файлов из заданной папки в один длинный он не справился.</p><br /><div class="codebox"><pre><code>
@echo off
setlocal enabledelayedexpansion

set DIR_A=&lt;путь к директории A&gt;
set DIR_B=&lt;путь к директории B&gt;
set DIR_C=&lt;путь к директории C&gt;

for %%A in (&quot;%DIR_A%\*.mp3&quot;) do (
    echo Обрабатываем файл: %%~nxA

    REM Определяем продолжительность файла и округляем до ближайшей половины секунды
    for /f &quot;usebackq delims=&quot; %%B in (`sox --i -D &quot;%%A&quot;`) do set /a &quot;duration=round(2*%%B)/2&quot;

    REM Ищем произвольные файлы из директории B, чья суммарная продолжительность меньше или равна
    REM или чуть больше округленной продолжительности обрабатываемого файла из директории A
    set background_files=
    set total_duration=0
    for /f &quot;tokens=* delims=&quot; %%B in (&#039;dir /b &quot;%DIR_B%\*.mp3&quot;&#039;) do (
        for /f &quot;usebackq delims=&quot; %%C in (`sox --i -D &quot;%DIR_B%\%%B&quot;`) do set /a &quot;file_duration=round(2*%%C)/2&quot;
        set /a &quot;new_total_duration=total_duration+file_duration&quot;
        if !new_total_duration! leq !duration! (
            set background_files=!background_files! &quot;%DIR_B%\%%B&quot;
            set total_duration=!new_total_duration!
        )
    )
    
    if defined background_files (
        REM Смешиваем файлы из директории B в единый фоновый трек и сохраняем во временный файл
        set background_file=%DIR_C%\%%~nxA_temp_background.mp3
        sox %background_files% -v -22 &quot;%background_file%&quot;

        REM Если длина фонового трека превысила длину обрабатываемого файла из директории A,
        REM обрезаем и приглушаем его
        if !total_duration! gtr !duration! (
            sox &quot;%background_file%&quot; &quot;%background_file%&quot; trim 0 !duration! fade t 0 !duration! 20
        )

        REM Смешиваем аудиокнигу из директории A и фоновый трек из директории C и сохраняем результат
        set output_file=%DIR_C%\%%~nxA
        sox -m -v 1 &quot;%%A&quot; -v 1 &quot;%background_file%&quot; -v 0.5 &quot;%output_file%&quot;

        echo Создан файл: %output_file%
    ) else (
        echo Не найдено подходящих файлов для создания фоновой музыки.
    )

    REM Очищаем временные файлы
    del /q &quot;%DIR_C%\%%~nxA_temp*.mp3&quot;
)

</code></pre></div><p>Этот пример конечно для SOX но суть также любые предлагаемые варианты не работали ни в каком виде, я даже переименовывал файлы в 1.mp3 2… 3… предполагая что дело в экранировании пробелов и других символов, но результат не менялся список передаваемый в FFMPEG не воспринимался не в каком виде.</p><p>Вот я и решил спросить у реальных программистов.</p>]]></content>
			<author>
				<name><![CDATA[grisha.puding]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=43055</uri>
			</author>
			<updated>2023-03-17T14:34:56Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=157199#p157199</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: CMD/BAT: Вставка параметров из файла]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=157198#p157198" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>Malcev пишет:</cite><blockquote><p><a href="https://trac.ffmpeg.org/wiki/Concatenate">https://trac.ffmpeg.org/wiki/Concatenate</a></p></blockquote></div><p>Уважаемый Malcev, Да! Красиво, спасибо, глубокий поклон, правда ранее ссылку уже дал уважаемый Flasher, да только готового примера там нет.<br />То что есть как я понимаю для Линукса.</p><p>В целом описания понятное, но составить рабочий БАТ фай не получается.<br />Посему и прошу может кто-то уже мучился и имеет рабочий вариант.</p>]]></content>
			<author>
				<name><![CDATA[grisha.puding]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=43055</uri>
			</author>
			<updated>2023-03-17T14:21:59Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=157198#p157198</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: CMD/BAT: Вставка параметров из файла]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=157191#p157191" />
			<content type="html"><![CDATA[<p><a href="https://trac.ffmpeg.org/wiki/Concatenate">https://trac.ffmpeg.org/wiki/Concatenate</a></p>]]></content>
			<author>
				<name><![CDATA[Malcev]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=26930</uri>
			</author>
			<updated>2023-03-16T18:19:34Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=157191#p157191</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: CMD/BAT: Вставка параметров из файла]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=157080#p157080" />
			<content type="html"><![CDATA[<p>Прошу прошения за глупый вопрос, но возможно у кого-нибудь есть готовый BAT для ffmpeg или sox для склейки нескольких mp3 из предопределенной папки, в один длинный?</p>]]></content>
			<author>
				<name><![CDATA[grisha.puding]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=43055</uri>
			</author>
			<updated>2023-03-11T17:10:14Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=157080#p157080</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: CMD/BAT: Вставка параметров из файла]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=97568#p97568" />
			<content type="html"><![CDATA[<p>Я думал они и так в одной папке все лежат. Предлагал просто их переименовать, например AHK-скриптом, и тут же создать bat-файл тем же скриптом.</p>]]></content>
			<author>
				<name><![CDATA[ypppu]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=5974</uri>
			</author>
			<updated>2015-09-18T20:03:09Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=97568#p97568</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: CMD/BAT: Вставка параметров из файла]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=97560#p97560" />
			<content type="html"><![CDATA[<p>ypppu, решил воспользоваться вашей идеей с копированием файлов в вотчфолдер и переименовкой их в китайские символы, начиная с 0x20000. Теперь файлов может быть до 5400. Это больше, чем нужно.<br />Спасибо!</p>]]></content>
			<author>
				<name><![CDATA[Malcev]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=26930</uri>
			</author>
			<updated>2015-09-18T17:42:38Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=97560#p97560</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: CMD/BAT: Вставка параметров из файла]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=97522#p97522" />
			<content type="html"><![CDATA[<p>Пробовал, но не получалось.</p>]]></content>
			<author>
				<name><![CDATA[Malcev]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=26930</uri>
			</author>
			<updated>2015-09-16T18:04:45Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=97522#p97522</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: CMD/BAT: Вставка параметров из файла]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=97520#p97520" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>Malcev пишет:</cite><blockquote><p>Так как, программу планирую запускать на разных компьютерах, то везде возиться с установкой PoSh, наверное будет затруднительным?</p></blockquote></div><p>Была <a href="https://web.archive.org/web/20130624000555/http://site.shelltools.net/Applications/Portable_PowerShell">такая страница</a> (жаль ссылки битые), можно порыться в сети, может, кто выкладывал.<br /></p><div class="quotebox"><cite>Malcev пишет:</cite><blockquote><p>И приходится кодировать во временные папки, так как , как я понимаю, named pipes windows не поддерживает.</p></blockquote></div><p>А в первый из склеиваемых писать не пробовали? Или ругнётся?</p>]]></content>
			<author>
				<name><![CDATA[Flasher]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=27593</uri>
			</author>
			<updated>2015-09-16T17:30:58Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=97520#p97520</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: CMD/BAT: Вставка параметров из файла]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=97497#p97497" />
			<content type="html"><![CDATA[<p>Переименовывать не совсем хочется, так как файлы могут лежать на SD карточке.<br /></p><div class="quotebox"><blockquote><p>Ещё можно к PoSh обратиться</p></blockquote></div><p>Так как, программу планирую запускать на разных компьютерах, то везде возиться с установкой PoSh, наверное будет затруднительным? <br />Пока создаю переменную с названием файлов без пути (для запуска из AHK коммандой Run из директории, где расположены файлы), если директория меняется, то добавляю новый путь в переменную. Тут засада - размер увеличивается, так как прибавляется каждый раз к названию I:\PRIVATE\AVCHD\BDMV\STREAM\. <br />Если размер больше 16кб, то создаю новую переменную.<br />И приходится кодировать во временные папки, так как , как я понимаю, named pipes windows не поддерживает.</p>]]></content>
			<author>
				<name><![CDATA[Malcev]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=26930</uri>
			</author>
			<updated>2015-09-16T11:59:58Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=97497#p97497</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: CMD/BAT: Вставка параметров из файла]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=97480#p97480" />
			<content type="html"><![CDATA[<p>А что, если каким-то образом предварительно переименовать все файлы, чтобы их больше влезло в строку?<br />Вместо </p><div class="codebox"><pre><code>ffmpeg -i &quot;concat:input1.mpg|input2.mpg|input3.mpg&quot; -c copy output.mpg</code></pre></div><p>сделать </p><div class="codebox"><pre><code>ffmpeg -i &quot;concat:1|2|3&quot; -c copy output.mpg</code></pre></div><p>?</p>]]></content>
			<author>
				<name><![CDATA[ypppu]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=5974</uri>
			</author>
			<updated>2015-09-16T08:44:43Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=97480#p97480</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: CMD/BAT: Вставка параметров из файла]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=97479#p97479" />
			<content type="html"><![CDATA[<p>Ещё можно к PoSh обратиться, там строка в тысячи, десятки и сотни тысяч раз длиннее.</p>]]></content>
			<author>
				<name><![CDATA[Flasher]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=27593</uri>
			</author>
			<updated>2015-09-16T07:57:28Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=97479#p97479</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: CMD/BAT: Вставка параметров из файла]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=97474#p97474" />
			<content type="html"><![CDATA[<p>Нет.</p>]]></content>
			<author>
				<name><![CDATA[Malcev]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=26930</uri>
			</author>
			<updated>2015-09-16T03:28:36Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=97474#p97474</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: CMD/BAT: Вставка параметров из файла]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=97473#p97473" />
			<content type="html"><![CDATA[<p>А если записать все в *.bat работает?</p>]]></content>
			<author>
				<name><![CDATA[Alectric]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=26027</uri>
			</author>
			<updated>2015-09-16T02:51:20Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=97473#p97473</id>
		</entry>
</feed>
