

Once the Python code works, then have it call n(). You might even want to stub out the Python n() call so that you can check the parameters. Once the script file works, and it generates the video result that you want, only then try to write a Python program which generates the parameters for ffprobe, and reads output from ffprobe, and generates the parameters for ffmpeg.

You should, for example, be able to figure out how to make a script which works for videos which have no audio, without touching Python. Transform that output into parameters for ffmpeg manually. Figure out what parameters you need to pass to ffprobe, and what output it gives you in return. Make a batch or script file which contains calls to ffmpeg and ffprobe commands, appropriate for just one video. My suggestion is to separate the Python questions from the ffmeg and ffprobe questions. I have done some work driving ffmeg and ffprobe from Python, so I sympathise with your situation. Hello, Adeshina Ibrahim, and welcome to Python. Timepairs = get_blackdetect(args.input, invert=args.invert)Ĭmd = construct_ffmpeg_trim_cmd(timepairs, args.input, outpath) (times, times) for i in range(0, len(times) // 2, 2) Subprocess.check_output(shlex.split(ffprobe_cmd))įloat(x.split("=").strip()) for x in delete_back2back(lines) if xĪssert len(times), "no black scene detected" #FIXME: sadly you must chdir so that the ffprobe command will workĪrgs.input = os.path.split(args.input)ĭef construct_ffmpeg_trim_cmd(timepairs, inpath, outpath):Ĭmd = f'ffmpeg -i ",blackdetect" -show_entries tags=lavfi.black_start,lavfi.black_end -of default=nw=1 -v quiet' Help="remove nonblack instead of removing black", Parser.add_argument("input", type=str, help="input video file") _doc_, formatter_class=argparse.ArgumentDefaultsHelpFormatter Script doesn’t work if video has no audio in ffprobe to extract black frames and ffmpeg to trim them and output a new video.green-screen or red-screen or blurry part of video I also want to detect other colors aside black-screen e.g.I want to have only g g g g where all B B B B has been removed if gBgBgBgB represents a sequence of good and BAD frames for 5sec each, the script only returned the first g(5sec) and cut off the other BgBgBgB after it. It cut off all other good frames together with the first bad frames.The script worked for me but the problems are: I used the script below (reference: to first auto detected black-screen frames using ffprobe and trim them out using ffmpeg. I am working on an ETL process, and I’m now in the final stage of preprocessing my videos.
