当前位置: 首页 > 知识库问答 >
问题:

FFMPEG中碎片MP4创建的刷新和延迟问题

禄源
2023-03-14
-i rtsp://172.20.28.52:554/h264 -vcodec copy -an -f mp4 -reset_timestamps 1 -movflags empty_moov+default_base_moof+frag_keyframe -loglevel quiet -
  1. “-i rtsp://172.20.28.52:554/h264”,因为来源是来自ip摄像机的rtp数据包流中的h264。为了测试起见,相机的GOP设置为1(即所有帧都是关键帧)
  2. “-vcodec copy”,因为我不需要转码,只需要重新编码到MP4。
  3. “-movflags empty_moov+default_base_moof+frag_keyframe”根据媒体源扩展规范创建分段mp4。
  4. 末尾的“-”以便将mp4输出到stdout。我正在获取ouput并通过web套接字将其发送到webclient。

一切都工作得很好,期待一个延迟问题,我正在努力解决。如果每次从stdout输入一个数据时,我都会记录到到达的时间戳,那么我会得到以下输出:

16/06/2015 15:40:45.239获取数据大小=24

16/06/2015 15:40:45.240获取数据大小=7197

16/06/2015 15:40:45.241获取数据大小=32768

16/06/2015 15:40:45.242获取数据大小=6336

16/06/2015 15:40:45.242获取数据大小=6361

16/06/2015 15:40:45.242获取数据大小=6337

16/06/2015 15:40:45.243获取数据大小=6338

16/06/2015 15:40:45.243获取数据大小=6357

16/06/2015 15:40:45.243获取数据大小=6357

16/06/2015 15:40:45.244获取数据大小=6403

16/06/2015 15:40:45.304获取数据大小=6393

16/06/2015 15:40:45.371获取数据大小=6372

16/06/2015 15:40:45.771获取数据大小=6360

16/06/2015 15:40:45.838获取数据大小=6294

16/06/2015 15:40:45.904获取数据大小=6328

16/06/2015 15:40:45.971获取数据大小=6326

16/06/2015 15:40:46.038获取数据大小=6326

16/06/2015 15:40:46.105获取数据大小=6340

16/06/2015 15:40:46.171获取数据大小=6341

共有1个答案

彭礼骞
2023-03-14

消除延迟的关键是使用-probesize参数:

探查整数(输入)

以字节为单位设置探测大小,即要分析以获得流信息的数据的大小。如果信息分散到流中,较高的值将能够检测到更多的信息,但会增加延迟。必须是不小于32的整数。默认为5000000。

 类似资料:
  • 我对碎片化mp4的理解是它是一个文件,但内部它是以片段的形式构建的。有人能向我解释一下如何在DASH的. mpd文件中处理这些片段吗?我看到的. mpd文件似乎使用单独的url处理不同的段,但我想碎片化mp4必须通过字节偏移量来处理同一个url。那么浏览器如何知道什么时间对应于什么字节范围?

  • 问题内容: 我做了一个二十一点游戏,我想让AI播放器在两张牌之间暂停一下。我尝试仅使用Thread.sleep(x)进行尝试,但这会使冻结,直到AI播放器拿走了他所有的卡。我知道Swing不是线程安全的,所以我看了Timers,但是我不明白如何使用它。这是我当前的代码: BTW,hit(); 方法更新GUI。 问题答案: 好吧,下面的代码显示了一个带有JTextArea和JButton的JFram

  • 问题内容: 我想暂时暂停我的应用。换句话说,我希望我的应用执行代码,但是在某个时候暂停4秒钟,然后继续执行其余的代码。我怎样才能做到这一点? 我正在使用Swift。 问题答案: 如果要从UI线程调用该方法,则可以考虑使用或调度计时器,而不是进行睡眠(这会锁定您的程序)。 但是,如果您确实需要延迟当前线程: 这使用UNIX中的功能。

  • 我正面临着G1GC算法中GC停顿的持续增加。服务延迟随着时间的推移继续增长。一旦发生这种情况,我将重新启动服务,延迟时间将恢复正常。启动后,等待时间再次随着时间的推移而增加。

  • 我有一个类,其中包含一个延迟加载的属性

  • 当我将一个片段(它是带有背景的全屏)显示在另一个片段(我们称之为main)上时,我的main片段仍然会对单击做出反应(即使我们没有看到按钮,我们也可以单击它)。 问题:如何防止点击第一(主)片段?