aaparker 发表于 2020-3-25 10:19:42

ffplay 如何可以減少等待時間,直播視屏初始化需要5~10秒

我使用ffmpeg 去推送rtmp视屏流到伺服器(nginx),
使用ffplay去进行播放 ,遇到一个问题,
初始化之后播放非常快 <1s ,
但是一开始的初始化非常久,
发现很少人提出如何加速一开始的初始化等待问题
ffmpeg -y -f gdigrab -i desktop -s 1920x1080 -vcodec libx264 -r 24 -preset ultrafast -tune zerolatency -pix_fmt yuv420p -threads 8-an -f flv rtmp://127.0.0.1:1935/myapp

ffplay -fflags nobuffer-flags low_delayrtmp://192.168.1.2:1935/myapp

孙悟空 发表于 2020-3-25 19:03:41

用ossrs,打开gopcache试一下

aaparker 发表于 2020-3-26 19:28:10

谢谢大师兄帮忙
确实是gop 的keyframe 间隔太久


aaparker 发表于 2020-3-27 17:38:01

我發現如果用gop_cache       on;
在直播視訊每個frame會延誤了快30秒
我用ffprobe -loglevel error -skip_frame nokey -select_streams v:0 -show_entries frame=pkt_pts_time -of csv=print_section=0rtmp://192.168.1.2:1935/myapp/streamflv
0.000000
33.917000
69.833000

每個keyframe平均要30秒

後來我參考 srs官網給的建議在Low_latency的設定
    gop_cache       off;
        queue_length    10;
        min_latency   on;
        mr {
                enabled   off;ffprobe
        }
        mw_latency      100;
        tcp_nodelay   on;
       
但這個初始化要30秒以上

後來我增加ffmpeg的keyframe頻率
-force_key_frames "expr:gte(t,n_forced*2)"
keyfrmae的頻率 2秒一次
71.156000
73.156000
75.156000
77.156000
發現初始化快了1倍以上,要大概15秒

我再把framerate降一半
原本24 改成12 初始化再少快一半,但還是要七八秒,

我希望控制初始化在3~4秒之內,又要之後的每個framerate <1s,做得到嗎??
因為很多桌面軟體都是啟動1秒就可以看到遠端的畫面
ffmpeg -y -f gdigrab -i desktop -s 1920x1080 -vcodec libx264 -r 24 -preset ultrafast -tune zerolatency-force_key_frames "expr:gte(t,n_forced*2)" -an -f flv rtmp://127.0.0.1:1935/myapp/streamflv




页: [1]
查看完整版本: ffplay 如何可以減少等待時間,直播視屏初始化需要5~10秒