You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用cv2生成AVI后添加音频出现色彩异常的问题求助

视频编解码器导致色彩异常问题

操作流程

1. 用OpenCV提取MP4帧为JPG文件

vidcap = cv2.VideoCapture(inp_file)
success, image = vidcap.read()
cv2.imwrite("raw_frames/frame%d.jpg"%count, image)
success, image = vidcap.read()
count += 1

2. 处理帧后合成AVI视频

img = Image.open(file)
width, height = img.size
frameSize = (width, height)
outfile = inp_file.split(".")[0] + '_asc'
out = cv2.VideoWriter(outfile+'.avi', cv2.VideoWriter_fourcc(*'DIVX'), ffps, frameSize)
path = "rendered_frames"
for img_i in range(len(all_images)):
    img = cv2.imread(path+"/rf_"+str(img_i)+"+.jpg")
    out.write(img)
print("\tVideo complete!")
out.release()

3. 用MoviePy为AVI添加原MP4音频

def combine_audio(vidname, audname, outname, fps):
    from moviepy.video.io.VideoFileClip import VideoFileClip
    from moviepy.audio.io.AudioFileClip import AudioFileClip
    my_clip = VideoFileClip(vidname)
    audio_background = AudioFileClip(audname)
    final_clip = my_clip.set_audio(audio_background)
    final_clip.write_videofile(outname, fps=fps, codec='rawvideo')

combine_audio(outfile+'.avi', inp_file, outfile+"ii.avi", ffps)

问题现象

添加音频后的视频出现色彩异常:人物皮肤变为紫色、原本的紫色物体变成红色,仅白色区域基本保持不变。但OpenCV直接生成的AVI视频显示完全正常。

对比说明:

  • 原图:色彩显示正常,人物肤色自然,紫色物体颜色准确
  • 处理后:肤色呈紫色调,原紫色物体转为红色,白色区域无明显变化

已尝试的无效方案

  • 改用MP4V编码生成MP4视频,搭配对应编解码器添加音频,但压缩率过高,无法满足视频精度需求
  • 按照MoviePy文档留空codec字段,运行直接报错
  • 发现OpenCV生成的DIVX编码AVI在VLC中显示编解码器为MPEG-4(FMP4),但MoviePy不识别该编解码器

内容的提问来源于stack exchange,提问作者Adam Jones

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 21:31:18