0

我正在为 ffmpeg 编写一个 python GUI。通过子进程调用 ffmpeg 时,只要命令类似,它就可以正常运行

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”这样简单的东西替换了实际的目标文件,但仍然是同样的错误。有任何想法吗?(我在使用 python 3.3 的 Windows 上。)

完整的控制台输出为:

    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
4

2 回答 2

0

我认为您需要-q:a 4作为单独的值传递-q:a4.

于 2015-01-06T15:33:54.507 回答
0

尝试这个:

subprocess.Popen([ffmpeg_converter, '-i',file, '-q:a', '4' target_file ])

您将选项字符串作为一个参数而不是两个参数传递。

于 2016-12-02T10:32:59.753 回答