c# - Accord.Video.FFMPEG 创建质量非常低的视频

标签 c# ffmpeg video-processing accord.net

我用 Accord.Video.FFMPEG使用 H264 编解码器创建包含 200 个图像的视频。由于某种原因,视频质量很差。它的大小小于 1MB。选择时VideoCodec.Raw ,质量很高,但我对巨大的尺寸不满意。

我做这样的事情

using (var vFWriter = new VideoFileWriter())
{
    vFWriter.Open(video_name, 1920, 1080, 24, VideoCodec.H264);
    for (int i = 0; i < 200; ++i)
    {
        var img_name_src = ...
        using (Bitmap src_jpg = new Bitmap(img_name_src))
        {
            vFWriter.WriteVideoFrame(src_jpg);
        }
    }
    vFWriter.Close();
}

当我运行程序时,会出现以下消息:
[swscaler @ 06c36d20] deprecated pixel format used, make sure you did set range correctly
[swscaler @ 06e837a0] deprecated pixel format used, make sure you did set range correctly
[avi @ 06c43980] Using AVStream.codec.time_base as a timebase hint to the muxer is deprecated. Set AVStream.time_base instead.
[avi @ 06c43980] Using AVStream.codec to pass codec parameters to muxers is deprecated, use AVStream.codecpar instead.

我不知道它们是否会影响某些东西。

它看起来像 1 帧:

enter image description here

这是视频中的帧:

enter image description here

如何解决?

C# 中还有其他方法可以从单个帧创建视频吗?

最佳答案

通常,视频质量取决于可以通过此过载更改的比特率:writer.Open(fileName, width, height, frameRate, VideoCodec, BitRate);在数以百万计的视频中,高细节帧上仍有伪影,但大部分都很好。然而,在数十亿中,伪影完全消失了,但文件大小飞涨,播放速度受到磁盘检索时间的影响。
尝试使用不同的 VideoCodecs、比特率和文件类型(mp4、avi、webm 等)为您的项目找到合适的平衡点。

关于c# - Accord.Video.FFMPEG 创建质量非常低的视频,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58402508/

相关文章:

c# - 为什么调试器内存窗口在 VS 2015 中不可用?

android - 当两个依赖项使用FFmpeg时如何解决不满意的链接错误

android - 使用前置摄像头录制视频时分别获取视频和音频缓冲区

opencv - 在谷歌colab上以视频形式显示帧

c# - DateTime 返回错误的刻度数?

c# - c#项目中Sox.exe的使用

c# - 使用 Newtonsoft 解析 json 字符串会引发 Null 引用执行

c++ - 如何使 FFmpeg C++ 代码不输出错误消息?

python - OpenCV Python,从命名管道读取视频

haskell - 将视频分解为图像进行处理