ffmpeg At At least one output file must be specified 错误

ffmpeg At least one output file must be specified error

我该如何解决这个问题;(帮帮我.... 如果我只输入 "'ffmpeg -i ' + video_path + ' -q:v 2 -f image2 ' + frame_path + '\image_%6d.jpg'" 在带有特定路径名的提示中。 但它在 .py 中不起作用(我使用 .py 中的代码-> os.system('ffmpeg -i ' + video_path + ' -q:v 2 -f image2 ' + frame_path + '\image_%6d.jpg')

''' ffmpeg 版本 4.3.1 版权所有 (c) 2000-2020 FFmpeg 开发人员 使用 gcc 10.2.1 (GCC) 20200726 构建 配置:--disable-static--enable-shared--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 --enable-libgsm --enable-librav1e --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. 51.100 / 56. 51.100 libavcodec 58. 91.100 / 58. 91.100 libav格式 58. 45.100 / 58. 45.100 libavdevice 58. 10.100 / 58. 10.100 libavfilter 7. 85.100 / 7. 85.100 libswscale 5. 7.100 / 5. 7.100 libswresample 3. 7.100 / 3. 7.100 libpostproc 55. 7.100 / 55. 7.100 [mov,mp4,m4a,3gp,3g2,mj2 @ 000002629ef05540] 流 0,未设置时间刻度 输入 #0,mov,mp4,m4a,3gp,3g2,mj2,来自 'E:\dataset\Videos\Arrest\Arrest007_x264.mp4': 元数据: major_brand:异体 minor_version : 512 compatible_brands:isomiso2avc1mp41 轨道 : 0 艺术家 : 专辑: 日期:0 类型 : 歌词: 标题 : 编码器:Lavf56.36.100 持续时间:00:01:44.84,开始:0.000000,比特率:1499 kb/s 流 #0:0(und):视频:h264(约束基线)(avc1 / 0x31637661),yuv420p,320x240 [SAR 1:1 DAR 4:3],1387 kb/s,30 fps, 30 tbr、15360 tbn、60 tbc(默认) 元数据: handler_name:视频处理器 流 #0:1(eng):音频:aac (LC) (mp4a / 0x6134706D),44100 Hz,立体声,fltp,105 kb/s(默认) 元数据: handler_name:声音处理器 流 #0:2:视频:png、rgb24(pc)、58x38 [SAR 304:261 DAR 16:9]、90k tbr、90k tbn、90k tbc(附图) 必须至少指定一个输出文件 '''

利用有用的(并且更安全)built-in packages/functions:

from os import path
import subprocess as sp

sp.run(['ffmpeg','-i', video_path, 
                 '-q:v','2','-f','image2',
                 path.join(frame_path,'image_%6d.jpg')])

我怀疑你的调用是因为文件路径中未转义的反斜杠而导致的。 subprocess.run 从本质上避免了系统调用带来的麻烦。