cv2 只有影像,没有声音。 只播影像简单方法如下:
上一篇 cv2影像播放方式
如果还要加上声音,就要借助 ffpyPlayer了,基本写法如下:
from ffpyplayer.player import MediaPlayerfilename = 'YourVideo.mp4'player = MediaPlayer(filename)val = ''while val != 'eof': frame, val = player.get_frame() if val != 'eof' and frame is not None: img, t = frame
不过,要先安装 ffmpeg,安装设定方式,可参考官方说明。
现在,把两者加在一起,让cv2 播影片时有声音了。( 按Esc中断播放 )
Source Code GitHub
''' videoCVffp.py cv2 + ffpyPlayer 播放 Video + sound 请先安装 ffmpeg '''import cv2from ffpyplayer.player import MediaPlayerfilename = 'YourVideo.mp4'# cv 设定video = cv2.VideoCapture(filename)FPS = int(video.get(cv2.CAP_PROP_FPS)) # Frames per Seccv2.namedWindow('video',cv2.WINDOW_KEEPRATIO) cv2.resizeWindow('video', 500,300) cv2.moveWindow('video',300,200)# 声音 设定player = MediaPlayer(filename)# 开始播放val = ''while val != 'eof': # 声音在此 audio_frame, val = player.get_frame() if val != 'eof' and audio_frame is not None: img, t = audio_frame print(val, t, img.get_pixel_format(), img.get_buffer_size()) # 影像在此 ret, frame = video.read() # if 影片末尾 if not ret: print("End of video") break # if 按Esc 中断 if cv2.waitKey(FPS) == 27: break cv2.imshow('video', frame) #--- endingvideo.release()cv2.destroyAllWindows()player.close_player()