image - ffmpeg 转换图像<->视频会导致伪影

标签 image video ffmpeg image-compression

我想将视频转换为图像,进行一些图像处理并将图像转换回视频。

这是我的命令:

./ffmpeg -r 30 -i $VIDEO_NAME "image%d.png"

./ffmpeg -r 30 -y -i "image%d.png" output.mpg

但是在 output.mpg 视频中我有一些人工制品 like in jpeg .

另外我不知道如何确定 fps,我设置了 fps=30 (-r 30)。 当我使用上面的第一个命令而不使用 -r 时,它会生成很多图像 > 1kk,但比我使用 -r 30 选项时,它会生成与此命令计算相同数量的图像帧数:

FRAME_COUNT=`./ffprobe -v error -count_frames -select_streams v:0 -show_entries stream=nb_read_frames -of default=nokey=1:noprint_wrappers=1 $VIDEO_NAME`

所以我的问题是:

  1. 如何确定帧速率?

  2. 如何将图像转换为视频而不降低初始质量?

更新:

在我删除 -r 选项后,这似乎有帮助 Image sequence to video quality

因此生成的命令是:

./ffmpeg -y -i "image%d.png" -vcodec mpeg4 -b $BITRATE output_$BITRATE.avi

但我仍然不确定如何选择比特率。

如何查看原始 .mp4 文件的比特率?

最佳答案

您可以使用 qscale 参数代替比特率,例如

ffmpeg -y -i "image%d.png" -vcodec mpeg4 -q:v 1 output_1.avi

q:vqscale:v 的缩写。 1 可能会产生太大的文件。 4-6 是一个不错的使用范围。

关于image - ffmpeg 转换图像<->视频会导致伪影,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36200068/

相关文章:

javascript - 为什么 javascript 在我的网站上有效,但在本地却无效

php - 如何从用户上传到我的服务器的视频中获取缩略图?

video - Linux 上用于流式传输视频的 YUV 播放器

video - 是否可以在第二遍中更改 ffmpeg 多遍编码的分辨率;x264 和 x265?

javascript - 如何优化类似<picture>标签的background-image?

database - 将图像存储在数据库或文件系统中

c++ - 我们如何使用VNC进行视频录制

c++, FFMPEG, H264, 创建零延迟流

node.js - 如何在 Node JS 上通过 ffmpeg 在视频中添加标题

javascript - 在 JavaScript 中将图像十六进制转换为 base64