为什么使用CV2转换后的视频文件(较低分辨率)比原始文件(高分辨率)大

时间:2020-03-14 05:08:04

标签: python opencv video-processing

我尝试使用cv2将视频文件的分辨率从854x480更改为较低的640x480分辨率,目的是减小大小,但是当原始文件为3.2MB时,转换后的文件为8.3MB。我还保持了相同的视频格式。我是视频处理新手。为什么会发生这种情况,我该如何修改以下代码以获得更好的结果?

提前谢谢!

这是我使用的代码:

    import cv2
    import numpy as np

    cap = cv2.VideoCapture(r'C:\Users\CSC\Desktop\SmartDesert\1.mp4')

    fourcc = cv2.VideoWriter_fourcc(*'mp4v')
    out = cv2.VideoWriter(r'C:\Users\CSC\Desktop\SmartDesert\1_Output.mp4', fourcc, 25, (640, 480))

    while True:
        ret, frame = cap.read()
        if ret == True:
            b = cv2.resize(frame, (640, 480), fx=0, fy=0, interpolation=cv2.INTER_CUBIC)
            out.write(b)
        else:
            break

    cap.release()
    out.release()
    cv2.destroyAllWindows()

1 个答案:

答案 0 :(得分:0)

根据维基百科,mp4只是一种数字多媒体容器格式。这意味着mp4提供了一种在一个屋顶下捆绑音频流和视频流的方法,即.mp4文件。在捆绑过程中,音频和视频经过压缩编解码器,最终被转换为输出文件。

.mp4容器支持各种视频编解码器。您用来编写视频的那个是mp4v。 mp4v是原始mpeg-4视频流,因此尽管调整了大小,但这可能会增加视频的大小。

尝试使用其他编解码器可能会有所帮助。阅读this,了解可以与.mp4一起使用的各种编解码器

干杯!