return false;
2. 解析视频以获得有关其分辨率、OETF、色彩空间和色彩格式的信息 。然后将信息保存在自定义变量中 。在下面的示例中,变量被命名为VideoInfo 。
public class VideoInfo {
private int width;
private int height;
private int tf;
private int colorSpace;
private int colorFormat;
private long durationUs;
}
3. 创建一个SurfaceView对象,SDK 将使用该对象处理渲染图像 。
// surface_view is defined in a layout file.
SurfaceView surfaceView = (SurfaceView) view.findViewById(R.id.surface_view);
4.创建一个线程来从视频中解析视频流 。
渲染和转码视频
1. 创建并初始化HdrVividRender实例 。
HdrVividRender hdrVividRender = new HdrVividRender();
hdrVividRender.init();
2. 配置视频源的 OETF 和分辨率 。
// Configure the OETF.
hdrVividRender.setTransFunc(2);
// Configure the resolution.
hdrVividRender.setInputVideoSize(3840, 2160);
SDK 在安卓设备上使用时,只支持输入的渲染模式 。
3. 配置输出亮度 。此步骤是可选的 。
hdrVividRender.setBrightness(700);
4. 创建一个Surface 对象,它将用作输入 。HdrVividRender工作在渲染模式时会调用该 ***,将创建的Surface对象作为configure的inputSurface参数传递给SDK 。
Surface inputSurface = hdrVividRender.createInputSurface();
5. 配置输出参数 。
设置渲染的Surface对象的尺寸 。此步骤在输出的渲染模式中是必需的 。
// surfaceView is the video playback window.
hdrVividRender.setOutputSurfaceSize(surfaceView.getWidth(), surfaceView.getHeight());
设置缓冲输出视频的色彩空间,可在转码模式下设置输出 。此步骤是可选的 。但是,当没有设置颜色空间时,默认使用 BT.709 。
hdrVividRender.setColorSpace(HdrVividRender.COLORSPACE_P3);
设置缓冲输出视频的颜色格式,可在转码模式中设置输出 。此步骤是可选的 。但是,当没有指定颜色格式时,默认使用 R8G8B8A8 。
hdrVividRender.setColorFormat(HdrVividRender.COLORFORMAT_R8G8B8A8);
6. 当使用渲染模式作为输出模式时,需要以下API 。
hdrVividRender.configure(inputSurface, new HdrVividRender.InputCallback() {
@Override
public int onGetDynamicMetaData(HdrVividRender hdrVividRender, long pts) {
// Set the static metadata, which needs to be obtained from the video source.
HdrVividRender.StaticMetaData lastStaticMetaData = https://www.dj120.cn/baike/post/new HdrVividRender.StaticMetaData();
hdrVividRender.setStaticMetaData(lastStaticMetaData);
// Set the dynamic metadata, which also needs to be obtained from the video source.
byteBuffer dynamicMetaData = https://www.dj120.cn/baike/post/ByteBuffer.allocateDirect(10);
hdrVividRender.setDynamicMetaData(20000, dynamicMetaData);
return 0;
}
}, surfaceView.getHolder().getSurface(), null);
7. 当使用转码模式作为输出模式时,调用如下接口 。
hdrVividRender.configure(inputSurface, new HdrVividRender.InputCallback() {
@Override
public int onGetDynamicMetaData(HdrVividRender hdrVividRender, long pts) {
// Set the static metadata, which needs to be obtained from the video source.
HdrVividRender.StaticMetaData lastStaticMetaData = https://www.dj120.cn/baike/post/new HdrVividRender.StaticMetaData();
hdrVividRender.setStaticMetaData(lastStaticMetaData);
// Set the dynamic metadata, which also needs to be obtained from the video source.
ByteBuffer dynamicMetaData = https://www.dj120.cn/baike/post/ByteBuffer.allocateDirect(10);
hdrVividRender.setDynamicMetaData(20000, dynamicMetaData);
return 0;
}
}, null, new HdrVividRender.OutputCallback() {
@Override
public void onOutputBufferAvailable(HdrVividRender hdrVividRender, ByteBuffer byteBuffer,
推荐阅读
- 耒阳市属于哪个市邮编 耒阳市属于哪个市 怎么念
- 以案促改心得体会20篇 以案促改心得体会2023年
- 法国包包品牌logo 法国包包品牌排行榜前十名
- 荣事达电器有限公司 荣事达电器服务中心
- 爱一个人可以爱多久是什么歌歌词是什么意思 爱一个人可以爱多久爱到心痛算不算长久
- 三中的录取分数线2021年,三中的录取分数线2021甘肃
- 辛巴现在是全互联网粉丝最多的吗?
- lpr利率什么意思
- 夸人厉害的句子带幽默 夸人厉害的句子