Java 1.7原子移动不能正常工作?

时间:2018-02-22 14:15:25

标签: java ffmpeg

有这种情况: 在文件系统上有FFmpeg程序,它将视频源从网络摄像头流式传输到youtube服务器。 FFmpeg支持文本过滤器,您可以在其中指定从哪个文件中读取一些静态文本然后重叠"覆盖"通过视频。问题是如果文件不存在或者其他人正在写入此文件,则FFmpeg可能会崩溃。

在Java中,使用StandardCopyOption.ATOMIC_MOVE选项完成了此示例:

import java.io.PrintWriter;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.nio.file.StandardCopyOption;
import java.util.Date;
import java.util.Random;
import java.util.Timer;
import java.util.TimerTask;

public class FileMover {

    private void runIt() {
        Random r = new Random();
        Timer timer = new Timer();
        timer.schedule(new TimerTask() {
            public void run() {

                try
                {
                  PrintWriter writer = new PrintWriter("c:/video/temppodatki.txt", "UTF-8");
                  writer.println("Temp: " + ((int)(Math.random() * (40 - 10)) + 10)+ " °C");
                  writer.println("Sla: " +  ((int)(Math.random() * (37 - 30)) + 30)+ " PSU");
                  writer.close();    

                  //premaknemo fajl..
                  Path sourceFile = Paths.get("c:/video/temppodatki.txt");
                  Path destinationFile = Paths.get("c:/video/podatki.txt");
                  Files.move(sourceFile, destinationFile, StandardCopyOption.ATOMIC_MOVE);
                  System.out.println("move.." + new Date().toString());
                }
                catch(Exception ex)
                {

                }
            }
        }, 0, 5 * (1000 * 1));
    }

    public static void main(String[] args) {
        new FileMover().runIt();
    }

}

此脚本写入tmp文件,然后移动到FFmpeg读取的文件。 但问题仍然是相同的,因为随机的FFmpeg会崩溃:

enter image description here

还有其他方法吗?

0 个答案:

没有答案