Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

ffmpeg in python script

I would like to run the following command in a python script, I also want to make it loop over several videos in a folder. This is the command I want to run.

ffmpeg -i mymovie.avi -f image2 -vf fps=fps=1 output%d.png

I want to fit it in something like this:

import ffmpy
import os

path = './Videos/MyVideos/'
for filename in os.listdir(path):
    name = filename.replace('.avi','')
    os.mkdir(os.path.join(path,name))
    *ffmpeg command here*

I found a wrapper for ffmpeg called ffmpy, could this be a solution?

like image 479
jawwe Avatar asked Feb 24 '17 12:02

jawwe


1 Answers

From a brief look at FFMPY, you could do this using ffmpy.FFmpeg, as that allows any and all FFMPEG command line options, including -f. -- Click the link for documentation.

You could do the FFMPEG command with os.system. You'll need to import OS anyway to iterate through the files.

You would need to iterate through all the files in a directory though. This would be the more challenging bit, it's quite easy with a for loop though.

for filename in os.listdir(path):
    if (filename.endswith(".mp4")): #or .avi, .mpeg, whatever.
        os.system("ffmpeg -i {0} -f image2 -vf fps=fps=1 output%d.png".format(filename))
    else:
        continue

The above code iterates through the directory at path, and uses command prompt to execute your given FFMPEG command, using the filename (if it's a video file) in place of mymovie.avi

like image 78
ocelot Avatar answered Oct 18 '22 14:10

ocelot