Я пишу графический интерфейс python для ffmpeg. При вызове FFmpeg через подпроцесс он прекрасно работает до тех пор, как команда, какpython вызов ffmpeg misses параметр целевого файла
subprocess.Popen([ffmpeg_converter,
'-i',file,
target_file
])
Но когда я делаю то же вызов с аргументами FFmpeg он терпит неудачу с «По крайней мере, один выходной файл должен быть указан»:
option_string = '-q:a 4'
subprocess.Popen([ffmpeg_converter,
'-i',file,
option_string,
target_file
])
Он даже распознает параметры, но не видит файл цели. Я даже заменил фактический файл цели сопутствующим простым, как «test.mp3», но все равно ту же ошибку. Есть идеи? (. Я на окнах с питоном 3.3)
Полный выход консоли:
ffmpeg version N-57781-g0610d6e Copyright (c) 2000-2013 the FFmpeg developers
built on Nov 1 2013 18:01:35 with gcc 4.8.2 (GCC)
configuration: --enable-gpl --enable-version3 --disable-w32threads --enable-avisynth --enable-bzlib --enable-fontconfig --enable-frei0r --enable-gnutls --enab
le-iconv --enable-libass --enable-libbluray --enable-libcaca --enable-libfreetype --enable-libgsm --enable-libilbc --enable-libmodplug --enable-libmp3lame --ena
ble-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-libopus --enable-librtmp --enable-libschroedinger --enable-libsoxr --enable-libsp
eex --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvo-aacenc --enable-libvo-amrwbenc --enable-libvorbis --enable-libvpx --enable-libwavp
ack --enable-libx264 --enable-libxavs --enable-libxvid --enable-zlib
libavutil 52. 49.100/52. 49.100
libavcodec 55. 40.101/55. 40.101
libavformat 55. 20.105/55. 20.105
libavdevice 55. 5.100/55. 5.100
libavfilter 3. 90.100/3. 90.100
libswscale 2. 5.101/2. 5.101
libswresample 0. 17.104/0. 17.104
libpostproc 52. 3.100/52. 3.100
Trailing options were found on the commandline.
Input #0, flac, from 'c:\script\python\testdata\source\01. Es geht los.flac':
Metadata:
ARTIST : Olivia Trummer Trio
TITLE : Es geht los
ALBUM : Westwind
DATE : 2008
track : 01
GENRE : Jazz
COMMENT : EAC FLAC -8
Duration: 00:06:27.25, bitrate: 834 kb/s
Stream #0:0: Audio: flac, 44100 Hz, stereo, s16
At least one output file must be specified
Какова фактическая команда ffmpeg (и полный вывод консоли), который является результатом вашего кода? – LordNeckbeard
Вы пробовали переходить в полностью построенную строку вместо списка? –
@ Ethan Furman: Да, я попытался построить строку, но столкнулся с еще большими проблемами, поскольку имена файлов с пробелами требуют дополнительного кавычки, и это приводит к довольно сложной строковой композиции в python. Я пробовал что-то вроде call_string = r "'" + ffmpeg_converter + r "' -i '" + os.path.normcase (file) + r "'" + option_string + r "'" + os.path.normcase (target_file) + r "'" – Fred