 |
|
DJ Mogarych |
24-11-2018 11:44 2842365 |
Передача значения переменной сторонней программе
Привет!
Написал скрипт по перекодированию аудио в mp3, финальная строка в цикле такая:
Код:
ffmpeg -i ""$ifile"" $qualityaudio ""$path\$ofile$extout""
Если заключить её в кавычки, то строки просто выводятся на экран, причём, корректно сформированные:
Код:
ffmpeg -i "C:\Users\123\Music\Ben Webster - Art Tatum Quartet [1956]\15 Art Tatum and Ben Webster - All the things you are (Art Tatum 1953).flac"
-q:a 0 "C:\Users\123\Music\Ben Webster - Art Tatum Quartet [1956]\15 Art Tatum and Ben Webster - All the things you are (Art Tatum 1953).mp3"
Но я не могу заставить их выполняться, где-то по дороге теряется часть строки:
Код:
ffmpeg : ffmpeg version N-92510-gfa08345e88 Copyright (c) 2000-2018 the FFmpeg developers
C:\Users\123\Desktop\ffmpeg.ps1:11 знак:1
+ ffmpeg -i ""$ifile"" $qualityaudio ""$path\$ofile$extout""
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (ffmpeg version ...mpeg developers:String) [], RemoteException
+ FullyQualifiedErrorId : NativeCommandError
built with gcc 8.2.1 (GCC) 20181017
configuration: --enable-gpl --enable-version3 --enable-sdl2 --enable-fontconfig --enable-gnutls --enable-iconv --enable-libass --enable-libbluray -
-enable-libfreetype --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-libopus --enable-libshine
--enable-libsnappy --enable-libsoxr --enable-libtheora --enable-libtwolame --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx264 --e
nable-libx265 --enable-libxml2 --enable-libzimg --enable-lzma --enable-zlib --enable-gmp --enable-libvidstab --enable-libvorbis --enable-libvo-amrwbe
nc --enable-libmysofa --enable-libspeex --enable-libxvid --enable-libaom --enable-libmfx --enable-amf --enable-ffnvcodec --enable-cuvid --enable-d3d1
1va --enable-nvenc --enable-nvdec --enable-dxva2 --enable-avisynth
libavutil 56. 23.101 / 56. 23.101
libavcodec 58. 39.100 / 58. 39.100
libavformat 58. 22.100 / 58. 22.100
libavdevice 58. 6.100 / 58. 6.100
libavfilter 7. 46.100 / 7. 46.100
libswscale 5. 4.100 / 5. 4.100
libswresample 3. 4.100 / 3. 4.100
libpostproc 55. 4.100 / 55. 4.100
Trailing options were found on the commandline.
Input #0, flac, from 'C:\Users\123\Music\Ben Webster - Art Tatum Quartet [1956]\15 Art Tatum and Ben Webster - All the things you are (Art Tatum
1953).flac':
Metadata:
track :
15
DATE :
1956
TITLE :
All the things you are (Art Tatum 1953
)
ARTIST :
Art Tatum and Ben Webste
r
ALBUM :
The Art Tatum В· Ben Webster quartet
GENRE :
Jazz
NOTES :
Medieval CUE Splitter (www.medieval.it
)
album_artist :
VA
TOTALTRACKS :
15
Duration:
00:06:01.4
0
, start:
0.000000
, bitrate:
478 kb/s
Stream #0:
0
: Audio: flac, 44100 Hz, stereo, s16
At least one output file must be specified
В чём ошибка?
|
Оформите запуск через Start-Process
|
DJ Mogarych |
24-11-2018 12:13 2842370 |
Код:
Start-Process "ffmpeg -i ""$ifile"" $qualityaudio ""$path\$ofile$extout"""
даёт
Код:
Start-Process : Не удается выполнить команду из-за следующей ошибки: Не удается найти указанный файл.
C:\Users\123\Desktop\ffmpeg.ps1:11 знак:1
+ Start-Process "C:\scripts\ffmpeg\bin\ffmpeg.exe -i ""$ifile"" $qualit ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation: (:) [Start-Process], InvalidOperationException
+ FullyQualifiedErrorId : InvalidOperationException,Microsoft.PowerShell.Commands.StartProcessCommand
Код:
Start-Process ffmpeg -i ""$ifile"" $qualityaudio ""$path\$ofile$extout""
даёт
Код:
Start-Process : Не удается обработать параметр, так как имя параметра "i" неоднозначно. Возможные совпадения: -InformationAction -InformationVariable
.
C:\Users\123\Desktop\ffmpeg.ps1:11 знак:48
+ Start-Process C:\scripts\ffmpeg\bin\ffmpeg.exe -i ""$ifile"" $quality ...
+ ~~
+ CategoryInfo : InvalidArgument: (:) [Start-Process], ParameterBindingException
+ FullyQualifiedErrorId : AmbiguousParameter,Microsoft.PowerShell.Commands.StartProcessCommand
|
Код:
ffmpeg -i $ifile -aq 0 $ifile.replace('.flac','.mp3')
Для -q:a 0, должно быть:
|
DJ Mogarych |
24-11-2018 13:47 2842385 |
Спасибо, с методом replace гораздо удобнее!
Интересно, что работать-то работает, но всё равно ругается, и шрифт красный:
Код:
ffmpeg : ffmpeg version N-92510-gfa08345e88 Copyright (c) 2000-2018 the FFmpeg developers
C:\Users\123\Desktop\ffmpeg.ps1:12 знак:1
+ ffmpeg -i ""$ifile"" '-q:a' $qualityaudio $ifile.replace($extin, $ext ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (ffmpeg version ...mpeg developers:String) [], RemoteException
+ FullyQualifiedErrorId : NativeCommandError
|
Тогда привести полный скрипт.
|
Можно использовать stop-parsing символ '--%'
Код:
man about_Special_Characters
|
DJ Mogarych |
28-11-2018 14:06 2843076 |
Kazun, всё в порядке, если запускать скрипт не в ISE.
|
android63rus |
30-11-2018 14:43 2843432 |
Цитата:
Цитата DJ Mogarych
если запускать скрипт не в ISE. »
|
интересно, в чем разница?
|
Время: 15:04.
© OSzone.net 2001-