- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我无法让它运行,因为 java 只是在等待 ffmpeg。但是 ffmpeg 不提供输入,也不提供错误流。它只是运行,但什么也不做。
"System.out.println("command:.."insert into bash 的输出按预期正常运行。因此 ffmpeg 语法没有任何问题。
这是代码。
package mypackage;
import java.awt.image.BufferedImage;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import javax.imageio.ImageIO;
/**
*
* @author test
*/
public class ffmpeg_hang {
/**
* @param args the command line arguments
*/
public static void main(String[] args) throws IOException, InterruptedException {
String INPUT_FILE="/path/to/media";
String FFMPEG_PATH="/path/to/ffmpegFolder/";
for(int i=0;(i+4)<40;i+=4){
String[] ffmpeg_pipe = new String[]{
FFMPEG_PATH + "ffmpeg_4.1.1",
"-ss",(i+""),"-t", "4",
"-i", INPUT_FILE,
"-ac", "1", "-acodec", "pcm_s16le", "-ar", "16000",
"-f","nut","-","|",
FFMPEG_PATH + "ffmpeg_4.1.1",
"-i","-",
"-lavfi", "showspectrumpic=s=128x75:legend=disabled:saturation=0:stop=8000",
"-f","image2pipe","pipe:1"};
System.out.println("command: "+String.join(" ", ffmpeg_pipe));
Process p;
//ffmpe wav->pipe->spectrogra->pipe->java
p = Runtime.getRuntime().exec(ffmpeg_pipe);
StringBuilder Boxbuffer = new StringBuilder();
BufferedReader reader = new BufferedReader(new InputStreamReader(p.getErrorStream()));
String line = "";
while ((line = reader.readLine()) != null) {
Boxbuffer.append(line);
}
System.out.println("ffmpeg errors->> "+Boxbuffer.toString());
p.waitFor();
BufferedImage image = ImageIO.read(p.getInputStream());
//do stuff with image
}
}
}
最佳答案
当以这种方式直接在命令中传递时,管道将不会被解释,它只是命令开头第一个 ffmpeg
的另一个参数。考虑使用 /bin/sh -c "command1 | command2"
作为包装器(假设非 Windows 操作系统...)。
考虑将 -nostdin
添加到第一个 ffmpeg
命令以避免 number的 issues使用 ffmpeg 尝试在您不期望它时读取标准输入(显然不是在第二个中)。
考虑使用 String.format
用变量构建复杂的字符串。
考虑使用 ProcessBuilder
来更轻松地创建流程。在这里,我将错误重定向到您的 Java 进程 stderr,这样您就可以在不使用线程的情况下读取您的子进程的标准输出。 See alternatives
所以这里有一个建议:
public static void main(String[] args) throws IOException, InterruptedException {
String INPUT_FILE = "/path/to/media";
String FFMPEG_PATH = "/path/to/ffmpegFolder";
for (int i = 0; (i + 4) < 40; i += 4) {
String command1 = String.format(
"%s/ffmpeg_4.1.1 -nostdin -ss %d -t 4 -i '%s' -ac 1 -acodec pcm_s16le -ar 16000 -f nut -",
FFMPEG_PATH, i, INPUT_FILE);
String command2 = String.format(
"%s/ffmpeg_4.1.1 -i - -lavfi showspectrumpic=s=128x75:legend=disabled:saturation=0:stop=8000",
FFMPEG_PATH);
Process process = new ProcessBuilder("sh", "-c", command1 + " | " + command2)
.redirectError(ProcessBuilder.Redirect.INHERIT)
.start();
BufferedImage image = ImageIO.read(process.getInputStream());
// ...
}
}
关于Java用(管道) "... -f nut - | ffmpeg -i - ..."执行ffmpeg命令只是挂起,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55149887/
我正在使用Apache Nutch 2.3。我有一个由4个Hadoop(1.2.1)节点组成的小型集群。我正在运行一个Crawler实例。每天大约爬行3万至5万页。我每天必须抓取更多页面(假定值约为1
不知道我做错了什么,但我的脚本停在这个有趣的 localCompare 行。不知道为什么:( function enableTimeInput() { var e = document.getEl
有人可以向我指出可以解释我所看到的内容的文档吗? Jupyter notebook 中的粉红色内容让我觉得有些不对劲。 使用 PyMC3(顺便说一句,这是类练习,我不知道自己在做什么)。 我输入了数字
我尝试在 Google Fusion Tables 中对 NUTS 代码进行地理编码(在后台使用某些 Maps API),但尽管没有收到错误消息或警告,但它无法识别这些空间单位。 NUTS区号是相当标
我正在尝试从 a paper from Richard McElreath 复制数据分析,其中他用分层零膨胀 Gamma 模型拟合数据。该数据是关于 15000 次狩猎之旅的狩猎返回,来自大约 150
我无法让它运行,因为 java 只是在等待 ffmpeg。但是 ffmpeg 不提供输入,也不提供错误流。它只是运行,但什么也不做。 "System.out.println("command:.."i
前段时间我写了一个简单的 python 程序来暴力破解驱动器 ya nuts 拼图的单一解决方案。 (来源:tabbykat.com) 拼图由 7 个六边形组成,上面有数字 1-6,所有拼图都必须对齐
我已经实现了 Bayesian Probabilistic Matrix Factorization算法使用 pymc3在 Python 中。我还实现了它的前身,概率矩阵分解(PMF)。 See my
我有一个用于学习只有一个隐藏层的贝叶斯网络的分层模型。网络参数分为 4 组输入到隐藏和隐藏到输出的权重和偏差。在每个参数组上定义高斯先验。超参数,即这些先验的标准差,具有参数 alpha=1 的 Ga
我正在使用Nomenclature of Units for Territorial Statistics (NUTS)国家次区域的数据(即州/部门、小于国家但大于城市的行政区域)。我从官方网站将它们
这个问题已经有答案了: Why is scanf() causing infinite loop in this code? (16 个回答) 已关闭 4 年前。 如果你在这个脚本中输入一个字符串,程
我有一个导航菜单,悬停时,我希望下拉菜单显示在标题下方。我将我的位置设置为标题相对位置,这样我的下拉列表将定位为绝对位置,但实际发生的是我的标题下方的元素也受到了影响,老实说我不知道我的代码发生了
我想用Google新闻之类的Java开发应用程序。 为此,我从头开始,并与Nutch进行基本设置。 我已经完成安装,但是在一个命令中出现错误。 这里是关于技术的简要介绍。我在用 -nutch 1.11
我之前实现了原始的 Bayesian Probabilistic Matrix Factorization (BPMF) pymc3 中的模型。 See my previous question供引用
我是一名优秀的程序员,十分优秀!