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
用ossrs,打开gopcache试一下 谢谢大师兄帮忙
确实是gop 的keyframe 间隔太久
我發現如果用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]