prepare_app_arguments函数分析
ffmpeg 命令行是一个跨平台的可执行文件,可以在 Linux,Windows 上运行不出问题,这是因为在 ffmpeg.c
里面做了很多兼容处理,而 prepare_app_arguments()
函数就是其中之一。
prepare_app_arguments()
函数在 Linux 上是一个空函数,但是在 Windows 上却有 40 行代码,这些代码主要是用来把 宽字符 转成 UTF-8 的。
Windows 上的宽字符好像是 UTF-16 ,具体宽字符的规则跟标准,我没怎么去看,我也不太懂。不过无论是那种字符编码,都是一段内存数据。
下面让我们一起学习一下 prepare_app_arguments()
函数。
要断点调试 prepare_app_arguments()
函数,推荐使用 VsDebug
,请看《用VsDebug断点调试FFmpeg》。
prepare_app_arguments()
函数一开始就用 GetCommandLineW 函数获取整个命令行字符串的数据,然后用 CommandLineToArgvW 分析这个字符串,弄成指针数组,例如根据空格分割成数组。
VIP 专属文章