【发布时间】:2017-08-24 03:05:41
【问题描述】:
我有一个冷融合应用程序。我正在通过ffmpeg和coldfusion从手机转换录制的视频。这是我正在运行的 ffmpeg 命令。
ffmpegPath -i "inputfile" -vcodec libx264 -acodec aac "OutputFile"
输出文件类型为 mp4。我想将我的所有视频转换为带有 h.264 和 ACC 声音的 mp4。这样它就可以在所有平台上运行。
我收到以下错误:
java.io.IOException: ffmpeg returned non-zero exit status. Check stdout.
这是我正在运行的 CF 代码。
<cfset resultLog = "path\to\directory\testOuput_result.log">
<cfset errorLog = "path\to\directory\testOuput_error.log">
<cfset results = structNew()>
<cfscript>
try {
runtime = createObject("java", "java.lang.Runtime").getRuntime();
command = 'ffmpegPath -i "inputfile" -vcodec libx264 -acodec aac "OutputFile"';
process = runtime.exec(#command#);
results.errorLogSuccess = processStream(process.getErrorStream(), errorLog);
results.resultLogSuccess = processStream(process.getInputStream(), resultLog);
results.exitCode = process.waitFor();
}
catch(exception e) {
results.status = e;
}
</cfscript>
<cffunction name="processStream" access="public" output="false" returntype="boolean" hint="Returns true if stream was successfully processed">
<cfargument name="in" type="any" required="true" hint="java.io.InputStream object">
<cfargument name="logPath" type="string" required="false" default="" hint="Full path to LogFile">
<cfset var out = "">
<cfset var writer = "">
<cfset var reader = "">
<cfset var buffered = "">
<cfset var line = "">
<cfset var sendToFile = false>
<cfset var errorFound = false>
<cfscript>
if ( len(trim(arguments.logPath)) ) {
out = createObject("java", "java.io.FileOutputStream").init(arguments.logPath);
writer = createObject("java", "java.io.PrintWriter").init(out);
sendToFile = true;
}
reader = createObject("java", "java.io.InputStreamReader").init(arguments.in);
buffered = createObject("java", "java.io.BufferedReader").init(reader);
line = buffered.readLine();
while ( IsDefined("line") ) {
if (sendToFile) {
writer.println(line);
}
line = buffered.readLine();
}
if (sendToFile) {
errorFound = writer.checkError();
writer.flush();
writer.close();
}
</cfscript>
<!--- return true if no errors found. --->
<cfreturn (NOT errorFound)>
</cffunction>
我也使用了不同的 ffmpeg.exe,但得到了同样的错误。我还在冷融合中使用了ffmpeg-cli-wrapper java 包装器。我仍然遇到同样的错误。谁能帮我解决这个问题。
【问题讨论】:
-
检查标准输出 - 那么标准输出是怎么说的呢?你看到这些类似的问题了吗? reference 1 - reference 2 - reference 3
-
@Miguel-F。感谢您的答复。是的,我看到了他们。我能够解决它。我没有将输入文件的绝对路径传递给导致问题的 ffmpeg。
-
好的,很好。很高兴你解决了。请在此问题的答案中添加详细信息,以便其他人看到解决方案。
-
@Miguel-F。好的。谢谢
标签: video ffmpeg coldfusion