我正在 cygwin 中编写一个 shell 脚本,从网络驱动器上的视频列表中提取帧。
我已经为网络驱动器分配了 Windows 上的字母L:
,因此可以通过 cygwin 访问驱动器的根目录/cygdrive/l
。 本质上,脚本如下所示:
cat list | while read path
do
mkdir -p $path
echo ffmpeg -hide_banner -i /cygdrive/l/$path/video.mov ./$path/frame_%04d.png
ffmpeg -hide_banner -i /cygdrive/l/$path/video.mov ./$path/frame_%04d.png
done
对于每个文件,脚本的输出如下所示
ffmpeg -hide_banner -i /cygdrive/l/<path>/video.mov ./<path>/frame_%04d.png
/cygdrive/l/<path>/video.mov: No such file or directory
但是,该文件就在那里,因为我可以轻松添加一个file
命令来检查该文件是否存在于do
循环中
do
mkdir -p $path
file /cygdrive/l/$path/video.mov
echo ffmpeg -hide_banner -i /cygdrive/l/$path/video.mov ./$path/frame_%04d.png
ffmpeg -hide_banner -i /cygdrive/l/$path/video.mov ./$path/frame_%04d.png
done
输出结果:
/cygdrive/l/<path>/video.mov: Apple QuickTime movie (unoptimized)
ffmpeg -hide_banner -i /cygdrive/l/<path>/video.mov ./<path>/frame_%04d.png
/cygdrive/l/<path>/video.mov: No such file or directory
如果我自己从 shell 启动命令,问题仍然存在。但是,如果我将视频复制到本地目录,它确实有效,但这是一个我想避免的解决方案(因为视频文件很大)。
cygwinffmpeg
在 netork 驱动器上的行为如此有什么原因吗?