FFmpeg 的实时性太糟糕了 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
FH0
V2EX    FFmpeg

FFmpeg 的实时性太糟糕了

  •  
  •   FH0 56 天前 3251 次点击
    这是一个创建于 56 天前的主题,其中的信息可能已经有所发展或是发生改变。

    在用 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 6.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 
    14 条回复    2025-11-03 09:05:09 +08:00
    ZeroW
        1
    ZeroW  
       56 天前 via iPhone
    x264 preset 换成 zerolatency 试试
    ZeroW
        2
    ZeroW  
       56 天前 via iPhone
    @ZeroW preset->tune
    wy315700
        3
    wy315700  
       56 天前
    是不是因为有 B 帧
    dosmlp
        4
    dosmlp  
       55 天前
    编码是有延迟的,想要实时性需要针对性调参数,比如 zerolatency
    FH0
        5
    FH0  
    OP
       55 天前
    @ZeroW @dosmlp 这个过程没有编码,我是先用命令行生成一个 H.264 文件,然后用这个文件进行推流。
    FH0
        6
    FH0  
    OP
       55 天前
    @wy315700 没有,应该是全 I 帧,因为我只用到了一个 H.264 文件。
    wy315700
        7
    wy315700  
       55 天前
    @FH0 #6
    H.264 文件也有 IBP 帧的。
    I.
    ffprobe 使用 show_frames 看看 IBP 帧况吧,
    dosmlp
        8
    dosmlp  
       55 天前
    媒体服务可以看看 ZLMediaKit 和 srs
    FH0
        9
    FH0  
    OP
       55 天前
    @wy315700 是 I 帧,刚刚用 ffprobe 看了。
    FH0
        10
    FH0  
    OP
       55 天前
    @dosmlp 这倒是提醒我了,之前都是把 ZLMediaKit 当做一个独立的程序使用。回头试试!
    rev1si0n
        11
    rev1si0n  
       55 天前
    延迟高是不太可能的,只能是你的设置有问题,x264 有配置编码速度和延迟、比特率的选项,还有一般情况下不建议全分辨率或者全比特率编码,在合适的情况下先做一下缩放裁切再编码。做过 websocket 投屏,网络合适的情况下,从设备端到网页端渲染出图的延迟几乎不可见。
    FH0
        12
    FH0  
    OP
       49 天前
    @rev1si0n 这个延迟不是编码解码的延迟,是传输的延迟。你看看四楼五楼。
    rev1si0n
        13
    rev1si0n  
       49 天前
    @FH0 #12 还是你自己造吧,说了你也看不懂
    FH0
        14
    FH0  
    OP
       42 天前
    @rev1si0n 别这样说别人,听了会很难受的。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2592 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 25ms UTC 15:11 PVG 23:11 LAX 07:11 JFK 10:11
    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