HarmonyOS 鸿蒙Next imageReceiver拿到的数据帧长度

发布于 1周前 作者 nodeper 来自 鸿蒙OS

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

回到顶部