我使用python opencv2将jpg帧连接到视频,但我无法添加音频。可以在没有ffmpeg的情况下在python中为视频添加音频吗?
答案 0 :(得分:1)
使用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)
示例代码可以使用,但您需要根据视频的速度玩cv2.waitKey(28)。
答案 1 :(得分:1)
这是我阅读音频和视频帧的方式:
from moviepy.editor import *
from pafy import pafy
if __name__ == '__main__':
video = pafy.new('https://www.youtube.com/watch?v=K_IR90FthXQ')
stream = video.getbest(preftype='mp4')
video = VideoFileClip(stream.url)
audio = video.audio
for t, video_frame in video.iter_frames(with_times=True):
audio_frame = audio.get_frame(t)
print(audio_frame)
print(video_frame)
此代码下载YouTube视频并以numpy数组返回原始帧。 您可以将文件作为参数而不是URL传递给VideoFileClip。
答案 2 :(得分:1)
您可以将pygame用于音频。 您需要初始化pygame.mixer模块 然后在循环中添加pygame.mixer.music.play() 但是为此,您还需要选择音频文件。
但是,我找到了更好的主意!您可以使用webbrowser模块来播放视频(并且因为它可以在浏览器中播放,所以您可以听到声音!)
导入网络浏览器 webbrowser.open(“ video.mp4”)