ChinaFFmpeg

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 5462|回复: 3

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

[复制链接]
发表于 2020-3-25 10:19:42 | 显示全部楼层 |阅读模式
我使用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_delay  rtmp://192.168.1.2:1935/myapp
回复

使用道具 举报

发表于 2020-3-25 19:03:41 | 显示全部楼层
用ossrs,打开gopcache试一下
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-3-26 19:28:10 | 显示全部楼层
谢谢大师兄帮忙
确实是gop 的keyframe 间隔太久


回复 支持 反对

使用道具 举报

 楼主| 发表于 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=0  rtmp://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




回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|Archiver|ChinaFFmpeg

GMT+8, 2024-4-19 21:54 , Processed in 0.066126 second(s), 14 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表