【AVD】用 notepad++ 和 Excel 协助分析媒体文件包
作者:互联网
最近业务上遇到一个比较奇葩的问题。服务器制作的视频在移动端应用页面无法正常播放,尤其是无法拖拽进度条,否则会非常卡顿导致无法播放。然而在小程序、Web不会有问题,下载后播放也不会有问题,在桌面端播放更不会有问题。如果用 FFmpeg 命令行制作,则不会有问题。初步分析,应该是时间戳的问题。因此,需要对比用 FFmpeg 命令行 和 用 FFmpeg api 库制作的两个视频有什么区别。
ffprobe 可以查看媒体文件里每个 packet 的信息,但是一般来说音视频文件有很多 packet,终端显示的结果很难进行对比,因此,用 Excel 及其绘图会非常有助于分析对比。
ffprobe
对音视频开发新人来说,ffprobe
命令行是非常容易快速上手的一个音视频开发工具。比如可以用
ffprobe -v quiet -print_format json -show_streams -show_format -i input.mp4
来分析一个视频的音视频流信息,它打印了 input.mp4 这个视频文件的封装格式及其包含的各种流,和流信息。
同样的,使用
ffprobe -v quiet -show_packets -i input.mp4
可以打印 input.mp4 这个文件中所包含的所有包信息,虽然加上 -print_format json
能让程序以 json 格式打印,但是对于使用 notepad++ 来处理的话,不如不加这个,直接打印。那么,它打印出来的样子,大约是这样的:
非常长,根本没法对比。
对,使用 > packetinfo.txt
可以将这些内容打印到一个文本文档里,但是仍然无法直观对比。因此,我们将借助 Excel 来分析,然而,如何把这些参数分别填入 Excel 的表格里呢?虽然我最开始想到用 Python 写个字符串处理程序,加几个循环,这也是的确能做到的。但是毕竟不太熟悉Python,边学边写有点慢,而上峰催得急。因此,还是用 notepad 替换大法吧~~
notepad 和 Excel
如何把文本文档类型的数据填入 Excel,对于 Excel 高手来说并不陌生,Excel 中以 制表符tab
为每个单元格内容的分界,比如,如果复制 a(\t)b
这里的 (\t) 表示有个制表符,也就是经常用的 tab 键缩进。如果在 notepad 里把显示所有字符那个按钮点亮的话,上面这个 a b
在 notepad 里是这么显示的
再看看刚刚那个 ffprobe 命令行的输出结果文件内容是怎样的?
在Windows上,其结果如上图所示。
可以看到,每行后面都有两个黑底白字的 CR
LF
,这两个分别对应于正则表达式中的 \r
\n
,也就是刚好换了一行。
因此,我们第一步,就是要把这些多余的换行去掉,然而,不可避免地,不想换行的行,比如[/PACKET]
所在的行,也会被误杀。幸好,每个包都由[PACKET]
和[/PACKET]
包裹,我们可以等会儿再把被误杀的换行找回来。
按下 Ctrl+F
打开查找替换,进入替换选项卡,查找目标为 \r\n
,替换为TT
,这里的替换为后面,只需要添加容易被区分的字符即可,由于全文中没有其他 TT
,所以,我就选用了 TT
来替换,当然,你也可以用 AA
BB
ABDE
任意你喜欢,而且文中不曾出现的字符。
然后点全部替换,这需要花一点儿时间。可能甚至会有一些卡机。所以即使能这么分析,还是尽量不要用太大的视频文件来分析。
OK,等 notepad 替换完成后,将如上图所示,成为了一行的文件,当然,有可能你用了自动换行,但是这不会对结果有什么影响。
接下来,我们先把被误杀的换行找回来,查找目标 [/PACKET]TT
替换为 \r\n
,全部替换。
如此一来,我们成功地把每个包用一行来表示了。接下来,再通过把 [PACKET]TT
替换为 空,啥也不写,把前面的头去掉。然后再通过把刚刚的标记
TT
替换为 \t
,把 =
替换为 t
,就可以得到如下图所示的最终结果了。
然后就 Ctrl A
Ctrl C
,然后打开一页 Excel Ctrl V
,就可以非常明朗地查看每个包的信息了。
甚至可以画些散点图来辅助分析。
当然,还可以在第一行之前插入一行空行,然后把第A列清除内容,A1 写 frame_idx,A2~A4 分别写 0 1 2,然后选中,A2:A4,然后双击 A4 右下角的深色小正方形快速填充每一个包的索引,给 B D F H J … 列的首行起个名字,然后把 C E G I … 列及内容不变的列删除。会更好看,最终整理如下图所示:
标签:++,notepad,媒体文件,Excel,ffprobe,PACKET,TT,替换 来源: https://blog.csdn.net/u014248312/article/details/113763511