【发布时间】:2016-02-14 13:04:07
【问题描述】:
我在一栋建筑物中设置了 3 个网络摄像头,将静态图像上传到网络服务器。我正在使用 ffmpeg 将 jpgs 编码为 mp4 视频。
目录是这样设置的:
Cam1/201504
Cam1/201505
Cam2/201504
Cam2/201505
Cam3/201504
Cam3/201505
我每年使用以下 bash 循环/ffmpeg 参数为每台摄像机制作一个视频。到目前为止效果很好(嗯......除了我的 SSD 性能迅速下降 - 太多同时读/写操作?):
find Cam2/2013* -name "*.jpg" -print0 | xargs -0 cat | ffmpeg -f image2pipe -framerate 30 -vcodec mjpeg -i - -vcodec libx264 -profile:v baseline -level 3.0 -movflags +faststart -crf 19 -pix_fmt yuv420p -r 30 "Cam2-2013-30fps-19crf.mp4"
单个文件是这样命名的(混淆 ffmpeg 的内置文件排序器):
Cam1_2015052413543201.jpg
Cam1_2015052413544601.jpg
Cam2_2015052413032601.jpg
Cam2_2015052413544901.jpg
我现在需要在所有 3 台摄像机上创建一整年的视频,按时间戳排序。为此,我需要按下划线后的文件名段对查找结果进行排序。
我应该用什么管道来完成这个 find 输出?例如,上面的文件将按如下顺序排列:
Cam2_2015052413032601.jpg
Cam1_2015052413543201.jpg
Cam1_2015052413544601.jpg
Cam2_2015052413544901.jpg
非常感谢任何帮助!
【问题讨论】:
标签: bash ffmpeg find webcam cat