Мультиплексирование видео и аудио с FFMPEG из подкаталогов с помощью Windows Batch Script

592
DMtd

Я пытаюсь выяснить пакетный сценарий (на основе Windows), который позволит мне мультиплексировать некоторые файлы .m2v и .wav, которые существуют в загрузке подкаталогов (в пределах одного основного каталога). Они также должны быть перезаписаны и перекодированы, выходные файлы должны быть в формате MXF и помещаться в другую папку. Я новичок в пакетных скриптах, не так уж плохо знаком с командами FFMPEG. До сих пор я не смог найти пакетных сценариев, позволяющих использовать несколько файлов, только те, которые работают для преобразования одного файла.

После долгих поисков самое близкое, что я видел, это то, что я пытался безуспешно. Странно, но однажды он создал файл .mxf, хотя и 0 КБ, но каждый раз, когда я ничего не получал.

for %%a in (".m2v") do ffmpeg -i "%%~na.wav" -i "%%~na.m2v" -acodec copy -vcodec copy "newfiles\%%~na.mxf". 

Я не уверен, что подразумевается в скобках, где у меня есть (".m2v").

что это представляет?

1
Обратите внимание, что [SU] не является сервисом написания скриптов. Если вы сообщите нам, что вы уже пробовали (включая сценарии, которые вы используете) и где вы застряли, мы можем попытаться помочь с конкретными проблемами. Вам также следует прочитать [Как мне задать хороший вопрос?] (Http://superuser.com/help/how-to-ask). DavidPostill 8 лет назад 0
После долгих поисков самое близкое, что я видел, это то, что я пытался безуспешно. Странно, но однажды он создал файл .mxf, хотя и 0 КБ, но каждый раз, когда я ничего не получал. для %% a in ("* .m2v") выполните ffmpeg -i "%% ~ na.wav" -i "%% ~ na.m2v" -acodec copy -vcodec copy "newfiles \ %% ~ na.mxf" , Я не уверен, что подразумевается в скобках, где у меня есть ("* .m2v"). что это представляет? DMtd 8 лет назад 0

1 ответ на вопрос

1
DavidPostill

Я не уверен, что подразумевается в скобках, где у меня есть (".m2v").

что это представляет?

for %%a in (".m2v") do ffmpeg -i "%%~na.wav" -i "%%~na.m2v" -acodec copy -vcodec copy "newfiles\%%~na.mxf" 

Значение (".m2v")представляет собой набор файлов для обработки.

В вашей команде нет файлов для обработки, так как:

  • .m2v это только расширение, и мы можем предположить, что это должно быть что-то вроде filename.m2v
  • Здесь вам действительно нужно подстановочное выражение (как это сделать см. Ниже).
  • Ваши файлы находятся в подкаталогах.

Используйте следующий пакетный файл (в единственном главном каталоге):

@echo off setlocal for /f "usebackq" %%a in (`dir /b /s *.m2v`) do ( echo ffmpeg -i "%%~dpna.wav" -i "%%~dpna.m2v" -acodec copy -vcodec copy "newfiles\%%~na.mxf ) endlocal 

Заметки:

  • Удалите echoиз ffmpegкоманды, когда вы довольны тем, что собирается делать пакетный файл.

  • dir /b /s *.m2v используется для создания списка файлов для обработки.

    /bВариант дает только имена файлов (мы не хотим, чтобы заголовки, резюме или другие детали)

    /sОпция позволяет dirобрабатывать подкаталоги.

  • for /f используется для обработки списка файлов.

  • %%~dpna используется для получения полного имени файла без расширения.


Дальнейшее чтение