linux youtubedl从终端下载,但从java程序停止(同一命令)
我设法从终端下载embadded视频,但当我从java调用它时,这个程序不起作用。 这是我从java使用的
for(String url: reffererSet) {
String command = "youtube-dl " + url;
System.out.println(command);
Process proc = Runtime.getRuntime().exec(command);
BufferedReader reader = new BufferedReader(new InputStreamReader(proc.getInputStream()));
String line = "";
while((line = reader.readLine()) != null) {
System.out.print(line + "\n");
}
}
youtube-dl https://player.vimeo.com/video/2352345 --referer 'https://reffererUrl.html'
当我从终端执行时
[vimeo] 2352345: Downloading webpage
[vimeo] 2352345: Extracting information
[vimeo] 2352345: Downloading JSON metadata
WARNING: Unable to download JSON metadata: HTTP Error 404: Not Found
当我从java运行时开始下载视频,我只看到以下输出:
[vimeo] 2352345: Downloading webpage
并在不下载视频的情况下跳到下一个链接
# 1 楼答案
正如本所说,你应该使用完整的路径。程序并不总是在同一个/usr/bin/*文件夹中。对于未来的项目,你应该尝试使用
/usr/bin/bash -c "command here"
# 2 楼答案
最有可能的解决方案是使用
youtube-dl
的完整路径,因此在Linux上可能是/usr/bin/youtube-dl
。这是因为Runtime.getRuntime().exec
实际上运行的是一个文件,而不是bash shell如果这不能解决您的问题,那么您还应该将流程的错误流写入标准输出,这将告诉您问题所在