问题标签 [mediaextractor]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
541 浏览

android - 如何在没有 MediaExtractor 的情况下使用 MediaCodec 进行 MP3/AAC 流媒体

据我了解,您必须将数据写入缓冲区,而不是作为字节流,而是作为访问单元。

现在,我正在使用提取器读取数据:

然后这个 sampleSize 用于

那么 MP3 和 AAC 的“访问单元”是什么?它们是固定大小的块吗?可以以某种方式从 MP3/AAC 流中读取它们吗?

0 投票
1 回答
2741 浏览

android - Android 上的 RTSP 客户端实现

我已经看到很多与此相关的问题。尽管如此,我认为我没有答案。

我想在 Android 上使用已经编码的 RTSP 客户端与 MediaCodec 一起使用,以便在 H264 中捕获 RTSP 流,然后对其进行解码和显示。我使用了众所周知的 VideoView 和 MediaPlayer,它们在 .setDataSource 方法(文件或 rtsp/http 路径)中支持 RTSP 流(与仅支持文件或 http 的 MediaExtractor 不同),但对于我的目的而言,延迟太高了。

我想使用 MediaExtractor,但由于 setDataSource 方法的限制,它似乎不是一个选项。鉴于此,我正在寻找一些可以在 Android 上用作 RTSP 客户端的帮助或示例(教程?),或者如果有人以某种方式使用 MediaExtractor 来捕获 RTSP 流,它的帮助也非常受欢迎。

十分感谢大家!

罗吉克

0 投票
1 回答
827 浏览

android-ndk - 在 android-NDK 10 版本中使用 MediaCodec 进行 mp3 解码的第一个缓冲数据丢失

我使用android NDK 中的MediaCodec和 MediaExtractor 类来解码 mp3 文件。为了比较输入文件(mp3)和输出文件(wav - 这是我的解码格式),我查看了轨道持续时间,我确切地看到了持续时间 50 毫秒的差异。我在其他轨道上检查它,这种差异总是存在的。所以,我首先丢失了近 50 毫秒的输入轨道。

像androin ndk-samples(native-codec)解码片段中使用的解码算法如下

}

此代码与 NDK 中的“本机编解码器”示例一起提供。

我该如何解决?因为丢失数据是不可接受的

0 投票
2 回答
2622 浏览

android - Android MediaCodec & MediaExtractor 用于视频和音频播放

我是新来的,对 Android 开发很陌生。这是我的第一个问题。

我正在使用MediaExtractorMediaCodec播放mp4文件,包括视频和音频。现在我得到一对视频提取器/编解码器和另一对音频提取器/编解码器,在两个单独的线程中实现。

我的问题是:我可以只使用一个带有两个编解码器的提取器来同步播放视频和音频吗?

如果是,该怎么做?当我对一个使用 extractor.selecttrack 时,另一个将无法工作......

非常感谢。

感谢大家在这里的回答。我已经弄清楚了。我犯了一个错误,提取器只能选择一首曲目。实际上,您可以选择多个曲目,extractor.advance() 随后会一次读取每个曲目。

0 投票
1 回答
946 浏览

android - 媒体提取器:解码器在 Android 4.2 上给出错误的宽度

我正在为 Unity 编写一个插件,它使用 Media Extractor 解码并从视频文件中获取帧,然后重新编码为新的视频文件。然而,帧被解码成一个错误大小的数组(在 android 4.2.2 上),因为编解码器认为高度是 736,而实际上它是 720。

输出缓冲区索引返回 INFO_OUTPUT_BUFFERS_CHANGED,然后返回 INFO_OUTPUT_FORMAT_CHANGED。记录这告诉我解码器认为高度是 736 而不是正确的 720。

这在运行 4.4 的设备上运行良好,该问题仅出现在较旧的 4.2 设备上。有人有什么想法吗?

0 投票
0 回答
1872 浏览

android - android MediaExtractor MediaCodec 寻找

再次提问,各位。

我使用 MediaExtractor 和 MediaCodec 在 android 设备上播放 MP4 文件。在我尝试添加 Extractor.seekto() 之前,一切正常。

如果我只是用我的播放器播放 mp3 文件,搜索功能很好。但是,当我尝试使用 MP4 文件时,视频没有更新。我尝试调试代码,发现 mPlayerExtractor.getSampleTrackIndex()总是返回 1(参考音轨)。

但我不知道如何解决它。

我不能把我所有的代码都放在这里。所以请先给我一些建议。非常感谢。

更新:我可以向后搜索 mp4 文件和 webm 文件。如果我用webm文件向前搜索,视频在搜索操作的跳跃时间后开始播放。对于 mp4 文件,它永远不会重新开始。

0 投票
1 回答
747 浏览

android - 为什么 MediaExtractor getTrackCount 在 android 4.4.2 中返回 0

我在以下位置运行完全相同的代码:

  • 安卓 4.1.2
  • 安卓 4.2.2
  • 安卓 4.4.2。

它适用于 4.1.2 和 4.2.2,但不适用于 4.4.2。

问题是MediaExtractor.getTrackCount在 4.4.2 上返回 0(而在其他设备上返回正确的数字)

任何想法?

我也面临同样的问题。你有解决办法吗?

0 投票
1 回答
1090 浏览

android - MediaExtractor 返回错误数量的曲目?

MediaCodec我正在尝试构建一个播放器,使用和播放带有 2 个音轨的 mpeg2-ts 流MediaExtractor。当我将 URL 设置为提取器:extractor.setDataSource(URL)int Logcat 时,我可以看到框架找到了 2 个音轨:2 个音频轨道和 1 个视频轨道

但后来我打电话:

trackCountaways 等于 2(1 个音轨和 1 个视频轨)。我究竟做错了什么?

0 投票
1 回答
1473 浏览

android - 用于在 Android 上流畅搜索视频播放的自定义代码

我从事一个需要精确搜索视频的项目,因为系统需要与其他设备同步。用于视频播放的操作系统是 Android。到目前为止,我使用了 MediaPlayer 类,但根据关键帧的数量,搜索非常不准确。

所以我的下一个想法是缓存解码的图像并围绕它包装一个自己的播放类。到目前为止,我了解如何使用 MediaExtractor 和 MediaCodec 类手动解码视频。android.media.ImageReader 类似乎正是我想要的。

但我不明白的是,一旦我得到它,如何手动渲染这样的 android.media.Image ?我想阻止手动进行 YUV 到 RGB 的转换,而是一种首选方法是能够将这样的图像放入 Surface 或以某种方式将其复制到 SurfaceTexture 。

0 投票
1 回答
872 浏览

android - 使用 android.media.Extractor 获取 icy-meta

是否可以使用android.media.MediaExtractor从流数据中获取 icy-meta ?

我想得到艺术家和标题。