当前位置: 首页 > news >正文

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":这是第三个占位符,代表输出文件。当命令执行时,它会被输出文件的路径替换。

http://www.lryc.cn/news/269955.html

相关文章:

  • swing快速入门(三十二)消息对话框
  • 《Spring Cloud学习笔记:Nacos配置管理 OpenFeign LoadBalancer Getway》
  • 深入解析 Flink CDC 增量快照读取机制
  • 060:vue中markdown编辑器mavon-editor的应用示例
  • 使用SCP在Linux中安全复制文件:参数详解
  • 【动态规划精选题目】3、简单多状态模型
  • 软件测试/测试开发丨Python 虚拟环境及pip环境管理
  • Mybatis SQL构建器类 - SQL类
  • 海云安亮相2023北京国际金融安全论坛,助力金融企业数字化转型降本增效
  • nodeJS搭建免费代理IP池爬取贴吧图片实战
  • 基于图搜索的自动驾驶规划算法 - BFS,Dijstra,A*
  • Spring系列学习四、Spring数据访问
  • HBase 创建不分裂的表 ( 禁止 Table Split )
  • docker入门概念详解
  • C++程序设计实践报告【格式】
  • 浅谈数据仓库运营
  • 系列六、Consul
  • Java集合/泛型篇----第一篇
  • 集合使用注意事项
  • 什么是 JavaScript 中的 WeakMap
  • nodejs+vue+ElementUi农产品团购销售系统zto2c
  • nacos入门篇001-安装与启动
  • WordPress主题大前端DUX v8.3源码下载
  • RabbitMQ之快速入门、上手
  • GBASE南大通用-GBase 8s数据库日志模式及切换
  • 侵入式和非侵入式微服务框架的比较
  • Go语言程序设计-第5章--函数
  • 数据被锁?被.mkp 勒索病毒攻击后的拯救行动
  • Fine-Tuning Language Models from Human Preferences
  • 提升数据库性能的关键指南-Oracle AWR报告