<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title><![CDATA[Серый форум &mdash; CMD/BAT: ffmpeg Замена аудиодорожки]]></title>
		<link>https://forum.script-coding.com/viewtopic.php?id=15097</link>
		<atom:link href="https://forum.script-coding.com/extern.php?action=feed&amp;tid=15097&amp;type=rss" rel="self" type="application/rss+xml" />
		<description><![CDATA[Недавние сообщения в теме «CMD/BAT: ffmpeg Замена аудиодорожки».]]></description>
		<lastBuildDate>Wed, 22 Jan 2020 21:59:18 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Re: CMD/BAT: ffmpeg Замена аудиодорожки]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=137454#p137454</link>
			<description><![CDATA[<p><strong>alexii</strong>, работает! Спасибо!</p>]]></description>
			<author><![CDATA[null@example.com (becauseim)]]></author>
			<pubDate>Wed, 22 Jan 2020 21:59:18 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=137454#p137454</guid>
		</item>
		<item>
			<title><![CDATA[Re: CMD/BAT: ffmpeg Замена аудиодорожки]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=137453#p137453</link>
			<description><![CDATA[<div class="quotebox"><cite>becauseim пишет:</cite><blockquote><p>А если ничего не убирать, можно ли научить скрипт понимать, что во входном видео уже прописана дата в данном формате? Чтобы ее заменить при создании нового файла, а не дописывать.</p></blockquote></div><p>Пробуйте:<br /></p><div class="fancy_spoiler_switcher"><div class="fancy_spoiler_switcher_header" data-lang-open="открыть спойлер" data-lang-close="скрыть спойлер"><strong>+</strong>&nbsp;открыть спойлер</div><div class="fancy_spoiler"><div class="codebox"><pre><code>Option Explicit

Dim objFSO

Dim objVideo
Dim objAudio

Dim strVideoFile
Dim strAudioFile

Dim objWshShell
Dim objRegExp

Dim dtNow
Dim strResultName


If WScript.Arguments.Count = 2 Then
	With WScript.CreateObject(&quot;Scripting.FileSystemObject&quot;)
		Set objVideo = WScript.CreateObject(&quot;Scripting.Dictionary&quot;)
		Set objAudio = WScript.CreateObject(&quot;Scripting.Dictionary&quot;)
		
		With objVideo
			.CompareMode = vbTextCompare
			
			.Add &quot;mov&quot;, &quot;mov&quot;
			.Add &quot;mp4&quot;, &quot;mp4&quot;
			.Add &quot;mts&quot;, &quot;mts&quot;
		End With
		
		With objAudio
			.CompareMode = vbTextCompare
			
			.Add &quot;mp3&quot;, &quot;mp3&quot;
			.Add &quot;wav&quot;, &quot;wav&quot;
			.Add &quot;aac&quot;, &quot;aac&quot;
		End With
		
		If objVideo.Exists(.GetExtensionName(WScript.Arguments.Item(0))) And _
			objAudio.Exists(.GetExtensionName(WScript.Arguments.Item(1))) Or _
			objVideo.Exists(.GetExtensionName(WScript.Arguments.Item(1))) And _
			objAudio.Exists(.GetExtensionName(WScript.Arguments.Item(0))) Then
			
			If objVideo.Exists(.GetExtensionName(WScript.Arguments.Item(0))) Then
				strVideoFile = .GetAbsolutePathName(WScript.Arguments.Item(0))
				strAudioFile = .GetAbsolutePathName(WScript.Arguments.Item(1))
			Else
				strVideoFile = .GetAbsolutePathName(WScript.Arguments.Item(1))
				strAudioFile = .GetAbsolutePathName(WScript.Arguments.Item(0))
			End If
			
			If .FileExists(strVideoFile) Then
				If .FileExists(strAudioFile) Then
					If StrComp(.GetParentFolderName(strVideoFile), .GetParentFolderName(strAudioFile), vbTextCompare) = 0 Then
						Set objWshShell = WScript.CreateObject(&quot;WScript.Shell&quot;)
						objWshShell.CurrentDirectory = .GetParentFolderName(strVideoFile)
						
						Set objRegExp = WScript.CreateObject(&quot;VBScript.RegExp&quot;)
						objRegExp.Pattern = &quot;^(.+_)\d{8}_\d{6}$&quot;
						
						If objRegExp.Test(.GetBaseName(strVideoFile)) Then
							strResultName = objRegExp.Replace(.GetBaseName(strVideoFile), &quot;$1&quot; &amp; FormatOwnDateTime(Now())) &amp; &quot;.mp4&quot;
						Else
							strResultName = .GetBaseName(strVideoFile) &amp; &quot;_&quot; &amp; FormatOwnDateTime(Now()) &amp; &quot;.mp4&quot;
						End If
						
						Set objRegExp = Nothing
						
						objWshShell.Run &quot;&quot;&quot;ffmpeg.exe&quot;&quot; -i &quot;&quot;&quot; &amp; strVideoFile &amp; &quot;&quot;&quot; -i &quot;&quot;&quot; &amp; strAudioFile &amp; &quot;&quot;&quot; -c:v copy -map 0:v:0 -map 1:a:0 -shortest &quot;&quot;&quot; &amp; strResultName &amp; &quot;&quot;&quot;&quot;, 1, True
						Set objWshShell = Nothing
					Else
						WScript.Echo &quot;Need appear source video file [&quot; &amp; strVideoFile &amp; &quot;] near source audio file [&quot; &amp; strAudioFile &amp; &quot;].&quot;
						WScript.Quit 5
					End If
				Else
					WScript.Echo &quot;Can&#039;t find source audio file [&quot; &amp; strAudioFile &amp; &quot;].&quot;
					WScript.Quit 4
				End If
			Else
				WScript.Echo &quot;Can&#039;t find source video file [&quot; &amp; strVideoFile &amp; &quot;].&quot;
				WScript.Quit 3
			End If
		Else
			WScript.Echo &quot;Need one source video file (&quot; &amp; Join(objVideo.Keys) &amp; &quot;) and one source audio file (&quot; &amp; Join(objAudio.Keys) &amp; &quot;).&quot;
			WScript.Quit 2
		End If
		
		objAudio.RemoveAll
		objVideo.RemoveAll
		
		Set objAudio = Nothing
		Set objVideo = Nothing
	End With
Else
	WScript.Echo &quot;Usage: cscript.exe //nologo &quot;&quot;&quot; &amp; WScript.ScriptName &amp; &quot;&quot;&quot; &lt;Source video file&gt; &lt;Source audio file&gt;&quot;
	WScript.Quit 1
End If

WScript.Quit 0
&#039;=============================================================================

&#039;=============================================================================
Function StrZeroPad(intValue, intCount)
	StrZeroPad = Right(String(intCount, &quot;0&quot;) &amp; CStr(intValue), intCount)
End Function
&#039;=============================================================================

&#039;=============================================================================
Function FormatOwnDateTime(dtNow)
	FormatOwnDateTime = _
		StrZeroPad(Year(  dtNow), 4) &amp; _
		StrZeroPad(Month( dtNow), 2) &amp; _
		StrZeroPad(Day(   dtNow), 2) &amp; _
		&quot;_&quot; &amp; _
		StrZeroPad(Hour(  dtNow), 2) &amp; _
		StrZeroPad(Minute(dtNow), 2) &amp; _
		StrZeroPad(Second(dtNow), 2)
End Function
&#039;=============================================================================
</code></pre></div></div></div>]]></description>
			<author><![CDATA[null@example.com (alexii)]]></author>
			<pubDate>Wed, 22 Jan 2020 20:49:34 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=137453#p137453</guid>
		</item>
		<item>
			<title><![CDATA[Re: CMD/BAT: ffmpeg Замена аудиодорожки]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=137443#p137443</link>
			<description><![CDATA[<p>Бытовой уровень - понятие растяжимое.<br />Но тупой ffmpeg действительно не даёт замуксить PCM в mp4.<br />Приходится через ffmpeg PCM из WAV&nbsp; копировать в MOV, а потом через mp4box муксить mp4 видео с mov аудио.<br />Ну и в контейнере WAV не обязательно PCM может быть, а например тот же MP3.</p>]]></description>
			<author><![CDATA[null@example.com (Malcev)]]></author>
			<pubDate>Wed, 22 Jan 2020 01:42:23 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=137443#p137443</guid>
		</item>
		<item>
			<title><![CDATA[Re: CMD/BAT: ffmpeg Замена аудиодорожки]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=137438#p137438</link>
			<description><![CDATA[<p><strong>Malcev</strong>, я так думал. Но если не так, то для универсальности на бытовом уровне лучше вложить AAC, полагаю.</p>]]></description>
			<author><![CDATA[null@example.com (becauseim)]]></author>
			<pubDate>Tue, 21 Jan 2020 22:11:04 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=137438#p137438</guid>
		</item>
		<item>
			<title><![CDATA[Re: CMD/BAT: ffmpeg Замена аудиодорожки]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=137429#p137429</link>
			<description><![CDATA[<p>А почему вы считаете, что wav не может быть в mp4?</p>]]></description>
			<author><![CDATA[null@example.com (Malcev)]]></author>
			<pubDate>Tue, 21 Jan 2020 17:55:46 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=137429#p137429</guid>
		</item>
		<item>
			<title><![CDATA[Re: CMD/BAT: ffmpeg Замена аудиодорожки]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=137426#p137426</link>
			<description><![CDATA[<p><strong>Malcev</strong>, в моем случае, видео - это всегда стандартный <em>h264-h265 *.mp4</em>, либо <em>ProRes *.mov</em>. Аудио дорожка одна. <br />По сути - да, напрашивается проверка: если входит mp4 и aac, то видео и аудио стоит объединить в режиме copy, если mp4 и wav - копировать свойства только видео.</p>]]></description>
			<author><![CDATA[null@example.com (becauseim)]]></author>
			<pubDate>Tue, 21 Jan 2020 17:37:23 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=137426#p137426</guid>
		</item>
		<item>
			<title><![CDATA[Re: CMD/BAT: ffmpeg Замена аудиодорожки]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=137425#p137425</link>
			<description><![CDATA[<p>1) Расширение файла тут не поможет.<br />2) Даже после того как узнали кодек возможно придется узнавать количество каналов, частоту дискретизации и возможно другие параметры и проверять кушает ли ffmpeg такие файлы без перекодирования и что дает на выходе.<br />Я уже давно ffmpeg не пользовался, но помню, что у него был глюк с объединением MTS если в MTS было запихнуто PCM.</p>]]></description>
			<author><![CDATA[null@example.com (Malcev)]]></author>
			<pubDate>Tue, 21 Jan 2020 17:13:04 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=137425#p137425</guid>
		</item>
		<item>
			<title><![CDATA[Re: CMD/BAT: ffmpeg Замена аудиодорожки]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=137424#p137424</link>
			<description><![CDATA[<div class="codebox"><pre><code>
ffmpeg -i AUDIOFILENAME 2&gt;&amp;1 | find &quot;: Audio: &quot;
</code></pre></div><p>И вытащить из четвертой позиции имя кодека (подстрока после Audio, если разделители пробел и запятая).</p><p>Или просто посмотреть на расширение файла.</p>]]></description>
			<author><![CDATA[null@example.com (Rumata)]]></author>
			<pubDate>Tue, 21 Jan 2020 16:56:46 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=137424#p137424</guid>
		</item>
		<item>
			<title><![CDATA[Re: CMD/BAT: ffmpeg Замена аудиодорожки]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=137420#p137420</link>
			<description><![CDATA[<p>Это понятно, но нам надо заранее узнать необходимость кодирования.</p>]]></description>
			<author><![CDATA[null@example.com (Malcev)]]></author>
			<pubDate>Tue, 21 Jan 2020 16:41:00 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=137420#p137420</guid>
		</item>
		<item>
			<title><![CDATA[Re: CMD/BAT: ffmpeg Замена аудиодорожки]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=137418#p137418</link>
			<description><![CDATA[<div class="quotebox"><cite>Malcev пишет:</cite><blockquote><p>надо копировать кодек, а не кодировать</p></blockquote></div><p>И верно. Но если указать кодек вместо copy, по будет перекодировать. Если мне не изменяет память. Подробности можно узнать из справки:</p><div class="codebox"><pre><code>
ffmpeg -formats
ffmpeg -codecs
</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (Rumata)]]></author>
			<pubDate>Tue, 21 Jan 2020 16:37:13 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=137418#p137418</guid>
		</item>
		<item>
			<title><![CDATA[Re: CMD/BAT: ffmpeg Замена аудиодорожки]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=137415#p137415</link>
			<description><![CDATA[<p>И где тут условие?<br />Данный параметр указывает ffmpeg, что надо копировать кодек, а не кодировать.</p>]]></description>
			<author><![CDATA[null@example.com (Malcev)]]></author>
			<pubDate>Tue, 21 Jan 2020 16:21:17 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=137415#p137415</guid>
		</item>
		<item>
			<title><![CDATA[Re: CMD/BAT: ffmpeg Замена аудиодорожки]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=137414#p137414</link>
			<description><![CDATA[<div class="quotebox"><cite>becauseim пишет:</cite><blockquote><p>не знаю, как задать подобное условие.</p></blockquote></div><div class="codebox"><pre><code>-acodec copy</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (Rumata)]]></author>
			<pubDate>Tue, 21 Jan 2020 16:17:14 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=137414#p137414</guid>
		</item>
		<item>
			<title><![CDATA[Re: CMD/BAT: ffmpeg Замена аудиодорожки]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=137410#p137410</link>
			<description><![CDATA[<p>Нужно смотреть, какой кодек у аудио и сверять его с поддержкой этого кодека с контейнером mp4 у ffmpeg.<br />А также проверять ошибки ffmpeg на выходе.</p>]]></description>
			<author><![CDATA[null@example.com (Malcev)]]></author>
			<pubDate>Tue, 21 Jan 2020 13:30:43 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=137410#p137410</guid>
		</item>
		<item>
			<title><![CDATA[Re: CMD/BAT: ffmpeg Замена аудиодорожки]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=137409#p137409</link>
			<description><![CDATA[<p><strong>Malcev</strong>, смысла нет, не знаю, как задать подобное условие.</p>]]></description>
			<author><![CDATA[null@example.com (becauseim)]]></author>
			<pubDate>Tue, 21 Jan 2020 13:15:18 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=137409#p137409</guid>
		</item>
		<item>
			<title><![CDATA[Re: CMD/BAT: ffmpeg Замена аудиодорожки]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=137407#p137407</link>
			<description><![CDATA[<p>А есть ли смысл перекодировать поддерживаемое аудио?</p>]]></description>
			<author><![CDATA[null@example.com (Malcev)]]></author>
			<pubDate>Tue, 21 Jan 2020 13:12:39 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=137407#p137407</guid>
		</item>
	</channel>
</rss>
