0

我正在寻找一种方法,如何使用 python 从视频文件中提取视频帧和相应的音频片段。我很了解opencv。但它只允许提取视频帧。没有提供音频。我需要两者 - 彼此完全对应的视频帧和音频片段。

将非常感谢任何提示:)

4

2 回答 2

5

最后我找到了moviepy https://pypi.python.org/pypi/moviepy,它实现了ffmpeg的light wrapper,并提供了快速获取同时位置的视频和音频帧的接口。您可能会在下面找到示例:

from moviepy.editor import *

video = VideoFileClip('your video filename')
audio = video.audio
duration = video.duration # == audio.duration, presented in seconds, float
#note video.fps != audio.fps
step = 0.1
for t in range(int(duration / step)): # runs through audio/video frames obtaining them by timestamp with step 100 msec
    t = t * step
    if t > audio.duration or t > video.duration: break
    audio_frame = audio.get_frame(t) #numpy array representing mono/stereo values
    video_frame = video.get_frame(t) #numpy array representing RGB/gray frame

除了提取 a/v 帧之外,moviepy 还为音频/视频剪辑修改提供了广泛的功能范围。

于 2017-08-11T15:09:48.930 回答
1

您是正确的,您无法通过 openCV 获取音频。最好的办法是分别提取视频帧和音频,然后从那里进行操作。一些可能有帮助的工具包括:

ffmpy

ffmpeg(通过子进程)

您可以在此处了解有关此相关堆栈溢出答案的子处理 ffmpeg 的更多信息:https ://stackoverflow.com/a/26741357/7604321

从那时起,您可以加载音频文件并与视频帧一起处理。

如果您的问题没有更多信息,我无法提出更多建议。

于 2017-08-10T09:31:44.717 回答