V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
FH0
V2EX  ›  FFmpeg

FFmpeg 的实时性太糟糕了

  •  
  •   FH0 · 1 天前 · 2229 次点击

    在用 FFmpeg RTP 传输 H.264 ,本来想着发一个帧就能收到一个帧,但测试老是反馈延迟高,我就自己测试了一下。

    结果发现要接收 n 个帧,必须发送 n + 2 个帧,难顶。下面的例子之所以能收到两个是因为第二个超时了,我也不懂为什么超时就能收到第二个包。

    看来得参考 RTP 自己造轮子了。

    10-20 16:27:34.582 I sdp: v=0
    o=- 0 0 IN IP4 127.0.0.1
    s=No Name
    c=IN IP4 239.0.0.1
    t=0 0
    a=tool:libavformat 61.1.100
    m=video 16384 RTP/AVP 96
    a=rtpmap:96 H264/90000
    a=fmtp:96 packetization-mode=1; sprop-parameter-sets=Z2QAHqzZQKAv+XARAAADAAEAAAMAMg8WLZY=,aOvjyyLA; profile-level-id=64001E
    
    10-20 16:27:34.583 I send packet, pts: 0
    10-20 16:27:34.600 I send packet, pts: 16666
    10-20 16:27:34.617 I send packet, pts: 33332
    10-20 16:27:34.617 I pkt pts: -9223372036854775808
    10-20 16:27:44.629 I pkt pts: 1500
    
    11 条回复    2025-10-21 17:02:26 +08:00
    ZeroW
        1
    ZeroW  
       1 天前 via iPhone
    x264 preset 换成 zerolatency 试试
    ZeroW
        2
    ZeroW  
       1 天前 via iPhone
    @ZeroW preset->tune
    wy315700
        3
    wy315700  
       1 天前
    是不是因为有 B 帧
    dosmlp
        4
    dosmlp  
       1 天前
    编码是有延迟的,想要实时性需要针对性调参数,比如 zerolatency
    FH0
        5
    FH0  
    OP
       22 小时 32 分钟前
    @ZeroW @dosmlp 这个过程没有编码,我是先用命令行生成一个 H.264 文件,然后用这个文件进行推流。
    FH0
        6
    FH0  
    OP
       22 小时 27 分钟前
    @wy315700 没有,应该是全 I 帧,因为我只用到了一个 H.264 文件。
    wy315700
        7
    wy315700  
       22 小时 25 分钟前
    @FH0 #6
    H.264 文件也有 IBP 帧的。
    I.
    ffprobe 使用 show_frames 看看 IBP 帧情况吧,
    dosmlp
        8
    dosmlp  
       22 小时 14 分钟前
    媒体服务可以看看 ZLMediaKit 和 srs
    FH0
        9
    FH0  
    OP
       21 小时 51 分钟前
    @wy315700 是 I 帧,刚刚用 ffprobe 看了。
    FH0
        10
    FH0  
    OP
       21 小时 50 分钟前
    @dosmlp 这倒是提醒我了,之前都是把 ZLMediaKit 当做一个独立的程序使用。回头试试!
    rev1si0n
        11
    rev1si0n  
       21 小时 6 分钟前
    延迟高是不太可能的,只能是你的设置有问题,x264 有配置编码速度和延迟、比特率的选项,还有一般情况下不建议全分辨率或者全比特率编码,在合适的情况下先做一下缩放裁切再编码。做过 websocket 投屏,网络合适的情况下,从设备端到网页端渲染出图的延迟几乎不可见。
    关于   ·   帮助文档   ·   自助推广系统   ·   博客   ·   API   ·   FAQ   ·   Solana   ·   5816 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 21ms · UTC 06:08 · PVG 14:08 · LAX 23:08 · JFK 02:08
    ♥ Do have faith in what you're doing.