HarmonyOS 鸿蒙Next 请教硬解码网络流的实现方式

HarmonyOS 鸿蒙Next 请教硬解码网络流的实现方式

请教鸿蒙硬解码网络流的实现方式

咨询场景描述:通过私有协议将网络上的h264、h265原始码流(未使用mpeg4等封装格式)接收至本地后,怎样使用硬解码接口?

参考demo文档: https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/media/avcodec/video-decoding.md

结合demo上的示例,由demuxer读取文件fd的源数据得到OH_AVBuffer实例,但从头文件中未看到OH_AVBuffer的定义。

只找到定义:typedef struct OH_AVBuffer OH_AVBuffer;没有更进一步的定义了。

问题:

  1. 从网络接收到视频数据buffer和length之后,怎样生成OH_AVBuffer实例?OH_AVBuffer_Create相关的接口也无法输入buffer和length参数;
  2. 由于我们拿到的是原始码流h264、h265,理论上不需要demuxer进行解封装,请问网络收流的场景,是否不需要使用demuxer对象;
  3. OH_AVBuffer_SetBufferAttr接口是针对OH_AVBuffer对象操作的,无法直接使用unsigned char *buffer和int length参数;

麻烦指导一下网络接收原始码流的硬解码流程,或者提供从网络接收流的硬解码演示demo程序代码


更多关于HarmonyOS 鸿蒙Next 请教硬解码网络流的实现方式的实战教程也可以访问 https://www.itying.com/category-93-b0.html

8 回复
  1. 解码器Start后,输入回调OnNeedInputBuffer会不断被调起,每一次回调中能拿到一个OH_AVBuffer实例;因为编解码器给用户的buffer数量有限,需要用户及时调用OH_VideoDecoder_PushInputBuffer接口,将buffer及时送至解码器解码,实现buffer轮转。

  2. 不需要demuxer

  3. 强转一下

只要能把网络流接受至本地这条路打通,之后的流程就按这个demo里的写法来就能调通的:
https://gitee.com/openharmony/multimedia_av_codec/blob/master/test/unittest/video_test/video_test/sample/decoder/video_decoder_sample.cpp

更多关于HarmonyOS 鸿蒙Next 请教硬解码网络流的实现方式的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


第三点不明白:我网络流获取到的是ArrayBuffer类型。你说的这个demo是个C++项目吧,我具体要怎么去使用怎么去解码呢? 救救C++菜鸟,

同C++菜鸡,麻烦问下解决了吗,我也卡这了

找HarmonyOS工作还需要会Flutter的哦,有需要Flutter教程的可以学学大地老师的教程,很不错,B站免费学的哦:https://www.bilibili.com/video/BV1S4411E7LY/?p=17

大佬们,我遇到的应该是跟楼主一样的问题:获取到流式数据,h265原始码流(因为我们水果端完成了解码并显示图像)。拿到数据接下去就不知道怎么处理数据了。

httpRequest.requestInStream 获取到的应该是ArrayBuffer吧?如下:
httpRequest.on('dataReceive', (data: ArrayBuffer) => {}

请楼主和海绵宝宝指点指点。

我在arkTS端获取码流后。要调用native侧h265的硬解码,要napi的方式吧?你有没有这方面的经验,

能不能🐧 547256553
C里面获取,写不来了。

你的项目也是网络获取的码流吗?

在HarmonyOS鸿蒙Next中,硬解码网络流的实现通常涉及以下几个关键步骤:

  1. 网络流获取:首先,你需要通过网络协议(如HTTP、RTSP等)获取流媒体数据。这通常通过相应的网络库或框架来完成,HarmonyOS提供了丰富的网络API供开发者使用。

  2. 解码器初始化:接下来,你需要初始化一个硬解码器。HarmonyOS支持硬件加速解码,你可以利用系统提供的多媒体框架来创建和配置解码器。确保解码器支持你所需要的视频或音频编码格式。

  3. 数据推送与解码:将网络流数据按照解码器的要求推送进去。这通常涉及将数据包拆分成解码器可以处理的单元,并按时序送入解码器。解码器将处理这些数据并输出原始音视频数据。

  4. 音视频同步与播放:解码后的音视频数据需要进行同步处理,以确保播放时音视频同步。你可以使用HarmonyOS提供的同步机制或自行实现同步算法。最后,将同步后的数据送给渲染模块进行播放。

请注意,具体实现细节可能因项目需求和HarmonyOS版本而异。上述步骤提供了一个大致的流程框架,具体实现时需要参考HarmonyOS的官方文档和API指南。

如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html

回到顶部