小编Mar*_*rco的帖子

将IntelliJ IDEA调试器附加到正在运行的Java进程

是否可以将IntelliJ IDEA调试器附加到正在运行的Java进程?如果有,怎么样?

debugging intellij-idea

220
推荐指数
4
解决办法
16万
查看次数

资源下载Android应用程序主题/样式?

是否有资源下载Android开发环境的主题和/或样式,以便我可以在我的应用程序中使用它们?

谢谢

android themes styles download

16
推荐指数
0
解决办法
2588
查看次数

管道从java应用程序到ffmpeg子进程的图像系列

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

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

当我在控制台中运行"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);
Run Code Online (Sandbox Code Playgroud)

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 …

java bufferedimage ffmpeg pipe

5
推荐指数
1
解决办法
3116
查看次数

如何有效地改变 Java 中字节数组的字节序

我有一个很长的字节数组,表示大图的abgr32像素数据 ( 0xAABBGGRR)。有没有一种有效的方法来改变java中这个长字节数组的endiness?

例如:

源字节数组是 [ FF,11,22,33,FF,12,34,11,..........]

是否可以将其转换为类似 [ 33,22,11,FF,11,34,12,FF,....] 的内容?效率很重要。

我曾尝试使用 ByteBuffer.order( ByteOrder.LITTLE_ENDIAN) 和ByteBuffer.order(ByteOrder.BIG_ENDIAN)转换,但它没有帮助。

感谢您的帮助。

java arrays bytearray endianness

3
推荐指数
2
解决办法
4782
查看次数

从Java应用程序发送原始像素数据时,FFMpeg以错误的帧速率进行压缩

我正在尝试根据一系列原始的rgb24像素数据创建一个压缩的h264视频文件。像素数据从Java应用程序流式传输到其子进程ffmpeg.exe。

为了进行测试,我创建了一个带有rgb24像素数据的字节数组,然后将其发送到ffmpeg的输入流。

除了一个问题,一切都正常。

看起来编码文件的帧速率不正确。FFMpeg应该以30fps的速率(-r 30)压缩视频文件。

我正在发送30 * 20帧。因此,我应该获得一个长度为20秒的视频文件。但与此相反,视频文件的长度是24秒。当我检查压缩文件的属性时,它按预期显示30fps。

看起来预期帧速率与实际帧速率之间的比率为5到6(20-> 24,30-> 36)。我也尝试流式传输rgb32像素数据,但结果相同。

码:

    ByteArrayOutputStream byteArray = new ByteArrayOutputStream();
    //building the frame
    for (int i=0; i<1024*800; i++)
    {
        byteArray.write(i&0xFF);    //r
        byteArray.write(i&0xFF);    //g
        byteArray.write(i&0xFF);    //b
    }

    byte pixelData[] = byteArray.toByteArray();

    File ffmpeg_output_msg = new File("ffmpeg_output_msg.txt");

    ProcessBuilder pb = new ProcessBuilder("ffmpeg.exe","-vcodec","rawvideo","-f","rawvideo","-pix_fmt","rgb24","-s","1024x800","-i","pipe:0","-r","30","-y","-c:v","libx264","out.mkv");

    pb.redirectErrorStream(true);
    pb.redirectOutput(ffmpeg_output_msg);

    Process p = pb.start();
    OutputStream ffmpegInput = p.getOutputStream();

    //30fps, 20secs
    for(int i=0;i<30*20;i++)
    {
        ffmpegInput.write(pixelData);
    }
    ffmpegInput.flush();
    ffmpegInput.close();
Run Code Online (Sandbox Code Playgroud)

有什么想法可能是这个问题的根源吗?提前致谢

更新 我已将帧速率更改为其他值,并且看起来ffmpeg完全忽略了该参数。它始终使用25fps。仅对文件属性中写入的数据使用“ -r 30”效果(视频:MPEG4视频(H264)1024x800 30fps [视频])

编码文件中是否可能有两种不同的帧率?

java ffmpeg frame-rate pipe

2
推荐指数
1
解决办法
1764
查看次数