HarmonyOS 鸿蒙Next imageReceiver拿到的数据帧长度
HarmonyOS 鸿蒙Next imageReceiver拿到的数据帧长度
问题描述:
1280*720,一帧nv21的数据量应该是 1280 * 720 * 1.5 = 1382400,但回调出来的视频帧byteBuffer长度是1384448,多了2048个字节,想问下是什么?
问题场景描述:
使用 Camera 框架,数据流送往 ImageReceiver。
3 回复
解决方案:
YUV帧多出来的2048字节是尾部数据,不影响yuv数据的解析,这个是正常的。
nextImage.getComponent(image.ComponentType.JPEG, async (err, imgComponent: image.Component) => {
if (err || imgComponent === undefined) {
return;
}
if (imgComponent.byteBuffer as ArrayBuffer) {
<span class="hljs-keyword"><span class="hljs-keyword">let</span></span> sourceOptions: image.SourceOptions = {
sourceDensity: <span class="hljs-number"><span class="hljs-number">120</span></span>,
sourcePixelFormat: <span class="hljs-number"><span class="hljs-number">9</span></span>, <span class="hljs-comment"><span class="hljs-comment">// NV12</span></span>
sourceSize: {
height: previewProfilesObj2.size.height,
width: previewProfilesObj2.size.width
}
}
<span class="hljs-keyword"><span class="hljs-keyword">let</span></span> imageResource = image.createImageSource(imgComponent.byteBuffer, sourceOptions);
<span class="hljs-keyword"><span class="hljs-keyword">this</span></span>.imgUrl = await imageResource.createPixelMap();
<span class="hljs-keyword"><span class="hljs-keyword">this</span></span>.imgUrl.getPixelBytesNumber()
} <span class="hljs-keyword"><span class="hljs-keyword">else</span></span> {
<span class="hljs-keyword"><span class="hljs-keyword">return</span></span>;
}</code><button style="position: absolute; padding: 4px 8px 0px; cursor: pointer; top: 8px; right: 8px; font-size: 14px;">复制</button></pre> <p>这边想问一下,暂时只能获取到JPEG,怎么样才能真正的获取到yuv数据呢?</p></div></div>
关于HarmonyOS 鸿蒙Next中imageReceiver拿到的数据帧长度问题,通常情况下,数据帧的长度会根据图像的分辨率和格式有所不同。以1280*720分辨率的NV21格式图像为例,理论上的数据量应为1280*720*1.5=1382400字节。然而,在实际应用中,可能会因为系统或硬件的特定处理而增加一些额外的字节。
据HarmonyOS开发者官方网站的讨论,有时在YUV帧的尾部会多出一些字节,这些通常是尾部数据,并不影响YUV数据的正常解析。例如,你提到的回调出来的视频帧byteBuffer长度是1384448字节,比理论值多了2048个字节,这很可能就是尾部数据。
如果你在处理这些数据帧时遇到了问题,建议首先确认你的图像解析逻辑是否正确处理了这些额外的字节。同时,也可以检查HarmonyOS的相关开发文档,以确保你的代码实现与系统的要求保持一致。
如果问题依旧没法解决请联系官网客服,官网地址是: https://www.itying.com/category-93-b0.html 。
回到顶部