Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Поместить вывод команды в переменную

Ответить
Настройки темы
CMD/BAT - [решено] Поместить вывод команды в переменную

Новый участник


Сообщения: 44
Благодарности: 3

Профиль | Отправить PM | Цитировать


Здравствуйте. Я пытаюсь настроить тригер на громкость аудио файла.
Команда выглядит так:
Код: Выделить весь код
ffmpeg -i "%~1" -af "volumedetect" -f null nul
Вывод выглядит так:

Нужное число это mean_volume: -15.5 dB
Подскажите пожалуйста как в переменную _var поместить значение mean_volume.
Очень желательно до точки. То есть не 15.5 а 15
Спасибо.

Отправлено: 15:24, 14-06-2020

 

Ветеран


Contributor


Сообщения: 2728
Благодарности: 1697

Профиль | Отправить PM | Цитировать


ateka, Выполните команду в виде:
Код: Выделить весь код
ffmpeg -i "%~1" -af "volumedetect" -f null nul >c:\zzzzzzzzzzzzzz.txt
и приложите получившийся файл к сообщению - надо на чем-то проверить решение.

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.

Это сообщение посчитали полезным следующие участники:

Отправлено: 15:50, 14-06-2020 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Новый участник


Сообщения: 44
Благодарности: 3

Профиль | Отправить PM | Цитировать


Вложения
Тип файла: txt temp.txt
(3.9 Kb, 4 просмотров)

Код: Выделить весь код
ffmpeg -i "test.mp4" -af "volumedetect" -f null nul 2>temp.txt
output
Код: Выделить весь код
ffmpeg version git-2020-05-13-b12b053 Copyright (c) 2000-2020 the FFmpeg developers
  built with gcc 9.3.1 (GCC) 20200513
  configuration: --enable-gpl --enable-version3 --enable-sdl2 --enable-fontconfig --enable-gnutls --enable-iconv --enable-libass --enable-libdav1d --enable-libbluray --enable-libfreetype --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-libopus --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libsrt --enable-libtheora --enable-libtwolame --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxml2 --enable-libzimg --enable-lzma --enable-zlib --enable-gmp --enable-libvidstab --enable-libvmaf --enable-libvorbis --enable-libvo-amrwbenc --enable-libmysofa --enable-libspeex --enable-libxvid --enable-libaom --disable-w32threads --enable-libmfx --enable-ffnvcodec --enable-cuda-llvm --enable-cuvid --enable-d3d11va --enable-nvenc --enable-nvdec --enable-dxva2 --enable-avisynth --enable-libopenmpt --enable-amf
  libavutil      56. 45.100 / 56. 45.100
  libavcodec     58. 84.100 / 58. 84.100
  libavformat    58. 43.100 / 58. 43.100
  libavdevice    58.  9.103 / 58.  9.103
  libavfilter     7. 80.100 /  7. 80.100
  libswscale      5.  6.101 /  5.  6.101
  libswresample   3.  6.100 /  3.  6.100
  libpostproc    55.  6.100 / 55.  6.100
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'test.mp4':
  Metadata:
    major_brand     : isom
    minor_version   : 512
    compatible_brands: isomiso2avc1mp41
    title           : Maybe.mp4
    encoder         : Lavf58.43.100
  Duration: 00:00:18.30, start: 0.000000, bitrate: 929 kb/s
    Stream #0:0(und): Video: h264 (Main) (avc1 / 0x31637661), yuv420p(tv, bt709), 640x350 [SAR 1:1 DAR 64:35], 791 kb/s, 30 fps, 30 tbr, 15360 tbn, 60 tbc (default)
    Metadata:
      handler_name    : VideoHandler
    Stream #0:1(und): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 128 kb/s (default)
    Metadata:
      handler_name    : SoundHandler
Stream mapping:
  Stream #0:0 -> #0:0 (h264 (native) -> wrapped_avframe (native))
  Stream #0:1 -> #0:1 (aac (native) -> pcm_s16le (native))
Press [q] to stop, [?] for help
Output #0, null, to 'nul':
  Metadata:
    major_brand     : isom
    minor_version   : 512
    compatible_brands: isomiso2avc1mp41
    encoder         : Lavf58.43.100
    Stream #0:0(und): Video: wrapped_avframe, yuv420p, 640x350 [SAR 1:1 DAR 64:35], q=2-31, 200 kb/s, 30 fps, 30 tbn, 30 tbc (default)
    Metadata:
      handler_name    : VideoHandler
      encoder         : Lavc58.84.100 wrapped_avframe
    Stream #0:1(und): Audio: pcm_s16le, 48000 Hz, stereo, s16, 1536 kb/s (default)
    Metadata:
      handler_name    : SoundHandler
      encoder         : Lavc58.84.100 pcm_s16le
frame=  549 fps=0.0 q=-0.0 Lsize=N/A time=00:00:18.30 bitrate=N/A speed=57.3x    
video:287kB audio:3436kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: unknown
[Parsed_volumedetect_0 @ 000002a929142a80] n_samples: 1759232
[Parsed_volumedetect_0 @ 000002a929142a80] mean_volume: -47.3 dB
[Parsed_volumedetect_0 @ 000002a929142a80] max_volume: -15.9 dB
[Parsed_volumedetect_0 @ 000002a929142a80] histogram_15db: 10
[Parsed_volumedetect_0 @ 000002a929142a80] histogram_16db: 18
[Parsed_volumedetect_0 @ 000002a929142a80] histogram_17db: 14
[Parsed_volumedetect_0 @ 000002a929142a80] histogram_18db: 22
[Parsed_volumedetect_0 @ 000002a929142a80] histogram_19db: 32
[Parsed_volumedetect_0 @ 000002a929142a80] histogram_20db: 70
[Parsed_volumedetect_0 @ 000002a929142a80] histogram_21db: 114
[Parsed_volumedetect_0 @ 000002a929142a80] histogram_22db: 138
[Parsed_volumedetect_0 @ 000002a929142a80] histogram_23db: 298
[Parsed_volumedetect_0 @ 000002a929142a80] histogram_24db: 286
[Parsed_volumedetect_0 @ 000002a929142a80] histogram_25db: 382
[Parsed_volumedetect_0 @ 000002a929142a80] histogram_26db: 538

Отправлено: 16:18, 14-06-2020 | #3


Ветеран


Contributor


Сообщения: 2728
Благодарности: 1697

Профиль | Отправить PM | Цитировать


ateka, Полноценно отладить не могу, нет ffmpeg, пробуйте:
Код: Выделить весь код
@Echo Off
cls
 
Set "Var= mean_volume: "
Set "FileIn=test.mp4"

FOR /F "usebackq tokens=1* delims=:" %%i IN (`ffmpeg -i "%FileIn%" -af "volumedetect" -f null nul ^|FINDSTR /I "%Var%"`) DO Set "Var=%%j"
FOR /F "tokens=1* delims=. " %%i IN ("%Var%") DO Set "Var=%%i"

Echo "%Var%" 
Pause
Exit /B

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.

Это сообщение посчитали полезным следующие участники:

Отправлено: 16:37, 14-06-2020 | #4


Новый участник


Сообщения: 44
Благодарности: 3

Профиль | Отправить PM | Цитировать


Супер! Спасибо большое! Как часы!
драфт
Код: Выделить весь код
::@Echo Off
cls
 
Set "Var= mean_volume: "
Set "FileIn=test.mp4"

FOR /F "usebackq tokens=2* delims=:" %%i IN (`ffmpeg -i "%FileIn%" -af "volumedetect" -f null nul 2^>^&1^|FINDSTR /I "%Var%"`) DO Set "Var=%%i"
FOR /F "tokens=1* delims=.- " %%i IN ("%Var%") DO Set "Var=%%i"

Echo ___ "%Var%" ___
Pause
Exit /B

Отправлено: 17:35, 14-06-2020 | #5


Ветеран


Сообщения: 1274
Благодарности: 564

Профиль | Отправить PM | Цитировать


Код: Выделить весь код
ffmpeg -i "%~1" -af "volumedetect" -f null nul|sed -n "/mean_volume:/s/^.*[:]\s[-]\?//;T;s/[.].*$//p"
sed
Это сообщение посчитали полезным следующие участники:

Отправлено: 23:43, 14-06-2020 | #6


Новый участник


Сообщения: 44
Благодарности: 3

Профиль | Отправить PM | Цитировать


Цитата alpap:
/s/^.*[:]\s[-]\?//;T;s/[.].*$//p »
Круто, спасибо!

Отправлено: 18:16, 15-06-2020 | #7


Аватара для DJ Mogarych

fascinating rhythm


Moderator


Сообщения: 6626
Благодарности: 1528

Профиль | Отправить PM | Цитировать


А в Пауэршелле как запихнуть вывод ффмпега в переменную? Но только чтобы без промежуточных текстовых файлов.

-------
Powershell 7.x | Powershell 5.1 | ffmpeg (docs)


Отправлено: 10:41, 16-06-2020 | #8


Ветеран


Сообщения: 3806
Благодарности: 824

Профиль | Отправить PM | Цитировать


Цитата DJ Mogarych:
в Пауэршелле как запихнуть вывод ффмпега в переменную? »
Код: Выделить весь код
$result = & ffmpeg.exe

Отправлено: 11:12, 16-06-2020 | #9


Ветеран


Сообщения: 1758
Благодарности: 966

Профиль | Цитировать


Цитата DJ Mogarych:
А в Пауэршелле как запихнуть вывод ффмпега в переменную? »
Перенаправить stderr в stdout и удалить сообщение об ошибке:
Код: Выделить весь код
$a = ffmpeg -i "file.flac" -af "volumedetect" -f null nul 2>&1
$a.Exception
Это в лоб, первое что приходит на ум.

Последний раз редактировалось Foreigner, 16-06-2020 в 11:51.

Это сообщение посчитали полезным следующие участники:

Отправлено: 11:17, 16-06-2020 | #10



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Поместить вывод команды в переменную

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - [решено] Как записать в переменную результат выполнения команды? MSI Скриптовые языки администрирования Windows 64 24-12-2020 18:20
CMD/BAT - результат команды в переменную BreakHeart Скриптовые языки администрирования Windows 13 26-06-2019 00:15
CMD/BAT - Результат выполнения команды в переменную densan Скриптовые языки администрирования Windows 13 22-11-2018 17:38
Система - Вывод даты в переменную (bat) rootheaven Скриптовые языки администрирования Windows 6 23-07-2017 20:21
CMD/BAT - сравнение данных и вывод в переменную Anufriev Скриптовые языки администрирования Windows 9 11-06-2015 11:02




 
Переход