临近春节假期之际,我司提供给客户用的命令行工具还遭遇一个新需求:
支持管道输入/输出。
需求背景:
原始的视频流体积巨大(一个十分钟视频的原始视频流就占用
2G
多空间),为了节约机器资源,客户希望能将原始的视频流直接通过管道输入,而不必转码生成临时媒体文件。
简而言之,客户希望支持这种调用方式:
1 | cat some_big_rawvideo | ./my_prog |
比如,我们用到的 ffmpeg
和 ffplay
工具也支持通过 -
或 pipe
来指定管道输入输出:
1 | ffmpeg -i input.mp4 -f avi - | ffplay - |
不幸的是,我们现有的工具并不支持,它只能根据命令行中的文件路径来指定输入输出。
1 | my_prog -i /path/to/inputfile -o /path/to/outputfile |
咋办?改!