更新:
有一些很好的解决方案,但我意识到我的前提存在一个问题:一旦进程执行,rt.exec 似乎将无法返回到 java 代码。谢谢你的帮助!
我想以编程方式每秒拍摄一次屏幕截图,每个屏幕截图的标题应该是时间戳。我正在使用 vlc 来实现这一点。
starttime = System.nanoTime();
screencapProcess = rt.exec("C:\\VLC\\vlc screen:// --dshow-vdev=screen-capture-recorder --dshow-fps=1 -I dummy --dummy-quiet --rate=1 --video-filter=scene --vout=dummy --scene-format=jpg --scene-ratio=1 --scene-prefix=snap --scene-path=" + path +" --scene-prefix="+ "ScreenCapAt" + ( String.valueOf(((long)System.nanoTime() - starttime)).substring(9, 14))+" vlc://quit ");
相关部分是:
String.valueOf(((long)System.nanoTime() - starttime)).substring(9, 14))
这会导致 nanoTimes 小于 1 的索引越界异常。
我不能将“System.nanoTime() - starttime”声明为这一行之外的变量来获取它的长度,因为这会改变我的时间。
有没有办法在一行上获取这个长度未知的未声明变量的最后 5 位数字?
这个答案需要适合我的 rt.exec 行。
一些想法:
- 按位移位和屏蔽。
- 连接到我的 .exec
- 后期处理
- 创建一个新类
- 再次调用 System.nanoTime() - starttime 会增加操作时间并取消我的计算。
- 有没有更好的方法来原子地获取捕获时间?