将一系列图像从java应用程序传输到ffmpeg子进程

将一系列图像从java应用程序传输到ffmpeg子进程,java,ffmpeg,pipe,bufferedimage,Java,Ffmpeg,Pipe,Bufferedimage,我正在寻找一种将一系列图像(JPEG)从java应用程序流式传输到FFMpeg标准管道的方法。 FFMpeg应该处理这些图像并创建一个视频文件作为输出 FFMpeg作为java应用程序的子进程使用以下命令“FFMpeg.exe-i pipe:0 out.avi”执行 当我在控制台中运行“ffmpeg-i input.jpg out.avi”命令时,我得到了预期的“out.avi”文件 但是,当我在java应用程序中使用以下测试程序代码时,出现了一个错误 Java应用程序中的代码: FFMpeg输

我正在寻找一种将一系列图像(JPEG)从java应用程序流式传输到FFMpeg标准管道的方法。 FFMpeg应该处理这些图像并创建一个视频文件作为输出

FFMpeg作为java应用程序的子进程使用以下命令“FFMpeg.exe-i pipe:0 out.avi”执行

当我在控制台中运行“ffmpeg-i input.jpg out.avi”命令时,我得到了预期的“out.avi”文件

但是,当我在java应用程序中使用以下测试程序代码时,出现了一个错误

Java应用程序中的代码: FFMpeg输出: ffmpeg版本N-59664-g94cf4f8版权所有(c)2000-2014 ffmpeg开发人员于2014年1月7日22:07:02使用gcc 4.8.2(gcc)构建
配置:---启用gpl--enable-version3--disable-w32threads--enable avisynth--enable fontconfig--enable-frei0r--enable gnutls--enable iconv--enable libass--enable libbluray--enable libcaca--enable libfreetype--enable libilbc--enable libmodplug--enable libmp3lame--enable libopencore amrnb--启用libopencore-amrwb--enable libopenjpeg--enable libopus--enable librtmp--enable libschroedinger--enable libsoxr--enable libspeex--enable libthera--enable libtwolame--enable libvidstab--enable libvo aacenc--enable libvorbis--enable libvpx--enable libwavpack--enable-libx264--enable libxavs--启用libxvid——启用zlib

libavutil      52. 62.100 / 52. 62.100
libavcodec     55. 47.100 / 55. 47.100
libavformat    55. 22.102 / 55. 22.102
libavdevice    55.  5.102 / 55.  5.102
libavfilter     4.  0.103 /  4.  0.103
libswscale      2.  5.101 /  2.  5.101
libswresample   0. 17.104 /  0. 17.104
libpostproc    52.  3.100 / 52.  3.100
管道::处理输入时发现无效数据

有什么办法让它工作吗


非常感谢您抽出时间。

我认为您不应该重定向输入。默认情况下,ProcessBuilder生成一个从管道读取输入的进程。

首先确保代码中使用的确切命令在命令行中起作用。对于管道,似乎必须手动指定格式和编解码器:

ffmpeg -f image2pipe -codec mjpeg -i pipe:0 out.avi < input.jpg
ffmpeg-f image2pipe-codec mjpeg-i管道:0 out.avi
Java程序本身看起来不错

ffmpeg -f image2pipe -codec mjpeg -i pipe:0 out.avi < input.jpg