python 调用ffmpeg 命令行对批量视频进行图片分解并保存到对应文件夹
Posted 一夢浮生
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python 调用ffmpeg 命令行对批量视频进行图片分解并保存到对应文件夹相关的知识,希望对你有一定的参考价值。
import subprocess import os # ffmpeg -i /data/video_1.mp4 -f image2 -vf fps=fps=1/60 -qscale:v 2 /data/mp4-%05d.jpg def videoFileName(videoDir, framesDir, ffmpegCmd): videoFiles = os.listdir(videoDir) for video in videoFiles: sinVideoDir = os.path.join(videoDir, video) if (sinVideoDir.endswith(".avi")): videoName = os.path.basename(sinVideoDir) videoBaseName = videoName.rsplit('.') curVideoFrameOut = framesDir + '\\\\'+ "%04d.jpg" video2framesCmd = ffmpegCmd + " -i " + sinVideoDir + " -f image2 -vf fps=fps=30 -qscale:v 2 " + curVideoFrameOut subprocess.call(video2framesCmd, shell=True) if __name__ == "__main__": ffmpegCmd = "D:\\\\Anaconda3\\\\envs\\\\pytorch1.10\\\\Library\\\\bin\\\\ffmpeg.exe" # ffmpeg 路径 # frameDir = "E://ImageTest//videoTest//" # videoDir = "E://downloads//drumsVideos//" # videoFileName(videoDir, frameDir, ffmpegCmd) frame_baseDir = "E:\\\\pythonfile1\\\\rppg_tdm_talos1\\\\data\\\\UBFC_FACE" # 存放图像序列路径 video_baseDir = "D:\\\\data\\\\UBFC" # 存放视频路径 subjects = os.listdir(video_baseDir) subjects.sort() for i, subject in enumerate(subjects): print(subject) frameDir=os.path.join(frame_baseDir,subject) if not os.path.exists(frameDir): os.makedirs(frameDir) videoDir=os.path.join(video_baseDir,subject) videoFileName(videoDir, frameDir, ffmpegCmd)
注意:保存路径 framesDir 后要加'\\\\'与文件名分隔开
python调用ffmpeg批量转换音频flac、mp3、m4a
参考技术A 查看使用说明: ffmpeg -h 。转换命令如下:
这次我们用到的主要是 -ab 命令,用来指定音频转换的比特率,常见的有: 192K, 320K 等。
以上是关于python 调用ffmpeg 命令行对批量视频进行图片分解并保存到对应文件夹的主要内容,如果未能解决你的问题,请参考以下文章