import os
import ffmpeg
import shlex
import subprocess
import time
# 每隔一秒提取一张图片
# ffmpeg -i xxx.mp4 -r 1 yyy_%04d.jpg -y
str = 'ffmpeg -i {} -r 1 {}'
input_dir = 'D:\\360Downloads\\ffmpeg-4.3.1-win64-shared\\test\\test3\\in'
output_dir = 'D:\\360Downloads\\ffmpeg-4.3.1-win64-shared\\test\\test3\\outpics'
# 拼接图片为视频
str2 = 'ffmpeg -r 5 -f image2 -i {}image-%4d.jpg -vf scale=-1:480 {}'
# -r 每秒5张
# ffmpeg -f image2 -i %d.jpeg -vf scale=-1:480 output5.mp4
# D:\360Downloads\ffmpeg-4.3.1-win64-shared\test\test3\outpics\image-0001.jpg
def getPic():
for name in os.listdir(input_dir):
input_video_path = os.path.join(input_dir, name)
output_img_path = os.path.join(output_dir, 'image-%4d.jpg')
str_cmd = str.format(input_video_path, output_img_path)
print(str_cmd)
p = subprocess.Popen(str_cmd, shell=True, stdout=None, stderr=None)
stdout, stderror = p.communicate()
def getMp4():
input_pic_path='D:\\360Downloads\\ffmpeg-4.3.1-win64-shared\\test\\test3\\outpics\\'
output_p4_path_file='D:\\360Downloads\\ffmpeg-4.3.1-win64-shared\\test\\test3\\out.mp4'
str_cmd2 = str2.format(input_pic_path, output_p4_path_file)
print(str_cmd2)
p = subprocess.Popen(str_cmd2, shell=True, stdout=None, stderr=None)
stdout, stderror = p.communicate()
if __name__ == '__main__':
getPic()
print("----pic over")
time.sleep(1)
getMp4()
print("----mp4 over")