小编Fel*_*lix的帖子

使用javassist编辑本机方法类?

使用Javassist,有没有办法将代码注入本机方法?在这种情况下,我试图让我的游戏中的OpenGL调用在调用时打印出他们的名字和值,但是当我假设添加了openGL DLL代码时,我的所有尝试都会遇到错误.

该方法看起来像:

public static native void glEnable(int paramInt);
Run Code Online (Sandbox Code Playgroud)

由于这些方法最初没有正文,我发现实际添加代码的唯一方法是:

CtBehavior method = cl.getDeclaredBehaviors()[0];
method.setBody("System.out.println(\"Called.\");");
Run Code Online (Sandbox Code Playgroud)

注入本身可以工作,但是一旦加载库就说系统已经有代码,系统就会失败.

我宁愿不使用任何预制工具进行呼叫跟踪,因为我需要为用户格式化和打印列表.有办法处理这个吗?如果没有,是否有某种方法可以在另一个类中找到对OpenGL方法的所有调用,并追加对跟踪器类的附加调用?

java javassist

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

将视频+音频(通过 ffmpeg)分段和转码为点播 HLS 流的精确方法?

最近我一直在摆弄 FFMPEG 和通过 Nodejs 进行流传输。我的最终目标是通过 HTTP 提供来自任何输入文件类型的转码视频流,根据分段需要实时生成。

我目前正在尝试使用 HLS 来处理这个问题。我使用输入视频的已知持续时间预先生成一个虚拟 m3u8 清单。它包含一堆指向各个恒定持续时间段的 URL。然后,一旦客户端播放器开始请求各个 URL,我就会使用请求的路径来确定客户端需要哪个时间范围的视频。然后我对视频进行转码并将该片段传输回给他们。

现在解决问题:这种方法大部分有效,但有一个小的音频错误。目前,对于大多数测试输入文件,我的代码生成的视频虽然可播放,但在每个片段的开头似乎有一个非常小的(< 0.25 秒)音频跳跃。

认为这可能是 ffmpeg 中分割使用时间的问题,其中音频流可能无法在视频的确切帧处准确地切片。到目前为止,我一直无法找到解决这个问题的方法。

如果有人有任何方向,他们可以指导我 - 甚至是解决这个用例的现有库/服务器 - 我很感谢指导。我对视频编码的了解相当有限。

我将在下面包含我的相关当前代码的示例,以便其他人可以看到我陷入困境的地方。您应该能够将其作为 Nodejs Express 服务器运行,然后将任何 HLS 播放器指向 localhost:8080/master 以加载清单并开始播放。请参阅transcode.get('/segment/:seg.ts'末尾的行,了解相关的转码位。

'use strict';
const express = require('express');
const ffmpeg = require('fluent-ffmpeg');
let PORT = 8080;
let HOST = 'localhost';
const transcode = express();


/*
 * This file demonstrates an Express-based server, which transcodes & streams a video file.
 * All transcoding is handled …
Run Code Online (Sandbox Code Playgroud)

video transcode ffmpeg node.js http-live-streaming

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