我对Java非常陌生,需要编写一个程序来监听视频转换指令,并在新指令到达时转换视频(指令存储在Amazon SQS中,但与我的问题无关)
我面临一个选择,要么使用Java RunTime来执行' ffmpeg‘转换(就像从命令行那样),要么使用inJava http://fmj-sf.net/ffmpeg-java/getting_started.php编写的ffmpeg包装器
我更喜欢使用Java Runtime来直接执行ffmpeg,并且避免使用java-ffmpeg包装器,因为我必须学习这个库。所以我的问题是,使用java-ffmpeg包装器比直接使用运行时的exec ffmpeg有什么好处吗?我不需要ffmpeg来播放视频,只需转换视频
谢谢
发布于 2009-08-15 08:19:35
如果我没记错的话,您链接到的"ffmpeg wrapper“项目已经过期,并且没有维护。ffmpeg是一个非常活跃的项目,总是有很多变化和发布。
您应该看看Xuggler项目,它为您提供了一个Java API来完成您想要做的事情,并且它们与ffmpeg紧密集成。
http://www.xuggle.com/xuggler/
如果您选择沿着Runtime.exec()路径进行操作,则此Red5线程将非常有用:
http://www.nabble.com/java-call-ffmpeg-ts15886850.html
发布于 2015-08-26 23:03:30
我也在寻找在Java中包装FFMPEG的东西。在搜索过程中,我发现了这个:https://github.com/bramp/ffmpeg-cli-wrapper。
到今天为止,它似乎在一个月前被修改过。所以,希望它能持续一段时间。
他们文档中的一个样本:
FFmpeg ffmpeg = new FFmpeg("/path/to/ffmpeg");
FFprobe ffprobe = new FFprobe("/path/to/ffprobe");
FFmpegBuilder builder = new FFmpegBuilder()
.setInput(in)
.overrideOutputFiles(true)
.addOutput("output.mp4")
.setFormat("mp4")
.setTargetSize(250000)
.disableSubtitle()
.setAudioChannels(1)
.setAudioCodec("libfdk_aac")
.setAudioRate(48000)
.setAudioBitrate(32768)
.setVideoCodec("libx264")
.setVideoFramerate(Fraction.getFraction(24, 1))
.setVideoResolution(640, 480)
.setStrict(FFmpegBuilder.Strict.EXPERIMENTAL)
.done();
FFmpegExecutor executor = new FFmpegExecutor(ffmpeg, ffprobe);
executor.createTwoPassJob(builder).run();发布于 2016-08-08 21:51:43
有很多Java库提供了FFMPEG包装器。然而,不幸的是,这些库中的大多数都过时了,使用的是旧的FFMPEG版本,这些版本缺少一些重要的编解码器(例如,Xuggler、humble、JavaAV、JavaAVC和jave)。因此,在使用这些项目时要小心!
但是,有一个FFMPEG包装器仍然是积极开发的,并支持FFMPEG 4
完全捆绑的maven人工制品
或者,您可以对FFMPEG的命令行界面使用包装器,比如ffmpeg-cli-wrapper。然后,您可以手动更新ffmpeg,而不必等待包装器库的新版本。
https://stackoverflow.com/questions/1281353
复制相似问题