一个诡异的视频导出bug

昨天qim遇到一个非常诡异的bug。
步骤:
1 横屏拍摄一段视频后,添加滤镜马赛克,发表,然后把发表的视频保存到本地。
2 启动拍摄,选择上一步保存的视频,发表。

问题:
1 发表成功后,本地缓存的视频被拉伸放大。
2 其他客户端看到的这个视频,下半部黑屏,显然是横的视频没有被翻转90度。
3 本地清缓存,重新下载的视频,下半部黑屏,跟其他客户端看到的一致。

报过来这个bug的时候,我第一反应是不是视频导出的代码有问题,因为前段时间也遇到过类似的问题。自从产品上了本地视频可编辑这个功能后,就像开启了潘多拉魔盒,各种奇怪的bug不断。因为本地视频可能来自不同的设备,可能被各种编辑软件编辑过,其比例,参数,格式等等千差万别,而日迹只支持竖屏,这意味着很多的视频在发表的时候都需要处理一次,把横的竖过来,并且统一尺寸。

本地尝试重现:
模拟器无法重现。
真机调试,可以重现。

这就非常蛋疼了。

再仔细分析现象,发现问题没这么简单:
1 发布端第一次看到的视频仅仅被拉伸,清缓存后的视频却是下半部分黑屏

比较.jpg

2 同一个视频,用模拟器发没问题,真机有问题
3 其他的横屏视频没问题

首先第一个问题,我怀疑是不是本地预览视频跟最后上传服务器的视频不是同一个,因为“看"的和“传”的不是同一个。于是视频抓出来看看,装了itools,捣鼓捣鼓了半天,终于把视频抓出来了。但是问题更加诡异了。

视频处理后生成的本地文件:

compare.jpg

上图可以看到,用系统默认播放器播放,视频被拉伸。用其他播放器mpv,mplayerx等,可以正常观看。

清缓存,从服务器把刚上传的文件拉下来:

屏幕快照 2017-09-08 09.46.35.jpg

上图看到,下载后的视频,两种播放器都是下半部分黑屏。

第一个现象,我怀疑是导出视频时,视频信息被写乱了。或者导出的视频和上传视频不是同一个
第二个现象,无法解释,难道视频在上传时(复制时),视频信息被修改了??

第一个问题确认,导出的视频在上传前需要经过压缩处理,所以这一步,拉伸的视频被裁剪了?
第二个问题,视频尺寸在压缩时会被修改,从320x569 变成 640x960。

问题原因找到了,但是解决方案呢? 没有,让我们再总结一下这个bug诡异的地方:
1 模拟器没问题,真机有问题。 (排除了ios版本问题)
2 本地导出的视频,quicktime播放有问题,其他播放器播放没问题。
3 视频压缩后被裁剪,其他同样尺寸的视频却无此问题。

模拟器没问题,真机有问题,为毛? 难道苹果的模拟器有问题
其他播放器看视频没问题,就系统播放器有问题? 难道系统的默认播放参数与其他播放器不一样 ?

专门看了一下系统播放器是否有什么参数可调,又变现一个奇怪的现象:

屏幕快照 2017-09-11 09.02.33.png

有问题的视频,其”实际大小“的选项是灰色的

屏幕快照 2017-09-11 09.03.02.png

一般的视频,其”实际大小”是可以点击的。

不过也不是必然,有些正常播放的视频,其”实际大小“也是disable。

我又比较了一下,正常与不正常的视频的参数,发现一个问题:

正常视频

横视频,正常.png

被拉伸视频

被放大的视频.png

其clean Aperture width 与实际大小不相符,问题应该处在这里

压缩后的视频

发表后视频.png

压缩后的视频其clean Aperture width和width又是一致的

猜测这里的问题是,导出的视频clean Aperture width与实际width不一致,所以在系统播放器里,视频被拉伸了320->568,其他播放器忽略或者纠正了这个问题,所以能正常播放。

然后,系统继续使用错误参数,在视频压缩的时候,被拉伸的视频被裁剪了。

屏幕快照 2017-09-11 09.32.09.png

所以问题出在导出视频的时候,参数错了。
上面的推论可以解释现象,但无法解释为什么模拟器是正常的。但问题肯定出在导出这一步,所以我调整参数看看正导出过程到底发生了什么。

屏幕快照 2017-09-11 10.14.41.png

这个过程看起来都没问题,但是发现一旦把最后的平移设置为视频的宽度时(320),导出的视频就会拉伸,最后经过测试,取了一个最接近值319.999999。算暂时解决了这个问题。

最后总结一下这个问题的原因:
1 导出视频时,视频的长宽参数有问题,系统播放视频时拉伸了视频。
2 视频压缩时,按照错误的长宽进行了裁剪。
3 模拟器没问题,真机有问题。

最后通过修改精度解决此问题,这是否是因为模拟器的计算精度比真机的计算高度要高,所以能正确导出这个视频 ?待有时间继续研究。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,636评论 5 468
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,890评论 2 376
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,680评论 0 330
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,766评论 1 271
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,665评论 5 359
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,045评论 1 276
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,515评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,182评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,334评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,274评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,319评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,002评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,599评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,675评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,917评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,309评论 2 345
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,885评论 2 341

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 171,263评论 25 707
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,563评论 18 139
  • 一节晚自修 她从水房接水回来,莫名觉得教室里气氛与先前有些不同。像是受到不自觉的吸引,她的目光找到了原因。斜前方新...
    静心即可阅读 313评论 4 3
  • 石麦心里害怕极了,虽然他曾不止一次的看过武侠小说中的人物手握长剑与人对峙的情节。但万万没想到今天成真了...
    石三三阅读 371评论 0 2
  • 列王记下第5章 本章记载亚兰王的元帅乃缦得了大麻风,寻求神人(以利沙)医治,结果大麻风被医治好,乃缦回来答谢神人,...
    梁耀平阅读 1,284评论 2 1