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

2024-01-28

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

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

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

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

Java应用程序中的代码:

File ffmpeg_output_msg = new File("ffmpeg_output_msg.txt");
ProcessBuilder pb = new ProcessBuilder(
        "ffmpeg.exe","-i","pipe:0","out.avi");
pb.redirectErrorStream(true);
pb.redirectOutput(ffmpeg_output_msg);
pb.redirectInput(ProcessBuilder.Redirect.PIPE);
Process p = pb.start();
OutputStream ffmpegInput = p.getOutputStream();

byte[] image;
File file = new File("input.jpg");
image = new byte[(int)file.length()];

FileInputStream fileInputStream = new FileInputStream(file);
fileInputStream.read(image);

ImageInputStream iis = ImageIO.createImageInputStream(
        new ByteArrayInputStream(image));
BufferedImage img = ImageIO.read(iis);

ImageIO.write(img, "JPEG", ffmpegInput);

FFMpeg 输出:

ffmpeg 版本 N-59664-g94cf4f8 版权所有 (c) 2000-2014 FFmpeg 开发人员于 2014 年 1 月 7 日 22:07:02 使用 gcc 4.8.2 (GCC) 构建
配置: --enable-gpl --enable-version3 --disable-w32threads --enable-avisynth --enable-bzlib --enable-fontconfig --enable-frei0r --enable-gnutls --enable-iconv --enable -libass --enable-libbluray --enable-libcaca --enable-libfreetype --enable-libgsm --enable-libilbc --enable-libmodplug --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore- amrwb --enable-libopenjpeg --enable-libopus --enable-librtmp --enable-libschroedinger --enable-libsoxr --enable-libspeex --enable-libtheora --enable-libtwolame --enable-libvidstab --enable- libvo-aacenc --enable-libvo-amrwbenc --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libx264 --enable-libxavs --enable-libxvid --enable-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

pipeline:: 处理输入时发现无效数据

有什么想法如何让它发挥作用吗?

非常感谢您的宝贵时间。


首先确保您在代码中使用的确切命令可以在命令行中运行。看来对于管道,必须手动指定格式和编解码器:

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

Java 程序本身看起来不错。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将一系列图像从 java 应用程序传输到 ffmpeg 子进程 的相关文章

随机推荐

  • Kivy:如何创建透明背景/画布,使按钮看起来漂浮在桌面上

    我正在尝试创建一个在单板计算机 特别是使用 armbian 的 OrangePi One PC 上运行的视频播放应用程序 我在使用 ffpyplayer kivy 使用的视频播放器 创建流畅的视频时遇到问题 因此 我决定简单地运行在视频前面
  • DateTime AddMinutes 方法不起作用

    我的方法的目的是获取 currentTime 并将其设置回 20 分钟 据我所知 我的方法是正确的 但输出显示了其他内容 这是我的代码 DateTime currentTime DateTime Now double minuts 20 c
  • Shell编程:同时执行两个应用程序

    我有两个应用程序 我们称它们为 APP1 和 APP2 我想要那些 两个在我的机器上并行执行 它们没有必要完全从 同一时间 但应该大致在同一时间开始 最初的想法是有一个外壳 脚本如下所示 APP1 APP2 这是技巧还是我需要插入等待语句以
  • 为什么 std::ranges::view_interface 使用 CRTP

    根据cppreference 定义视图的辅助类模板view interface https en cppreference com w cpp ranges view interface使用奇怪的重复模板模式 CRTP 技术 它们背后的设计
  • Vim:重新映射键以切换行编号

    I added set number nnoremap
  • 音频会话:在 iOS 7.1 中使用测量模式会导致音量过低/没有声音

    将 AVAudioSessionModeMeasurement 与 AVAudioSessionCategoryPlayAndRecord 一起使用过去可以在 iOS 5 x 6 x 和 7 0 下正常工作 但现在在 iOS 7 1 下的某
  • 如何在 symfony 中尝试 Catch

    情况 trollCommand php foreach trolltypes as type type Frost RandomBroken Forest try output gt writeln type troll get type
  • Typeahead - 可滚动下拉菜单

    看起来 CSS 不适用于我的 Typeahead 我正在尝试重现可滚动下拉菜单 如下所示https twitter github io typeahead js examples https twitter github io typeah
  • Eclipse Juno 中的全屏编辑器 [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 有一些插件允许在 Eclipse 中进行全屏编辑 但我找不到可以在 Juno 上安装的插件 有谁知道这样的事情是否存在 例如 当我在市场上搜索 全屏
  • 如何用猪拉丁语组合/连接两个袋子

    我有两个数据集 A uid url B uid url 现在我做了一个cogroup C COGROUP A BY uid B BY uid 我想将 C 更改为 group AS uid DISTINCT A url B url 我的问题是
  • MVC模型布尔显示是或否

    我在 MVC 4 实体框架 4 5 的模型中有一个布尔字段 我想在我的视图中显示该字段 我用这个电话 item isTrue 但我得到的是真还是假 我想在 true 时得到 yes 在 false 时得到 no 请问我该怎么办 在您看来 i
  • PHP 从视频中提取音频

    我需要一种从某些视频中提取音频的方法 用 PHP 我有来自 YouTube 的视频流 所以我真的很喜欢它 如果它是动态流 而不是我必须将其保存到临时目录并在那里处理它 尽管这是可以接受的 谢谢 Isaac Waller编辑 更具体地说 我有
  • 将动画翻译到 Android 中的正确位置

    我在我的应用程序中为图像创建了动画 图像从屏幕中间开始直到左上角 现在我需要确保图像放置在所有设备中的正确位置 左上角 目前 对于不同的设备 它被放置在左上角的不同位置 我该如何解决它 我的代码如下
  • 修改flexdashboard的shinyauthr

    我已经构建了一个使用运行时闪亮的交互式 Flexdashboard 我想创建一个用户身份验证登录模块 页面 我偶然发现保罗 坎贝尔 Paul Campbell 的闪亮作者包 https paul rbind io 2018 11 04 in
  • 对 Java 8 可选* 值的操作。

    Java 8 有许多可选类 例如OptionalDouble OptionalInt OptionalLong 有没有一种使用同类可选值的好方法 也就是说 我希望能够做到 OptionalDouble d1 OptionalDouble o
  • 列出有关 SQL Server 中所有数据库文件的信息

    是否可以列出 SQL Server 上所有数据库的文件 MDF LDF 信息 我想获得一个列表 显示哪个数据库正在使用本地磁盘上的哪些文件 我尝试过的 exec sp databases所有数据库 select from sys datab
  • 如何去除图像中的小颗粒背景噪声?

    我正在尝试从我拥有的图像中消除渐变背景噪音 我尝试了很多方法cv2没有成功 首先将图像转换为灰度 使其失去一些可能有助于找到轮廓的梯度 有人知道处理这种背景的方法吗 我什至尝试从角落取样并应用某种内核过滤器 消除梯度的一种方法是使用cv2
  • 如何导航到同级路线?

    假设我有这个路由器配置 export const EmployeeRoutes path sales component SalesComponent path contacts component ContactsComponent 并已
  • 开发 Eclipse RCP 应用程序

    这是我第一次使用 Eclipse 3 8 开发 RCP 应用程序 我的问题可能看起来很奇怪 但对我来说确实很困惑 我可以在哪里放置应用程序的代码 如果我为我的应用程序创建所需的类 我可以在哪里使用它们的对象 在里面Application j
  • 将一系列图像从 java 应用程序传输到 ffmpeg 子进程

    我正在寻找一种将一系列图像 jpeg 从java应用程序流式传输到FFMpeg STDIN管道的方法 FFMpeg 应该处理这些图像并创建一个视频文件作为输出 FFMpeg 作为 java 应用程序的子进程执行 使用以下命令 ffmpeg