Python - 播放带音频的视频(使用 OpenCV?)

hoo*_*oot 4 python opencv ffmpeg

这可能是一个愚蠢的问题,我已经搜索过这个,但没有找到一个直接的答案:

您可以使用 OpenCV 和 FFMPEG 播放带音频的视频吗?

如果不是,那么最好的方法是什么?看起来很简单,但我对 Python 太陌生了,我不知道该期待什么/要搜索什么。

谢谢!

Tam*_*n S 6

使用 ffpyplayer 处理音频部分。

import cv2
import numpy as np
#ffpyplayer for playing audio
from ffpyplayer.player import MediaPlayer
video_path="../L1/images/Godwin.mp4"
def PlayVideo(video_path):
    video=cv2.VideoCapture(video_path)
    player = MediaPlayer(video_path)
    while True:
        grabbed, frame=video.read()
        audio_frame, val = player.get_frame()
        if not grabbed:
            print("End of video")
            break
        if cv2.waitKey(28) & 0xFF == ord("q"):
            break
        cv2.imshow("Video", frame)
        if val != 'eof' and audio_frame is not None:
            #audio
            img, t = audio_frame
    video.release()
    cv2.destroyAllWindows()
PlayVideo(video_path)
Run Code Online (Sandbox Code Playgroud)

示例代码将起作用,但您需要根据视频的速度播放 cv2.waitKey(28)。

  • 很好的答案。您可以根据视频的 FPS 来计算它,而不是猜测 waitKey 的毫秒睡眠值: `video = cv2.VideoCapture(video_path)`, `fps = video.get(cv2.CAP_PROP_FPS)`, `sleep_ms = int( numpy.round((1/fps)*1000))` (3认同)