Me gustaría ejecutar el siguiente comando en un script de python, también quiero que se reproduzca en varios videos en una carpeta. Este es el comando que quiero ejecutar.
ffmpeg -i mymovie.avi -f image2 -vf fps=fps=1 output%d.png
Quiero encajar en algo como esto:
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*Encontré un contenedor para ffmpeg llamado ffmpy, ¿podría ser una solución?
Con un breve vistazo a FFMPY, puede hacer esto usando ffmpy.FFmpeg, ya que permite todas y cada una de las opciones de línea de comandos de FFMPEG, incluido -f. -- Haga clic en el enlace para la documentación.
Puede ejecutar el comando FFMPEG con os.system . Deberá importar el sistema operativo de todos modos para iterar a través de los archivos.
Sin embargo, necesitaría iterar a través de todos los archivos en un directorio. Esta sería la parte más desafiante, sin embargo, es bastante fácil con un bucle for.
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 El código anterior itera a través del directorio en la path y usa el símbolo del sistema para ejecutar su comando FFMPEG dado, usando el nombre del archivo (si es un archivo de video) en lugar de mymovie.avi
No tengo reputación para comentar, por lo tanto, agregue otra respuesta.
Otra versión de la respuesta de ocelot con la sintaxis de cadena f más legible de python:
for filename in os.listdir(path): if (filename.endswith(".mp4")): #or .avi, .mpeg, whatever. os.system(f'ffmpeg -i {filename} -f image2 -vf fps=fps=1 output%d.png') else: continuePruebe pydemux en https://github.com/Tee0125/pydemux . El módulo Pydemux puede extraer cuadros de video como en formato de imagen de almohada
from PyDemux import Video v = Video.open('video.mov') i = 0 while True: im = v.get_frame() if im is None: break im.save('output%d.png'%i) i = i + 1