当前位置: 首页 > 知识库问答 >
问题:

AndroidExoPlayer中raw NAL单位怎么玩?

司徒高丽
2023-03-14

我知道exoplayer支持RTSP,但我需要在许多OSs的玩家上工作的C++代码,所以在传递给exoplayer之前,我需要将C++的RTP数据包解析成NAL单元

我找到了一种使用live555解码RTP数据包并提取其NAL单元的方法。根据ExoPlayer的文档:

MediaSource通过Exoplayer注入。在播放开始时准备。...

所以我需要一个自定义的mediaSource,它可以从我的C++代码中提取NAL单元。

在MediaSource的类引用中,我们可以看到已经有一些MediaSource可用。我认为SmoothStreaming MediaSource也许可以工作,但是没有关于它具体做什么的描述,在它的构造函数中,我必须提供URISSManifest(what)。

那么如何构建或使用一个已经可用的MediaSource来读取NAL单位供ExoPlayer玩呢?

另外,如何将NAL单元从C++传递到Java?在代码中,我发现它只是将它们存储在C++缓冲区中。我应该以Java的方式读取这个缓冲区吗?

更新:

void init(ExtractorOutput output)
int read(ExtractorInput input, PositionHolder seekPosition)

我需要知道这种通用格式是如何实现的,以便能够解析从自定义DataSource中读取的NAL单元。

共有1个答案

符允晨
2023-03-14
MediaCodec.createDecoderByType("video/avc"); //then later give NAL units

使用mediacodec解码H264原始流

 类似资料:
  • 主要内容:1.对象如何定位的,2.对象怎么分配1.对象如何定位的 1.句柄方式 2.直接指针方式 一个直接寻址:访问速度快 一个是间接寻址:垃圾回收起来比较稳定 第二个比如如果是G1垃圾回收器的话,垃圾回收会进行垃圾的复制。会将垃圾移到另一个位置。如果用直接指针的方式的话就会发现T来回发生变化,效率低,所以句柄方式,GC回收比较稳定 句柄方式: 第一个指针是真正new出来的对象 第二个指针是类型数据指针 2.对象怎么分配 对象首先会尝试在栈上

  • 本文向大家介绍怎么使用HTML5来获取定位?定位不准怎么解决?相关面试题,主要包含被问及怎么使用HTML5来获取定位?定位不准怎么解决?时的应答技巧和注意事项,需要的朋友参考一下 使用地理位置定位 不准调用获取定位接口吧

  • 请问iOS端的APP频繁出现网络中断问题怎么排查?iOS用的afnetworking组件,后端是php写的,现在没法定位到请求是nginx处理不过来中断还是php-fpm响应过慢导致的网络中断,有没有大佬给个排查思路?谢谢!ps(nginx连接数和php-fpm进程数都做过调整,也开启了php-fpm慢日志没找到原因)

  • 本文向大家介绍什么是C ++中的“翻译单位”,包括了什么是C ++中的“翻译单位”的使用技巧和注意事项,需要的朋友参考一下 翻译单元是任何经过预处理的源文件。 翻译单元是C ++中编译的基本单元。该单元经过预处理后,由单个源文件的内容组成。它包含任何不带块的头文件,这些头文件使用条件预处理语句(如ifdef,ifndef等)被忽略。 单个翻译单元可以编译为目标文件,库或可执行程序。

  • 现在我正在学习Kotlin,在本指南中,我遇到了这两种方法,一种是带有单元的,另一种不是 带有单元的方法 无单元的方法 我的问题是,单位实际上做什么?在Java中是否类似于void?如果它像void,为什么上面的方法没有单元,运行得很好。 当我希望我的方法不返回任何内容时,我应该使用哪一个?也是使用的最佳时间。 有人能解释吗?因为这让我很困惑。提前谢谢。

  • 安装DevEco Studio后。我必须设置一个新项目,但是,显示以下错误 这里我无法设置HarmonyOS的SDK位置,如何设置SDK位置?