猜你喜欢: acfun视频黑屏, Acfun, 360
原文请移步:
https://www.deleak.com/blog/2010/05/29/fix-acfun-video/下边是直接copy过来的,图片不显示什么的请多担待,我设置了图片防盗链。
*
这是一篇迟到近3个月的文章……
(停!windows 用户以及急欲修复视频的用户请停止继续阅读,请直接使用chunqing286的修复工具进行修复。)
在今年3月时候,就有朋友跟我抱怨说mplayer不能播放下载回来的flv文件(原帖)。这让我这个mplayer控何情以堪?所以要来地址亲自尝试,结果不出所料,failed miserably…
视频地址:
http://bilibili.us/video/av4193/ 【MMD】这不是Miku 这是221大人(请点击播放按钮以播放视频)
视频下载:
http://tj5.dhot.v.iask.com/f/1/6cdea1d8cb42d852a36df96c01fff20128983640.flv *
分析
视频大小34.1m,首先通过mediainfo分析视频信息:
看起来没有什么异常?但那是仔细算一下就会发先问题所在:
结果是31.8m,与文件体积相差约0.4m。
只有文件头被破坏或者修改才可能发生文件识别错误的情况。
用mplayer播放以下看看错误信息:
Opening video decoder: [ffmpeg] FFmpeg's libavcodec codec family
Selected video codec: [ffflv] vfm: ffmpeg (FFmpeg Flash video)
Opening audio decoder: [mp3lib] MPEG layer-2, layer-3
AUDIO: 44100 Hz, 2 ch, s16le, 32.0 kbit/2.27% (ratio: 4000->176400)
Selected audio codec: [mp3] afm: mp3lib (mp3lib MPEG layer-2, layer-3)
可以看到,mplayer使用了libavcodec进行分离,并调用ffflv和mp3解码器进行播放。整个步骤基本无误,而出了前几帧外,后边则有近20k行的解码失败日志。(full ver.)
基本可以判断是flv文件被修改而导致播放器播放失败。
*
flv文件结构
接下来就是自习flv文件结构时间,资料(1,2,3,4,5)—— 必修课
现在是深入了解变态编码时间:——选修课
之所以会产生畸形视频,是因为很多视频网站只保留视频索引,而视频文件并非保存在本地服务器。例如acfun,bilibili,均调用新浪的视频进行播放。因为本地不能存储视频,所以视频上传到新浪时,新浪会对码率,分辨率过大的视频进行压缩以保证流畅播放。因为二次压缩会影响视频质量,所以很多人研究了很多方法(资料)以避免上传的视频被新浪压缩。但是因为视频文件被刻意修改,所以普通播放器不能播放。
目前最为常见的是前黑法。(理论上应该叫文件头重塑法吧~)
综合播放器日志及对flv文件头的分析,判定其文件头被修改。
一般来说,他们都是通过这个前黑+月亮合并器进行修改的(工具内含有两个分辨率版本的一秒h263黑屏视频和一个垃圾合并器)。之所以说合并器垃圾呢,是因为真的要忍不住吐槽了……用这么粗鲁的方式合并flv我也是此生仅见。倒也不错,成就了n多畸形flv。
因为合并器合并后的视频是1s h263+ 真正视频主体,而真正的视频和那一秒的黑屏视频参数有差别,合并器并未转换视频流以使flv文件结构正确,反而只是修改文件头,必然导致播放器播放失败。
*
修复!
删除多余数据法:
既然知道了是使用一秒黑屏的h263修改文件头强制合并,那么把问题视频的一秒黑屏数据删除即可实现视频文件修复。
使用十六进制编辑器打开需要修改的flv文件和一秒黑屏的原文件(上文已经提供打包下载)。
请仔细观察上左图(源视频)和上右图(1s黑屏),选中部分内容相同。所以把源视频文件 09 00 00 06 2C 后的部分删除即可(参照flv文件结构去~)。至于说删多少呢,删除文件头部分和一秒黑屏的交集部分就可以了。
如上图所示,删除至此即可。修改完毕:
把修改后的文件另存为flv文件。(请不要覆盖原有文件!)
如图所示,视频文件已经可以正常播放了
文件头替换法:
既然已经知道文件头是被损坏,那么使用完好的文件头对无法播放的视频文件头进行替换,理论上可以实现对已经损坏的文件的修复。
*
linux下的修复程序:
http://code.google.com/p/xflvtool/arch+gcc编译成功,使用时失败,大家可以参考下代码~(话说还是手工修复感觉更hacky哦~)
*
吐槽时刻:
非常抱歉,这里没有你们能看到的怨念吐槽。总之,对视频文件头等其他部分的破坏和任意修改,都是对访客,新浪,乃至于视频制作者的不尊重,希望你们能自重。ps:不要在喊渣浪这个词,新浪免费提供空间为你们储存这些畸形文件,实乃大度。如果全部rm掉,也是理所应当,不要再对任何事务怀有怨念,而是应该以感恩的心去用……
*
特别感谢:
chunqing286,一心月,zhu527812567, ryoohki
*
参考资料:
http://weiyuhu.javaeye.com/blog/570237http://noahgenius.javaeye.com/blog/164782http://blog.sina.com.cn/s/blog_48f93b530100eyoe.htmlhttp://blog.sina.com.cn/s/blog_4a741176010005tp.htmlhttp://www.2dland.cn /space.php?uid=24&do=blog&id=434(需注册)
http://www.5uflash.com/flashjiaocheng/Fmsjiaocheng/2351.htmllinux快速入门教程+进阶手册!