当前位置: 首页 > 知识库问答 >
问题:

仅ubuntu上的ffmpeg python子进程错误

微生俊材
2023-03-14
ffmpeg -i {video_file} -vf fps={fps}
(standard_in) 1: syntax error
ffmpeg version 3.2.4-static http://johnvansickle.com/ffmpeg/  Copyright (c) 2000-2017 the FFmpeg developers
  built with gcc 5.4.1 (Debian 5.4.1-5) 20170205
  configuration: --enable-gpl --enable-version3 --enable-static --disable-debug --disable-ffplay --disable-indev=sndio --disable-outdev=sndio --cc=gcc-5 --enable-fontconfig --enable-frei0r --enable-gnutls --enable-gray --enable-libass --enable-libfreetype --enable-libfribidi --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-libopus --enable-librtmp --enable-libsoxr --enable-libspeex --enable-libtheora --enable-libvidstab --enable-libvo-amrwbenc --enable-libvorbis --enable-libvpx --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxvid --enable-libzimg
  libavutil      55. 34.101 / 55. 34.101
  libavcodec     57. 64.101 / 57. 64.101
  libavformat    57. 56.101 / 57. 56.101
  libavdevice    57.  1.100 / 57.  1.100
  libavfilter     6. 65.100 /  6. 65.100
  libswscale      4.  2.100 /  4.  2.100
  libswresample   2.  3.100 /  2.  3.100
  libpostproc    54.  1.100 / 54.  1.100
Option accurate_seek (enable/disable accurate seeking with -ss) cannot be applied to output url test.mkv -- you are trying to apply an input option to an output file or vice versa. Move this option before the file it belongs to.
Error parsing options for output file test.mkv.
Error opening output files: Invalid argument
import subprocess
command = "for i in {0..3} ; do ffmpeg -accurate_seek -ss `echo $i*60.0 | bc` -i test.mkv -frames:v 1 images/test_img_$i.jpg ; done"
process = subprocess.Popen(command, stdout=subprocess.PIPE, stderr = subprocess.STDOUT, shell=True)
output = process.communicate()
print output[0].replace('\\n' , '\n')
ffmpeg version 3.0.2 Copyright (c) 2000-2016 the FFmpeg developers
  built with Apple LLVM version 7.3.0 (clang-703.0.31)
  configuration: --prefix=/usr/local/Cellar/ffmpeg/3.0.2 --enable-shared --enable-pthreads --enable-gpl --enable-version3 --enable-hardcoded-tables --enable-avresample --cc=clang --host-cflags= --host-ldflags= --enable-opencl --enable-libx264 --enable-libmp3lame --enable-libxvid --enable-libvpx --enable-vda
  libavutil      55. 17.103 / 55. 17.103
  libavcodec     57. 24.102 / 57. 24.102
  libavformat    57. 25.100 / 57. 25.100
  libavdevice    57.  0.101 / 57.  0.101
  libavfilter     6. 31.100 /  6. 31.100
  libavresample   3.  0.  0 /  3.  0.  0
  libswscale      4.  0.100 /  4.  0.100
  libswresample   2.  0.101 /  2.  0.101
  libpostproc    54.  0.100 / 54.  0.100
  Input #0, matroska,webm, from 'test.mkv':
  Metadata:
    COMPATIBLE_BRANDS: iso6avc1mp41
    MAJOR_BRAND     : dash
    MINOR_VERSION   : 0
    ENCODER         : Lavf57.25.100
  Duration: 00:02:10.20, start: 0.007000, bitrate: 2729 kb/s
    Stream #0:0: Video: h264 (High), yuv420p(tv, bt709), 1920x1080 [SAR 1:1 DAR 16:9], 23.98 fps, 23.98 tbr, 1k tbn, 47.95 tbc (default)
    Metadata:
      HANDLER_NAME    : VideoHandler
      DURATION        : 00:02:10.172000000
    Stream #0:1(eng): Audio: opus, 48000 Hz, stereo, fltp (default)
    Metadata:
      DURATION        : 00:02:10.201000000
      [swscaler @ 0x7f9b4b008000] deprecated pixel format used, make sure you did set range correctly
Output #0, image2, to 'images/test_img_0.jpg':
  Metadata:
    COMPATIBLE_BRANDS: iso6avc1mp41
    MAJOR_BRAND     : dash
    MINOR_VERSION   : 0
    encoder         : Lavf57.25.100
    Stream #0:0: Video: mjpeg, yuvj420p(pc), 1920x1080 [SAR 1:1 DAR 16:9], q=2-31, 200 kb/s, 23.98 fps, 23.98 tbn, 23.98 tbc (default)
    Metadata:
      HANDLER_NAME    : VideoHandler
      DURATION        : 00:02:10.172000000
      encoder         : Lavc57.24.102 mjpeg
    Side data:
      unknown side data type 10 (24 bytes)
      Stream mapping:
  Stream #0:0 -> #0:0 (h264 (native) -> mjpeg (native))
  Press [q] to stop, [?] for help
frame=    1 fps=0.0 q=7.2 Lsize=N/A time=00:00:00.04 bitrate=N/A speed=   1x    
video:73kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: unknown
....

其他堆栈溢出引用:使用FFMPEG提取帧的最快方法?

共有1个答案

柴凌
2023-03-14

问题是范围表示法{0.3},它在bash中有效,但在其他shell中不有效。虽然我的Ubuntu系统上的正常登录shell是bash,但subprocess.popen()使用shell=true调用/bin/sh,在我的示例中不是bash,而是dash,它不支持大括号展开。

由于范围没有展开,所以循环只运行一次,变量$i包含字符串{0.3}。它传递给bc,导致第一个错误(standard_in)1:syntax error。因此,accurate_seek参数-ssFFMPEG不会获得任何值。

在我的带有破折号shell的Ubuntu系统中,使用seq的循环工作:

$ sh
$ for i in $(seq 0 3); do echo $i; done    
0
1
2
3
$ sh
$ for i in {0..3}; do echo $i; done
{0..3}
 类似资料:
  • 问题内容: 我正在尝试停止始于其所有子进程的进程。 但是,当我调用并且该进程停止时,子进程(中的Web服务器)继续运行。 看起来它只是停止了该进程,但使其子进程(Web服务器)保持运行状态。 杀死整个进程组,包括所有子进程(子进程)。我该怎么做? 我试过,,和,其中没有一个做了什么。 问题答案: 不要使用该命令。使用命令安装软件包和程序,然后执行程序。

  • 问题内容: 我想开始我与JVM OPTS应用:。当应用程序启动时,我通过键入来检查内存使用情况,发现vmsize超过600512 kB!比我的设置大得多。我想知道如何限制进程的jvm内存使用量。 问题答案: 您无法控制要控制的内容 ,只能控制Java Heap,它不能控制JVM 对 本机内存 的使用,JVM的使用根据实现而完全不同。 从下面的文章中感谢内存(了解JVM如何在Windows和Linu

  • 检查Java JDK和Android SDK版本ANDROID_SDK_ROOT=undefined(推荐设置)Android _ HOME = c:\ Users \ Krishna kale \ AppData \ Local \ Android \ SDK(已弃用)JDK 1.8.x需求检查失败!检测到的版本:17.0.1检查你的ANDROID _ SDK _ ROOT/JAVA _ HOM

  • 问题内容: 我正在使用以下函数在Python中运行命令: 它一直都运行良好,但是现在我正尝试使用该程序将输出传递给stdin。我尝试运行的命令如下: 但我相信可以用一般示例代替它,例如: 我的问题是,如果我尝试运行其中包含的任何命令,则上面的subprocess.Popen将包含错误消息: 对我来说,管道似乎仍然有效,从的答案可以看出:。 我有以下问题: 即使yes报告错误,yes管道是否仍然有效

  • XMind警告:发生了非法反射访问操作警告:org.eclipse.osgi.storage.FrameworkExtensionInstaller(文件:/usr/lib/XMind/plugins/org.eclipse.osgi_3.10.101.v20150820-1432.jar)对方法java.net.urlClassLoader.AddURL(java.net.url)的非法反射访问

  • 从带有clang/lld 7和boost 1.65的Ubuntu 18.04升级到带有clang/lld 10和boost 1.71的20.04后,我遇到了一个不知道如何解决的链接器错误。Ubuntu20.04上的clang和boost是不兼容的对吗?在Ubuntu20.04上使用clang进行编译时,我有什么选择? 这个错误的最小例子是 备注: 它与GCC 9和gold Linker配合使用很好