package probe import ( "fmt" "os" ) // FFprobeExeName 释放出来的解码器文件名。程序启动时扫到它要跳过, // 免得把自己人(ffprobe)当成媒体文件收走了。 const FFprobeExeName = "ffprobe.exe" // FFprobePath 返回当前目录下 ffprobe 的完整路径。 func FFprobePath() string { return "." + string(os.PathSeparator) + FFprobeExeName } // HasEmbeddedFFprobe 当前编译出的程序里有没有内嵌 ffprobe。 // 内嵌的版本只在对应系统里编译时带进去,所以要先问一句有没有。 func HasEmbeddedFFprobe() bool { return len(embeddedFFprobe) > 0 } // ReleaseFFprobe 把内嵌的 ffprobe 释放(写)到当前目录,才能当程序调用它。 func ReleaseFFprobe() error { if len(embeddedFFprobe) == 0 { return fmt.Errorf("当前系统没有内嵌的ffprobe") } return os.WriteFile(FFprobeExeName, embeddedFFprobe, 0777) } // RemoveFFprobe 整理完把临时释放的 ffprobe 删掉,不留在目录里。 func RemoveFFprobe() { _ = os.Remove(FFprobeExeName) }