我使用 RTMPDump 下载媒体流,我想将输出重定向到我可以控制的流,这样我就可以解析进度并做一些事情。但是该程序与许多命令行工具一样,在同一行中显示进度,然后在程序运行时不断更新。它看起来像这样?
44929.160 kB / 556.34 sec
我的问题是:这是某种特殊字符,它删除了使程序能够重写同一行的字符或行吗?还是发生了其他事情?
我使用 RTMPDump 下载媒体流,我想将输出重定向到我可以控制的流,这样我就可以解析进度并做一些事情。但是该程序与许多命令行工具一样,在同一行中显示进度,然后在程序运行时不断更新。它看起来像这样?
44929.160 kB / 556.34 sec
我的问题是:这是某种特殊字符,它删除了使程序能够重写同一行的字符或行吗?还是发生了其他事情?
一个简单的方法是在每行的开头打印一个回车:
# Using bash as an example
for i in {0..10}; do
printf "\r%s" $i
sleep 1
done
更复杂的格式可以使用 ANSI 转义码来更精确地定位光标。
如果要写同一行,则必须删除字符并用新字符覆盖它们。您可以通过提供适量的backspaces
删除字符来做到这一点。另一种选择是清除整个控制台然后重写它。这可以通过System("cls");
(Windows 上的 C++)来完成。