[英]Making ffmpeg/javacv less verbose in java
我有一个Java应用程序,它使用ffmpeg
库和javacv
来加载和处理视频文件。
我目前正在使用以下代码,用于将videofile
加载到我的数据容器中。
public boolean add(String videofile) {
FrameGrabber g = new OpenCVFrameGrabber( videofile );
try{
g.start();
}
catch(Exception e){
g = new FFmpegFrameGrabber( videofile );
try {
g.start();
}catch(Exception x){
return false;
}
}
grabbers.add( new Pair(videofile, g) );
frames.add( 0 );
preprocessed=false;
return true;
}
每次加载视频时,库都会输出大量有关视频本身的元信息:
输入#0,mov,mp4,m4a,3gp,3g2,mj2,来自'/home/lejlot/data/test.mp4':元数据:major_brand:isom minor_version:512 compatible_brands:isomiso2mp41编码器:Lavf53.21.1持续时间:00: 04:36.27,开始:0.000000,比特率:305 kb / s流#0:0(und):视频:mpeg4(简单配置文件)(mp4v / 0x7634706D),yuv420p,1280x720 [SAR 1:1 DAR 16:9], 303 kb / s,20,85 fps,30 tbr,1k tbn,1k tbc元数据:handler_name:VideoHandler
这显然我不想看到。 我不能(不想)修改库源代码,而是修改我自己的源代码,以便它可以拦截这个日志并丢弃它。
到目前为止,我试图临时阻止stdout / stderr流
private static final devnull = new PrintStream(new OutputStream() {
@Override
public void write(int b) {
//DO NOTHING
}
@Override
public void write(byte[] b,int x,int y){
}
});
/**
* Blocks messages to stdout
*/
public static void silentStdOut(){
System.setOut(devnull);
}
/**
* Blocks messages to stderr
*/
public static void silentStdErr(){
System.setErr(devnull);
}
但它似乎没有帮助,仍然显示日志消息
public boolean add(String videofile) {
Utils.silentStdErr();
Utils.silentStdOut();
FrameGrabber g = new OpenCVFrameGrabber( videofile );
try{
g.start();
}
,,,
可以将“原始”ffmpeg设置为使用更简洁
ffmpeg -loglevel panic
但也OpenCVFrameGrabber
不FFmpegFrameGrabber
给访问工具的参数。
总结一下 - 如何在不修改库源代码的情况下丢弃这些日志消息?
几分钟之前有同样的问题,除了你的问题外,还看了网。 然后我开始挖掘ffmpeg源代码并找到解决方案,添加导入:
import com.googlecode.javacv.cpp.avutil;
然后打电话:
avutil.av_log_set_level(avutil.AV_LOG_QUIET);
在创建FFmpegFrameGrabber之前 - >没有更多消息来自ffmpeg。
问候
丹尼尔
这是更新的解决方案(来自github的wrt javacv)
添加下面给出的import语句
import static org.bytedeco.javacpp.avutil.AV_LOG_PANIC;
import static org.bytedeco.javacpp.avutil.av_log_set_level;
在创建FFmpegFrameGrabber之前调用以下语句 - >没有更多消息来自ffmpeg。
av_log_set_level(AV_LOG_PANIC);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.