gpt4 book ai didi

ffmpeg - 使用网络摄像头使用 ffmpeg 进行非常低的延迟流式传输

转载 作者:行者123 更新时间:2023-12-04 14:01:10 24 4
gpt4 key购买 nike

我正在尝试将 ffmpeg 配置为使用网络摄像头进行实时视频流。我使用的ffmpeg编码器命令如下。

ffmpeg -f v4l2 -input_format yuyv422 -s 640x480 -i /dev/video0 -c:v libx264 -profile:v baseline -trellis 0 -subq 1 -level 32 -preset superfast -tune zerolatency -me_method epzs -crf 30 -threads 0 -bufsize 1 -refs 4 -coder 0 -b_strategy 0 -bf 0 -sc_threshold 0 -x264-params vbv-maxrate=2000:slice-max-size=1500:keyint=30:min-keyint=10: -pix_fmt yuv420p -an -f mpegts udp://192.168.1.8:5001

用于显示视频源的 ffplay 命令是,
ffplay -analyzeduration 1 -fflags -nobuffer -i udp://192.168.1.8:5001

但是,我在视频流中遇到了 0.5 - 1.0 秒的延迟。有没有办法将其减少到小于 100 毫秒的数字。此外,当我使用 x11grab 将 v4l2 相机捕获替换为屏幕捕获时,流几乎是实时的,并且我没有遇到明显的延迟。此外,将编码器从 x264 更改为 mpeg2 对延迟没有影响。此外,来自 ffmpeg 的统计数据显示编码器以 30fps 的速率执行,我相信这表明编码是实时的。这让我只有一个经历延迟的原因。
  • 在网络摄像头的视频捕获期间使用 v4l2 时缓冲区是否存在明显延迟?
  • 我不认为传输延迟在这种情况下有效,因为在相同条件下使用屏幕捕获时我没有看到延迟。
  • 可以进一步减少这种延迟吗?有人能想出一种不同的编码器配置来代替我一直在使用的那个吗?
  • 最佳答案

    在 odroid spc 和 windows pc 之间设置低延迟视频流系统时,我也遇到了很多问题。最后我发现设置导致大约 500 毫秒到最大值。 1s 延迟。

    设置:使用 ubuntu 18.04 的 odroid xu4 上的 ffserver,通过 wifi 加密狗连接到网络。来自 odroid 的同一 wifi 网络中的 Windows 10 PC 流式传输。

    我在我的 odroid 上运行以下 ffserver 配置(/etc/ffserver.conf)

    HTTPPort 8090
    HTTPBindAddress 0.0.0.0
    MaxClients 1000
    MaxBandwidth 10000

    <Feed feed1.ffm>
    File /tmp/feed1.ffm
    FileMaxSize 50M
    ACL allow 127.0.0.1
    ACL allow localhost
    </Feed>

    <Stream test1.asf>
    Format asf
    Feed feed1.ffm
    VideoFrameRate 30
    VideoSize 640x480
    VideoBitRate 600
    #VideoBufferSize 400
    VideoQMin 1
    VideoQMax 20
    NoAudio
    ACL allow 127.0.0.1
    ACL allow localhost
    ACL allow 192.168.0.0 192.168.255.255
    </Stream>

    <Stream stat.html>
    Format status
    ACL allow 127.0.0.1
    ACL allow localhost
    </Stream>

    并在 odroid 上启动相机流
    ffserver -f /etc/ffserver.conf & ffmpeg -f v4l2 -s 640x480 -r 15 -i /dev/video0 -vcodec libx265 -threads 2 -tune zerolatency http://localhost:8090/feed1.ffm

    在我的 Windows PC 上,我尝试了几种设置来获得低延迟。使用 VLC-Player,我无法管理低于 8 到 10 秒的任何内容。
    使用以下 ffplay 命令,我得到了大约 500 毫秒的延迟:
    ffplay -fflags -nobuffer -probesize 32 -i mmsh://ubuntu1804:8090/test1.asf

    因此, -sync ext 和 -analyzeduration 1 无助于减少延迟。

    当使用 libx264 而不是 libx265 并删除 -thread 2 标志时,odroid 上的“流生产”也以相同的低延迟运行。但是将帧率提高到 30 甚至提高分辨率都会导致明显的延迟。

    关于ffmpeg - 使用网络摄像头使用 ffmpeg 进行非常低的延迟流式传输,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42953616/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com