微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

添加噪声后如何使用压缩来减小视频文件大小?

如何解决添加噪声后如何使用压缩来减小视频文件大小?

我正在尝试向视频文件添加噪音。目标是在视频中引入噪声,然后保存。

目前的方法

  • 迭代视频的帧。
  • 向每一帧添加噪点,然后保存。 # 添加来自 skimage 的高斯噪声
  • 最后,合并帧并保存视频

代码

void addReason(reasonList* list)
{
    printf("Enter a resone to add to list %s:\n",list->listName);
    list->reasons[list->numReasons] = malloc(STR_LEN); /* allocate buffer */
    if (list->reasons[list->numReasons] == NULL) return; /* check if allocation succeeded */
    fgets(list->reasons[list->numReasons],STR_LEN,stdin);
    list->reasons[strcspn(list->reasons[list->numReasons],'\n')] = '\0';
    list->numReasons++;
}

合并框架

cam = cv2.VideoCapture(clip_file_path)
while frame < end:
   ret_val,input_image = cam.read()
   input_image = cv2.cvtColor(input_image,cv2.COLOR_BGR2RGB)
   noisy_img = add_noise(input_image,mode) # Adding gaussian noise from skimage
   save_frame()

这些是获得的文件大小:

  • 原始视频文件:1.5 MB
  • 合并后获得的视频:53.7 MB
  • 使用压缩后获得的视频:39.6 MB frame_rate = 30 codec = cv2.VideoWriter_fourcc(*'mp4v') out = cv2.VideoWriter(output_video_path,codec,frame_rate,(width,height)) for frame in range(starting_frame,ending_frame): image = cv2.imread(frame_path_template.format(frame_path=full_extracted_frames_path,pid=pid,exercise_type=exercise_type,frame_number=frame)) out.write(image) out.release() cv2.destroyAllWindows()
  • 使用压缩和 crf 28 后获得的视频:16.2 MB ffmpeg -i P33_R.mp4 -vcodec libx264 output1.mp4

我希望最终文件的大小与原始文件的大小相同。真的可以这样做吗?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。