c# - 为什么 ffmpeg 在暗图像上有更大的延迟?

标签 c# image video ffmpeg

我有一个使用 ffmpeg 流式传输真实相机图像的 c# 应用程序。输入图像是原始的 8 位灰度格式。我使用标准输入创建了一个 ffmpeg 流来提供图像并将输出包发送到 websocket 客户端。

我使用此配置启动外部 ffmpeg 进程:

-f rawvideo -pixel_format gray -video_size " + camera.Width.ToString() + "x" + camera.Height.ToString() + " -framerate 25 -i - -f mpeg1video -b:v 512k -s 320x240 -

典型图像尺寸为 1040*1392 像素

我使用 jsmpeg 库在浏览器上显示流

这适用于合理的延迟(本地主机上约 500 毫秒),但是当相机图像真的很暗(黑色图像)时,延迟非常大(本地主机上约 2-3 秒)。当黑色时段后图像上再次出现明亮的东西时,“同步”大约需要 2-3 秒。

我在想黑色图像真的很容易压缩并且会生成非常小的包,jsmpeg几乎没有信息可以显示并等待一个完整的数据包到达,但我无法证明我的理论。

我使用了比特率和 fps 等 ffmpeg 参数,但没有任何改变。

有什么我可以尝试的设置吗?

最佳答案

图像的大小取决于有多少噪声蔓延。明亮的图像通常具有较少的噪声并且具有压缩成较小尺寸的清晰区域。

关于c# - 为什么 ffmpeg 在暗图像上有更大的延迟?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47374795/

相关文章:

c# - 如何停止自动按钮点击 F5 和页面刷新?

c# - 将子类的枚举器强制转换为父类的枚举器是否错误?

c# - 无法显示从文本创建的图像?

php - 以相同的 CodeIgniter 形式上传图像和文本输入

c# - 将 blob 字符串转换为 jpg 文件

python - 如何在视频上叠加

android - 在 LibGDX 的纹理上渲染视频

c# - 全尺寸 Silverlight 应用程序尺寸

android - 在 Android 中显示大图像

android - FFmpeg mp4 压缩