首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >视频播着播着就卡住了,什么原因造成的呢?

视频播着播着就卡住了,什么原因造成的呢?

提问于 2021-01-19 21:55:04
回答 12关注 1查看 2.8K

上传的一份视频,播着播着就卡住了,很是奇怪,大家可以播放感受下,卡顿发生在视频1分钟的时候。

视频内容

文件见如下附件,现象很奇怪,突然就没有内容了,连声音都没了,但进度条一直在走,直到4分半。

卡住了.mp4.zip

这到底是为什么呢?

回答 12

小贝

精选回答

发布于 2021-01-20 07:41:19

回答来自于问答智囊团成员:bellchen

专栏:https://cloud.tencent.com/developer/article/1734074

猜想

导致视频播放卡顿的原因有千千万万,常见的有如下:

1、网络较差,导致视频下载较慢,需要缓冲,因此卡住了;

可以下载文件到本地,用本地播放器(VLC、QQ播放器等)尝试播放,这个案例应该不是这个原因,本地播放到第1分钟之后也出现了卡住。

2、文件的音频和视频时长不一致,视频只有一分钟,音频有4分30秒;

如果是这种情况,在一分钟之后,视频可能卡住,应该还会继续有声音,不过这个可能性也不是没有,先保持怀疑态度。

视频轨太短,导致画面卡在1分钟处

3、视频格式有问题,播放器播不动,可能原因是单帧过大,单帧时间过长;

这种情况下一个帧率25fps的视频,时长4分30秒的话,应该有270秒*25fps = 6750帧;

如果这个视频的最后一个帧特别大, 这个视频可能只有60秒*25fps=1500帧,而最后一帧时长为3分30秒;

异常的帧长,导致播放卡住

分析

再多的猜测,也只是猜测,还不如剖析下这个视频文件,看问题出在哪里?

我们知道(其实很多人不知道),一个视频文件,其实就是一堆连续的图片快速切换,当画面切换得足够快,人们就以为这玩意动起来了

假装是一个视频,其实我是个GIF

就像一本书一样,每一页就相当于一个画面,既然上述视频在一分钟卡住了,是不是可以直接定位到一分钟处以及之后的视频帧,我们看下到底是怎么了?就像翻书一样,咱们直接翻到那一页;

然而,书比较好翻,视频文件该怎么精准定位呢? 用播放器来播放,会卡住哦,根本看不到细节;

此时,需要借助FFmpeg里的ffprobe工具,进一步分析;

1、查看视频信息:

这一步可以用如下指令获取

代码语言:javascript
运行
AI代码解释
复制
ffprobe -show_streams -i 卡住了.mp4 -of json

得到的json数据如下,为了方便观看,我把一些不重要字段删除了

可以看到视频和音频轨道的时长

由此,排除了上述的第二个猜想(视频较短,音频较长,导致画面停留在最后一帧)

当然,上述步骤也可以用MediaInfo工具查看,入口 http://MediaArea.net/MediaInfo 这个工具可以查看文件的视频流、音频流、字幕流、甚至章节Chapters的信息,实在是居家旅行、排忧解难、必备良药!

2、查看每一帧信息

既然音视频流的长度一致,我们试下用ffprobe定位到一分钟之后的那一帧,看有啥异样;

指令如下:

代码语言:javascript
运行
AI代码解释
复制
ffprobe -select_streams 0 -show_frames  -i 卡住了.mp4 -of csv >> 0.csv #查看第一个流的每一帧
ffprobe -select_streams 1 -show_frames  -i 卡住了.mp4 -of csv >> 1.csv #查看第一个流的每一帧
#附件的文件中,第一个流是视频,第二个流是音频。

得到的csv文件,用excel打开之后是没有表头的,而且csv文件的第一列固定是"frame"。

如果是视频,剔除第一列之后,表头信息如下

视频帧信息表头

第1个字段media_type表示它是video视频;

第3个字段key_frame表示是否关键帧;

第10个字段pkt_duration表示该帧的时长;

第13个字段pkt_size 表示该帧的大小;

如果是音频,剔除第一列之后,表头信息如下

音频帧表头

音频帧的字段含义类似,只是音频帧的字段数没视频帧那么多。

为了方便大家查看,我把两个csv文件转换为Excel,放在以下附件,并且高亮了pkt_duration和pkt_size两列。

接下来,即可定位到一分钟附近的帧,看是否有异常,为了更加方便看到整个文件的全貌,我把这两个字段做了图表,该视频的帧率是30fps,那么一分钟就有1800帧。

从pkt_duration的图表看是一条直线,说明每一帧的时长都差不多;

但从pkt_size曲线看,在一分钟之前的pkt_size,由于画面不断变动,每一帧的大小不尽相同;

关键帧I帧相对较大,参考帧P帧相对较小,同样是P帧,大小也不大一样。

一分钟之后,每一个I帧的大小都一样,每一个P帧的大小都一样

这就很奇怪了,而恰好也解释了这个视频的播放异常现象;

结论

说明视频从一分钟之后,不是视频播放卡住了,而是画面静止不动了,由于画面静止不动,所以每一帧的大小是一样的。

卡住了视频每一帧的信息.zip

anyway,结论不重要,用ffprobe分析视频才重要。

后端码匠

修改于 2021-09-01 09:37:31

造成直播视频卡顿的原因主要有设备、视频流、网络这三方面的问题。

用户1707716

修改于 2021-09-02 02:16:52

要么网卡,要么服务器太慢了

和开发者交流更多问题细节吧,去 写回答
相关文章
视频播着播着就卡住了,为啥呢?教你如何查看视频帧信息
今天系统收到用户上传的一份视频,播着播着就卡住了,很是奇怪,大家可以播放感受下,卡顿发生在视频1分钟的时候。
bellchen
2020/10/28
11.8K0
视频播着播着就卡住了,为啥呢?教你如何查看视频帧信息
Linux 执行 df -h 卡着不动,HANG 住了,怎么破?
这种问题,大概率是由于 mount 的目录被删除了,但是没有提前执行 umount 操作,因此报错!
Lucifer三思而后行
2021/09/22
6.3K0
Linux 执行 df -h 卡着不动,HANG 住了,怎么破?
第37问:自旋锁 旋着旋着人就糊涂了
追求 MySQL 的性能时,总听说要调整自旋锁的参数: innodb_spin_wait_delay 和 innodb_sync_spin_loops,是真的么?
爱可生开源社区
2021/06/16
7130
第37问:自旋锁 旋着旋着人就糊涂了
组播、单播、多播
主机之间“一对一”的通讯模式,网络中的交换机和路由器对数据只进行转发不进行复制。如果10个客户机需要相同的数据,则服务器需要逐一传送,重复10次相同的工作。但由于其能够针对每个客户的及时响应,所以现在的网页浏览全部都是采用IP单播协议。网络中的路由器和交换机根据其目标地址选择传输路径,将IP单播数据传送到其指定的目的地。
233333
2019/05/25
1.8K0
“单播”、“组播”和“多播”
摘自"百度知道",我不知道! 当前的网络中有三种通讯模式:单播、广播、组播(多播),其中的组播出现时间最晚但同时具备单播和广播的优点,最具有发展前景。 一、单播: 主机之间“一对一”的通讯模式,网络中的交换机和路由器对数据只进行转发不进行复制。 如果10个客户机需要相同的数据,则服务器需要逐一传送,重复10次相同的工作。 但由于其能够针对每个客户的及时响应,所以现在的网页浏览全部都是采用IP单播协议。 网络中的路由器和交换机根据其目标地址选择传输路径,将IP单播数据传送到其指定的目的地。 单播的优点:
菩提树下的杨过
2018/01/23
3.5K0
《From SICP to Lisp》视频回播
昨天晚上进行了第一次直播,效果不是很好,一方面可能是准备不足,ppt 内容上下文衔接不够;另一方面是没有定位好受众人群,对于没有看过 SICP 的同学来说可能不知道我再说什么,离我的初衷相差甚远😭 不过我觉得也还行,毕竟走出了第一步,算是正式开始了 Lisp 直播道路!下面会以 Clojure 为主,从环境搭建开始,到语法,再带着大家看几个 Clojure 写的开源项目,争取让大家都用起来!老是堆砌一些概念感觉挺虚的,还是要以代码为主。 PPT 下载地址:https://github.com/jiaca
飞驰的西瓜
2022/07/26
4980
MYSQL Monitor 变化着看,批判着看
最大我们都要对以前自己做出的事情和选择付出代价。经常看文章说,选择比努力重要,我不置可否。如果选择比努力重要,那运动员去选择就好了,为什么要不断的去联系,去让自己的身体承受那些负荷甚至是病痛,伤痛。那有些人说,努力重要,really,如果你只有1.52米高,你要去和姚明争高低,就算努力到月球,我只能祝愿你,“”心想事成“”。
AustinDatabases
2019/06/21
8810
MYSQL Monitor 变化着看,批判着看
EasyGBS视频录像播放不了而告警录像可以播是什么原因?
TSINGSEE青犀视频云边端架构全线产品在去年的更新当中,EasyNVR、EasyDSS等大部分视频平台都能够支持录像计划的设置了,用户可以针对各个通道设置录像存储计划,也就是使用者可以根据实际需要,可以在录像机中设置在某时间段或者某事件触发时开始存储录像。从而合理利用监控资源,充分利用有限的硬盘空间达到最长存储时间。
TSINGSEE青犀视频
2021/09/18
4930
实时音视频直播带货中影响用户体验的Bug根因
短视频市场的引爆下,直播带货似乎一下子成了2020年实现财富自由的最佳途径之一,前有李佳琦、罗永浩、薇娅,后有董明珠 、刘涛、李小璐。
可可的测试小栈
2020/06/10
1.4K0
实时音视频直播带货中影响用户体验的Bug根因
Android短视频边下边播详解
本文主要分析了如何实现短视频的边下边播功能,包括视频的下载、播放、缓存、本地代理等核心问题。针对这些问题,本文提出了一整套解决方案,并通过代码示例给出了详细的实现步骤。该方案已在短视频项目中成功实践,有效地提高了应用的性能和用户体验。
MelonTeam
2018/01/04
7.2K1
Android短视频边下边播详解
【组播】HCIE面试考官会问哪些呢?
相比单播,由于被传递的信息在距信息源尽可能远的网络节点才开始被复制和 分发,所以用户的增加不会导致信息源负载的加重以及网络资源消耗的显著增加。
Ponnie
2021/03/23
8420
【组播】HCIE面试考官会问哪些呢?
复用的着相 | 洞见
仙剑奇侠传中有一个故事。讲的是一个成精了的佛珠。想要让更多的人向佛,于是施法,让这些人失去了记忆,只想一心礼佛。使人向佛,本来是好事,但强人所难,脱离了本质,便是着了相,也可以说反而是入了魔。
ThoughtWorks
2018/09/20
4830
复用的着相 | 洞见
如何让短视频做到”秒播“?(下)
前面我们讲到,如果要让短视频做到”秒播“的话,可以从域名解析、socket buffer、Probe buffer入手,对短视频小视频源码进行优化,那么我们今天来把剩余的几个方面介绍完。
云豹通讯员
2020/03/18
2K0
如何让短视频做到”秒播“?(下)
如何让短视频做到”秒播“?(上)
和直播一样,短视频想要做到“秒播”,不仅仅是要在短视频小程序源码上做优化,还要在服务器上做优化。移动设备的视频播放器是通过某个视频url域名,通过DNS服务请求到IP地址,通过这个IP地址与视频服务器建立TCP链接,在连接之上建立http协议,最终请求到数据,通过播放器进行解析,用户看到画面听到声音,一个短视频的起播流程就结束了。
云豹通讯员
2020/03/16
2.1K0
如何让短视频做到”秒播“?(上)
多播委托
/// <summary> /// 多播委托就是将多个函数指向一个委托 /// </summary> static void Main(string[] args) { del del1 = test1; del1 += test2; del1 += test3; del1 -= test1; //取消函数test1的指向
指尖改变世界
2018/08/31
5900
IP多播
                      1   多播地址                     IP多播地址采用D类IP地址确定多播的组,地址范围是224.0.0.0 到 239.255.255.255.                        2 组管理协议(IGMP)               两个多播节点之间的所有路由器必须支持IGMP协议 任何没有开启IGMP的路由器仅简单的丢弃接收到的多播数据                       3   使用IP多播             
用户1154259
2018/01/17
1.4K0
IP多播
简单的事件多播
1:自定义的delegate类型继承自MuticastDelegate,这是多播机制他娘
liulun
2022/05/09
5230
socket 实现最小化组播(多播)程序
组播是在局域网中向一个子网内加入了某个组播组的客户端发送批量发送数据,它类似于广播但并非广播,组播的地址有固定的几种,本案例中使用了239.0.0.2这个组播地址,具体实现代码分客户端和服务端,请参考:
我与梦想有个约会
2023/10/20
5530
socket 实现最小化组播(多播)程序
igmp协议用来实现组播功能_组播管理协议
组播基本架构 单播数据包传输的路径是利用“逐跳”(hop-by-hop)转发原理在IP网络中传输。相较于IP单播,IP组播通信的特点是数据包的目的地址不是一个特定的单一IP地址,而是一个特定组地址。
全栈程序员站长
2022/10/05
3K0
igmp协议用来实现组播功能_组播管理协议
为什么说有数据就意味着有钱?那又如何利用数据来挣钱呢?
这是一个“大数据时代”,很明显,它的核心是数据,那数据有什么价值(有钱)呢?如何从数据中提取价值(挣钱)呢?这些问题是我们今天要讨论的。开始讨论之前,先来说下为什么要写这篇文章。其实原因很简单,赶上月底,打算推荐两本对新手有帮助的书籍,但是这和写这篇文章有什么关系呢?其实是这样的,虽说当前很多号主都会有抽奖送书的活动,但是很少有人会仔细的去为每一本书写推荐理由,即便写,基本上也是直接搬运过来了书籍简介。因为我要做一个极客,所以我打算给大家推荐书籍时结合当前的一些技术情况以及这本书的特色来说明下书籍的价值,虽说会花费我不少的时间,但是我觉得这样除了能让大家认识这本书之外,还能学习和了解一些技术。好了,我们开始今天的主题吧!
abs_zero
2018/12/21
1.6K0
为什么说有数据就意味着有钱?那又如何利用数据来挣钱呢?

相似问题

如何拿到主播的视频?

0178

ie浏览器播流失败是什么原因?

1234

随心播DEMO ios无法发布,键盘挡住了发布按钮?

3370

iOS随心播怎么将音量降到最低?

2458

询问如何使用私有的随心播,视频服务?

2427
相关问答用户
某公司 | 程序员擅长1个领域
新浪微博 | 高级总监擅长4个领域
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档