我需要一种方法来验证视频库(几乎所有 H264/MP4 和一些 WEBM)——只是在“它播放还是不播放”的水平。这些视频位于充当服务器的 Windows 10 系统上——全部位于 1Gbit LAN 上。我的想法是使用 PowerShell 脚本创建要检查的视频文件列表,然后使用 foreach 循环在其中调用 ffplay,如下所示:
ffplay -loglevel error -autoexit -t 5 filename.mp4 2> logfile.txt
效果很好,但问题是,当到达停止点时,播放会停止,但视频窗口最多 30 秒内不会关闭,这将大大延长我对这 100 多个视频的测试时间。有趣的是,当视频窗口处于冻结状态时,如果我在窗口中按“Q”,它会立即关闭。
我尝试过不使用 stderr 重定向,也不设置日志级别 - 问题依旧。我不认为这是由于从 PowerShell 启动导致的,因为我也尝试过从 DOS 命令行启动,结果还是一样。还在不同的系统上尝试过,使用不同的视频等。结果总是一样。
我觉得自动退出可能不会经常检查视频是否已结束?我认为即使视频已停止,文件仍会从磁盘读取,直到达到某个点(可能是 i 帧)?如果我连续两次使用同一个视频,则几乎立即退出 - 这可能表明快速读取已缓存的数据?但当然,这对我没有帮助,因为在我的测试中每个视频只读取一次。
有没有更好的方法来做到这一点,或者我可以使用更好的选择?
谢谢。