SadTalker数字人增加视频输出mp4质量精度

2023-12-27 06:28

本文主要是介绍SadTalker数字人增加视频输出mp4质量精度,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

最近在用数字人简易方案,看到了sadtalker虽然效果差,但是可以作为一个快速方案,没有安装sd的版本,随便找了个一键安装包

设置如上

 使用倒是非常简单,但是出现一个问题,就是输出的mp4都出马赛克了

界面上却没有一个可以调节mp4生成质量的地方(并非换脸效果),

先说结论

进入SadTalker\src\utils修改videoio.py

cmd = r'ffmpeg -y -hide_banner -loglevel error -i "%s" -i "%s" -vcodec mpeg4 -crf 24 -b:v 400M "%s"' % (video, audio, temp_file)

添加的就是-crf 24 -b:v 400M 用来提高输出质量

另外一个可有可无的修改地方就是(我也忘记有没有用了)SadTalker\src\facerender里的animate.py

imageio.mimsave(path, result,  fps=float(25),codec='libx264', quality=10)

imageio是借助FFmpeg快速读写视频图片

大致就是这两个位置

搜索过程

如果语音时间长了视频效果就更差了,于是进入代码搜索

gen_video = gr.Video(label="视频输出", format="mov").style(width=256)

 里面就gr就是gradio是一个界面库,没有什么可改的,改进去就变成改别人的库了

进入src看看gradio_demo.py这个最大的文件

里面看到cmd = r"ffmpeg -y -hide_banner -loglevel error -i %s %s"表示有视频处理的东西

随后进入src.facerender.animate找到imageio.mimsave处理过程,但是光是改这个并没有用,测试了很多次

突然发现关键一句

save_video_with_watermark(path, new_audio_path, av_path, watermark= False)

这个注释掉了就报错了,然后发现save_video_with_watermark这个方法会在视频生成后,继续对生成的视频处理,然后生成一个低质量的覆盖原始文件,虽然报错,但是能输出一个未压缩的正常mp4文件,但是也没有音频合进去

然后通过from src.utils.videoio import save_video_with_watermark找到了videoio文件,主要是用来合成水印和音频的,水印是默认不开的,但是这个转换过程会降低视频质量

原句r'ffmpeg -y -hide_banner -loglevel error -i "%s" -i "%s" -vcodec mpeg4 "%s"'作用

问了gpt以后

这个命令是一个使用 ffmpeg (一种广泛使用的多媒体处理工具)的命令行字符串,用于将两个输入文件转换并编码为一个输出文件。让我们逐部分来解释这个命令:ffmpeg:这是命令的开始,调用 ffmpeg 程序。
-y:这个选项表示自动覆盖输出文件。如果没有这个选项,当输出文件已经存在时,ffmpeg 会询问是否覆盖。
-hide_banner:这个选项用来隐藏启动时的版权和版本信息等输出。这使得输出更加清晰,只显示重要的信息。
-loglevel error:这个选项设置日志的级别。error 表示只有错误信息会被打印出来,这有助于减少不必要的日志输出。
-i "%s":-i 代表输入文件。"%s" 是一个占位符,将在命令执行时被具体的文件路径替换。由于这个占位符出现了两次,这意味着命令将接收两个输入文件。
-vcodec mpeg4:-vcodec 指定了视频编解码器。在这里,它设置为使用 mpeg4 编解码器进行视频编码。
"%s":这是第三个占位符,代表输出文件。当命令执行时,它会被输出文件的路径替换。

这篇关于SadTalker数字人增加视频输出mp4质量精度的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/542156

相关文章

基于Python和MoviePy实现照片管理和视频合成工具

《基于Python和MoviePy实现照片管理和视频合成工具》在这篇博客中,我们将详细剖析一个基于Python的图形界面应用程序,该程序使用wxPython构建用户界面,并结合MoviePy、Pill... 目录引言项目概述代码结构分析1. 导入和依赖2. 主类:PhotoManager初始化方法:__in

用js控制视频播放进度基本示例代码

《用js控制视频播放进度基本示例代码》写前端的时候,很多的时候是需要支持要网页视频播放的功能,下面这篇文章主要给大家介绍了关于用js控制视频播放进度的相关资料,文中通过代码介绍的非常详细,需要的朋友可... 目录前言html部分:JavaScript部分:注意:总结前言在javascript中控制视频播放

Python基于wxPython和FFmpeg开发一个视频标签工具

《Python基于wxPython和FFmpeg开发一个视频标签工具》在当今数字媒体时代,视频内容的管理和标记变得越来越重要,无论是研究人员需要对实验视频进行时间点标记,还是个人用户希望对家庭视频进行... 目录引言1. 应用概述2. 技术栈分析2.1 核心库和模块2.2 wxpython作为GUI选择的优

使用PyTorch实现手写数字识别功能

《使用PyTorch实现手写数字识别功能》在人工智能的世界里,计算机视觉是最具魅力的领域之一,通过PyTorch这一强大的深度学习框架,我们将在经典的MNIST数据集上,见证一个神经网络从零开始学会识... 目录当计算机学会“看”数字搭建开发环境MNIST数据集解析1. 认识手写数字数据库2. 数据预处理的

java字符串数字补齐位数详解

《java字符串数字补齐位数详解》:本文主要介绍java字符串数字补齐位数,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Java字符串数字补齐位数一、使用String.format()方法二、Apache Commons Lang库方法三、Java 11+的St

SpringBoot项目使用MDC给日志增加唯一标识的实现步骤

《SpringBoot项目使用MDC给日志增加唯一标识的实现步骤》本文介绍了如何在SpringBoot项目中使用MDC(MappedDiagnosticContext)为日志增加唯一标识,以便于日... 目录【Java】SpringBoot项目使用MDC给日志增加唯一标识,方便日志追踪1.日志效果2.实现步

python多种数据类型输出为Excel文件

《python多种数据类型输出为Excel文件》本文主要介绍了将Python中的列表、元组、字典和集合等数据类型输出到Excel文件中,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参... 目录一.列表List二.字典dict三.集合set四.元组tuplepython中的列表、元组、字典

Spring AI集成DeepSeek实现流式输出的操作方法

《SpringAI集成DeepSeek实现流式输出的操作方法》本文介绍了如何在SpringBoot中使用Sse(Server-SentEvents)技术实现流式输出,后端使用SpringMVC中的S... 目录一、后端代码二、前端代码三、运行项目小天有话说题外话参考资料前面一篇文章我们实现了《Spring

Python中如何控制小数点精度与对齐方式

《Python中如何控制小数点精度与对齐方式》在Python编程中,数据输出格式化是一个常见的需求,尤其是在涉及到小数点精度和对齐方式时,下面小编就来为大家介绍一下如何在Python中实现这些功能吧... 目录一、控制小数点精度1. 使用 round() 函数2. 使用字符串格式化二、控制对齐方式1. 使用

Rust格式化输出方式总结

《Rust格式化输出方式总结》Rust提供了强大的格式化输出功能,通过std::fmt模块和相关的宏来实现,主要的输出宏包括println!和format!,它们支持多种格式化占位符,如{}、{:?}... 目录Rust格式化输出方式基本的格式化输出格式化占位符Format 特性总结Rust格式化输出方式