所有栏目 | 云社区 美国云服务器[国内云主机商]
你的位置:首页 > 云社区 » 正文

手机拍摄视频,播放时提示“抱歉,该视频无法播放”,什么原因?

发布时间:2020-04-15 16:30:55

资讯分类:抱歉  视频  提示  拍摄  播放  视频  录制
手机拍摄视频,播放时提示“抱歉,该视频无法播放”,什么原因?

简单地说本身帧率为15的视频已经输在起跑线上了。

首先,解释一下时间戳。视频录制的时候,编码器编码时会给每一帧打上时间戳(timestamp)。这个就是决定录制帧率的东西了。
时间戳就是每帧播放显示的时间(准确来说是PTS: presentation timestamp),用来决定播放顺序和播放速率的。例如:一个帧率为30的时间为1秒的视频相当于有30帧图片。每帧的时间可以粗略地这样计算:1000(ms)/30 frames = 33.3333ms。这样第一帧的时间戳为0, 第二帧为33,第三帧为66,... ,最后一帧为 990(这里取单位为毫秒ms)。(但是实际的时间戳不会是这样,这是因为camera会因为光线等各种原因动态调整录制帧率以改变曝光时间,所以真正录制的视频一般不会是恒定的帧率。)

第二,题主说的视频本身的帧率指的是视频的录制帧率。播放器播放视频时的帧率是播放帧率。
一般情况下,播放器是按照视频中的时间戳来播放的,也就是按照录制帧率来播放的。
即:录制帧率=播放帧率。
但是有的情况,播放器可以不按照录制帧率来播放,可以对视频进行加速或者减速。像题主说的加速两倍,就是这种情况。

对于加速的情况,如果解码器足够快,显示器刷新频率足够快的情况下, 那么就可以不丢帧地加速播放。否则,则可通过丢帧来实现加速播放。

对于减速的情况,有3种:
第一种最简单,不增加也不见减少总的帧数。直接减少每秒播放的帧数,延长播放时间,将原本1秒播放的帧数用几秒来完成。比如30fps的视频变为15fps的视频;又比如慢动作视频,240fps的视频用30fps的播放帧率来播放。
第二种,通过重复帧的方法。相当于直接复制上一帧,这样每一帧都有重复,播放帧率又不变的情况下,播放时间延长,速度当然也变“慢”了。
第三种,通过插值帧的方法。需要根据前后帧的运动信息,比如光流法(optical flow),来插值得到中间的帧。这种方法相比第二种得到的视频更加平滑。


第三,说一下慢动作视频的原理。慢动作视频是通过高帧率的录制,让每秒采集更多帧,捕捉更多普通帧率录制无法捕捉的运动细节,然后通过普通帧率来播放,达到慢动作的效果。比如IPhone慢动作视频以240帧率录制,摄像头每秒采集240帧图像。在播放的时候,播放帧率为30。即原本1秒录制的240帧,现在用8秒播放这240帧。这里需要说明的是一般标准动画的帧率为24fps,低于这个帧率,视频内容就会有细节损失,人眼就能明显感觉到视频卡顿了。而以高于这个帧率播放,人眼一般也无法感觉有什么区别。因此与其将播放帧率设置为240用1秒来播放,不如用30的播放帧率用8秒来播放。这样在不损失细节的前提下,形成了“慢动作”。

对于题主的问题,举个例子:
假设同样为10秒的视频,
30fps的视频总共有300帧, 每秒播放30帧。(录制帧率=播放帧率=30)
15fps的视频总共只有150帧(看到没有,已经输在起跑线上了),每秒播放15帧。(录制帧率=播放帧率=15)

将15fps的视频加速2倍播放:
每秒播放的帧率由15帧提升为30帧了(录制帧率=15, 播放帧率=30),相当于原本需要2秒播放的内容只用1秒来播放,所以只需要5秒就播放完了。(打脸充胖子的结果就是:快)

而30fps的视频正常播放:需要10秒播放完。

因此,这种加速播放低帧率视频的策略造成的播放效果是:。。。(拿IPhone使用延时摄影功能录段视频你就知道了。)

留言与评论(共有 0 条评论)
   
验证码:
Top