在python

时间:2018-07-03 07:27:25

标签: bash shell unix ffmpeg

当我从外壳运行此命令时,它运行完美。

ffmpeg -nostdin -i /data/binil/v2t_final/output/cnbctv18/2018_07_02_14_38_30/tmp/merged.avi -ss 00:00:00 -vcodec h264 -vf fps=25 -to 00:6:43 /data/binil/v2t_final/output/cnbctv18/2018_07_02_14_38_30/1/1.avi

但是当我在python中做同样的事情也会出错:

import sys
import os

INPUT_DIR = sys.argv[1]
INPUT_VIDEO = sys.argv[2]
OUTPUT_PATH = sys.argv[3]
SOURCE = sys.argv[4]
DATE = sys.argv[5]

INPUT = INPUT_DIR+"sorted_result.txt"
COUNT=1
initial="00:00:00"

with open(INPUT,"r") as f:
  for line in f.readlines():
    OUT_DIR = OUTPUT_PATH+str(COUNT)
    directory = os.path.abspath(OUT_DIR)
    print('OUT DIR',OUT_DIR)
    print('directory',directory)
    try:
      os.mkdir(directory)
    except:
      pass
    cmd_1 = "ffmpeg -nostdin -i "+INPUT_VIDEO+" -ss " +initial+ " -vcodec h264 -vf fps=25 -to " +line+ " " +OUT_DIR+"/"+str(COUNT)+".avi"
os.system(cmd_1)
    COUNT += 1
    initial=line

我不明白这个问题:

错误如下:

ffmpeg version 4.0-static https://johnvansickle.com/ffmpeg/  Copyright (c) 2000-2018 the FFmpeg developers
  built with gcc 6.3.0 (Debian 6.3.0-18+deb9u1) 20170516
  configuration: --enable-gpl --enable-version3 --enable-static --disable-debug --disable-ffplay --disable-indev=sndio --disable-outdev=sndio --cc=gcc-6 --enable-libxml2 --enable-fontconfig --enable-frei0r --enable-gnutls --enable-gray --enable-libaom --enable-libfribidi --enable-libass --enable-libfreetype --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-librubberband --enable-libsoxr --enable-libspeex --enable-libvorbis --enable-libopus --enable-libtheora --enable-libvidstab --enable-libvo-amrwbenc --enable-libvpx --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxml2 --enable-libxvid --enable-libzimg
  libavutil      56. 14.100 / 56. 14.100
  libavcodec     58. 18.100 / 58. 18.100
  libavformat    58. 12.100 / 58. 12.100
  libavdevice    58.  3.100 / 58.  3.100
  libavfilter     7. 16.100 /  7. 16.100
  libswscale      5.  1.100 /  5.  1.100
  libswresample   3.  1.100 /  3.  1.100
  libpostproc    55.  1.100 / 55.  1.100
Trailing options were found on the commandline.
Input #0, avi, from '/data/binil/v2t_final/output/cnbctv18/2018_07_02_14_38_30/tmp/merged.avi':
  Metadata:
    encoder         : Lavf58.12.100
  Duration: 01:00:50.23, start: 0.000000, bitrate: 1334 kb/s
    Stream #0:0: Video: h264 (High) (H264 / 0x34363248), yuv420p(progressive), 512x288 [SAR 1:1 DAR 16:9], 1001 kb/s, 25 fps, 25 tbr, 25 tbn, 50 tbc
    Stream #0:1: Audio: mp3 (U[0][0][0] / 0x0055), 48000 Hz, stereo, fltp, 639 kb/s
At least one output file must be specified
sh: line 1: /data/binil/v2t_final/output/cnbctv18/2018_07_02_14_38_30/1/1.avi: Permission denied

请帮助。 这是我正在写的一些虚拟文本,因为它看起来像堆栈溢出不接受更少的描述和更多的代码。请不要介意这些句子。我不敢相信我仍在写这篇文章,它仍然要求我添加更多描述。我还在做。不知道要写多少程度。我希望这足够了。

1 个答案:

答案 0 :(得分:0)

得到了错误。 输入文件包含一个新行中的每个时间戳,因此在ffmpeg命令中它使用了'\ n'字符以及时间戳。因此,它认为-vcodec是新命令,并导致错误。