下面代码主要实现利用python调用FFmpeg来实现对视频文件中的音频流和视频流的批量提取和保存,以及视频格式的转换。
实现环境为Ubuntu环境下 python3.6.5。
# coding=UTF-8
import os, sys
import subprocess
from scipy.io import wavfile
def ffmpeg_VideoToAudio(VideoPath):
files = os.listdir(VideoPath)
# files_list存放的为所有视频文件的文件名+路径
files_list = [VideoPath + f for f in files if f.endswith(('.avi','.mp4'))]
for file in files_list:
wavName=os.path.splitext(file)[0]
wavNameNew=wavName+'_Changed'
# 提取视频中的音频信息
strcmd="ffmpeg -i " + file + " -f wav " + wavNameNew + ".wav"+ " -y"
subprocess.call(strcmd,shell=True)
# 提取视频中的视频信息
strcmd2="ffmpeg -i " + file + " -vcodec copy -an -r 25 " + wavNameNew + ".avi"+ " -y"
subprocess.call(strcmd2,shell=True)
VideoPath='./'
ffmpeg_VideoToAudio(VideoPath)
在Ubuntu环境下,也可以直接使用下面代码直接提取视频流中的音频信息。
ffmpeg -i 你的视频文件名 -f wav 你要保存的文件名.wav -y
若要直接提取视频流中的视频信息,则可以:
ffmpeg -i 你的视频文件名 -vcodec copy -an -r 你要保存的帧率 你要保存的文件名 -y
如有问题请指出。