FFmpeg 的实时性太糟糕了 - V2EX
FH0

FFmpeg 的实时性太糟糕了

  •  
  •   FH0 Oct 20, 2025 4863 views
    This topic created in 204 days ago, the information mentioned may be changed or developed.

    在用 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 
    15 replies    2026-03-25 14:53:36 +08:00
    ZeroW
        1
    ZeroW  
       Oct 20, 2025 via iPhone
    x264 preset 换成 zerolatency 试试
    ZeroW
        2
    ZeroW  
       Oct 20, 2025 via iPhone
    @ZeroW preset->tune
    wy315700
        3
    wy315700  
       Oct 20, 2025
    是不是因为有 B 帧
    dosmlp
        4
    dosmlp  
       Oct 21, 2025
    编码是有延迟的,想要实时性需要针对性调参数,比如 zerolatency
    FH0
        5
    FH0  
    OP
       Oct 21, 2025
    @ZeroW @dosmlp 这个过程没有编码,我是先用命令行生成一个 H.264 文件,然后用这个文件进行推流。
    FH0
        6
    FH0  
    OP
       Oct 21, 2025
    @wy315700 没有,应该是全 I 帧,因为我只用到了一个 H.264 文件。
    wy315700
        7
    wy315700  
       Oct 21, 2025
    @FH0 #6
    H.264 文件也有 IBP 帧的。
    I.
    ffprobe 使用 show_frames 看看 IBP 帧情况吧,
    dosmlp
        8
    dosmlp  
       Oct 21, 2025
    媒体服务可以看看 ZLMediaKit 和 srs
    FH0
        9
    FH0  
    OP
       Oct 21, 2025
    @wy315700 是 I 帧,刚刚用 ffprobe 看了。
    FH0
        10
    FH0  
    OP
       Oct 21, 2025
    @dosmlp 这倒是提醒我了,之前都是把 ZLMediaKit 当做一个独立的程序使用。回头试试!
    rev1si0n
        11
    rev1si0n  
       Oct 21, 2025
    延迟高是不太可能的,只能是你的设置有问题,x264 有配置编码速度和延迟、比特率的选项,还有一般情况下不建议全分辨率或者全比特率编码,在合适的情况下先做一下缩放裁切再编码。做过 websocket 投屏,网络合适的情况下,从设备端到网页端渲染出图的延迟几乎不可见。
    FH0
        12
    FH0  
    OP
       Oct 27, 2025
    @rev1si0n 这个延迟不是编码解码的延迟,是传输的延迟。你看看四楼五楼。
    rev1si0n
        13
    rev1si0n  
       Oct 27, 2025
    @FH0 #12 还是你自己造吧,说了你也看不懂
    FH0
        14
    FH0  
    OP
       Nov 3, 2025
    @rev1si0n 别这样说别人,听了会很难受的。
    FH0
        15
    FH0  
    OP
       Mar 25
    About     Help     Advertise     Blog     API     FAQ     Solana     1421 Online   Highest 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 95ms UTC 17:05 PVG 01:05 LAX 10:05 JFK 13:05
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86