public class ConvertVideo {
private static String INPUT_PATH;
private static String OUTPUT_PATH;
private static String PROJECT_PATH;
private static HashMap<String, String> fileType;
static
{
fileType = new HashMap<String, String>();
fileType.put("avi", "true");
fileType.put("mpg", "true");
fileType.put("wmv", "true");
fileType.put("3gp", "true");
fileType.put("mov", "true");
fileType.put("mp4", "true");
fileType.put("asf", "true");
fileType.put("asx", "true");
fileType.put("flv", "true");
}
public static void convertToFLV(String projectPath, String inputFile, String outputFile)
{
INPUT_PATH = inputFile;
OUTPUT_PATH = outputFile;
PROJECT_PATH = projectPath;
if (checkContentType())
processFLV();// 直接将文件转为flv文件
}
private static boolean checkContentType()
{
String type = INPUT_PATH.substring(INPUT_PATH.lastIndexOf(".") + 1, INPUT_PATH.length()).toLowerCase();
// ffmpeg能解析的格式:(asx,asf,mpg,wmv,3gp,mp4,mov,avi,flv等)
return "true".equals(fileType.get(type));
}
private static void processFLV()
{
if (new File(INPUT_PATH).isFile())
{
try
{
String cmd = "cmd /c start F:\\project\\abc\\ffmpeg.bat \"" + PROJECT_PATH + "\" \"" + INPUT_PATH + "\" \"" + OUTPUT_PATH +"\"";
System.out.println(cmd);
Process process = Runtime.getRuntime().exec(cmd);
InputStream is = process.getInputStream();
BufferedInputStream bis = new BufferedInputStream(is);
System.out.println(bis);
int data;
while((data=bis.read())!=-1){
System.out.println(data);
}
if(data==-1){
System.out.println("data==null");
}
}
catch (Exception e)
{
e.printStackTrace();
}
}
}
public static void main(String[] args)
{
ConvertVideo.convertToFLV("F:\\project\\abc" ,"c:\\3.mpg", "f:\\03.mpg");
}
}
用ffmpeg为视频添加logo,但是始终获取不到process的值?转出来的文件确定是有logo的。
分享到:
相关推荐
这些附录只有在电子书版本中才能以电子方式获得。但是,此文档的附录描述了自本书出版以来增加的功能,可在此处以PDF格式获得。 注意:MacOS“ Catalina”用户: 最新版本的MacOS中存在一个与文件访问权限相关的...
3. `Process.CloseMainWindow()`: 如果进程有一个主窗口,这个方法会发送一个WM_CLOSE消息到该窗口,提示进程关闭自己。这种方法相对温和,给予进程关闭自身的机会,比如保存数据、清理资源等。 4. `Process.Kill()...
`getprocesspath`是一个用于获取进程完整路径的技术,它主要基于Windows NT内核提供的函数NtQueryInformationProcess。这个函数允许我们查询进程的各种信息,包括进程ID、基地址、访问权限等,其中就包含进程的启动...
首先,调用`CreateToolhelp32Snapshot`,传入`TH32CS_SNAPPROCESS`标志以获取进程快照,然后通过循环遍历`Process32First`和`Process32Next`返回的结构体,其中的`th32ProcessID`字段就是进程ID。此外,还可以使用`...
通过这些函数,程序可以获取到进程ID、进程名等信息,然后填充到用户界面中展示。 在用户界面设计上,KillProcess可能包含一个进程列表,展示每个进程的名称、PID和资源使用情况。用户可以选中目标进程,然后点击...
导入命名空间后,就可以访问到这个库提供的各种服务操作功能。 在System.ServiceProcess命名空间中,最重要的类之一是`ServiceController`。这个类充当了客户端和服务之间的桥梁,允许开发者在应用程序中控制已安装...
在Windows操作系统中,获取单个进程的CPU使用率和内存使用率是系统监控的重要部分,这对于性能分析、问题排查和资源管理来说非常关键。...请注意,这些方法都需要具备相应的系统权限才能正确获取进程信息。
5. **崩溃地址定位**:在发生系统崩溃时,RPE能帮助开发者获取崩溃时的内存地址,并通过反汇编将该地址映射到源代码行,极大地简化了故障排除过程。 二、应用实例 1. **性能优化**:当系统响应变慢时,RPE可以帮助...
2. **GetProcessId()**:用于获取指定进程的唯一标识符,通常用于跟踪和管理进程。 3. **WaitForSingleObject()** 和 **WaitForMultipleObjects()**:这些函数用于暂停当前线程,直到指定的进程或事件完成。 4. **...
此外,获取硬件信息时应考虑到权限问题,某些操作可能需要管理员权限才能执行。在编写这类程序时,确保添加适当的错误处理机制,以应对可能出现的问题,比如用户拒绝访问或者硬件信息无法读取等情况。
在C#编程环境中,我们可以利用.NET Framework提供的System.Diagnostics命名空间中的Process类来获取并管理操作系统中的进程信息。本文将深入探讨如何使用C#获取系统当前的所有进程,以及这些信息的详细含义。 首先...
标题"ProcessMonitor_delphi_"暗示了我们将讨论如何使用Delphi来获取和监控Windows系统中的进程信息。这通常涉及到操作系统级别的编程,尤其是系统监控和调试。 Delphi中实现这个功能,我们可以利用Windows API...
这一方法只能使 APK 的权限升级到 system 级别,但不能访问系统中需要 Root 权限才能执行的文件或程序。 方法二:使用 exec 函数族 在 Linux 编程中,我们可以使用 exec 函数族来执行 su 命令,从而获取 Root 权限...
5. **权限管理**: 在访问WMI时,可能需要管理员权限才能获取所有进程信息。如果VB应用没有足够的权限,可能会遇到访问被拒绝的错误。确保以适当的身份运行程序或者处理可能出现的权限问题。 6. **代码示例**: 一个...
7. "Process" 文件可能就是实际的SPSS插件文件,用户需要按照安装指南将其导入SPSS才能使用。 总的来说,"SPSS插件-Process.zip" 提供了一个增强SPSS功能的工具,版本2.16暗示了它可能包含一系列改进和新特性。用户...
通过服务的名称,我们可以获取到服务的相关信息。例如,如果我们想获取名为"Spooler"的打印服务,代码如下: ```csharp ServiceController service = new ServiceController("Spooler"); ``` `ServiceController`...
需要注意的是,在实际应用中还需要考虑到权限问题,例如某些系统服务可能需要管理员权限才能获取其信息。此外,由于涉及到Windows底层API的使用,建议开发者在实践中多加测试,确保代码的稳定性和兼容性。
`Process32First`用于获取第一个进程信息,`Process32Next`则用于获取下一个进程信息,直至遍历结束。 3. **TH32CS_SNAPPROCESS**: 这是一个常量,表示我们对进程快照的兴趣。在调用`CreateToolhelp32Snapshot`时,...
在Java Process Manager的上下文中,开发人员会使用SDK中的函数和接口来获取和操作进程信息,如进程ID、内存使用情况、CPU占用率等。 Java Task Manager的核心功能可能包括: 1. **进程管理**:列出所有运行的Java...
这个问题可能是由于Docker守护进程在启动时无法识别或访问到预设的用户组,通常与Docker的用户组设置有关。 首先,我们需要理解Docker的工作原理。Docker使用了一个名为`docker`的系统用户和用户组来管理其守护进程...