【问题标题】:What is relation between MediaExtractor, MediaCodec and MediaMuxer in android SDK?android SDK 中的 MediaExtractor、MediaCodec 和 MediaMuxer 之间有什么关系?
【发布时间】:2020-07-22 14:12:46
【问题描述】:

我正在尝试在 android 上对视频样本进行一些深度学习实验。而且我陷入了重新混合视频的困境。我有几个问题要在脑海中安排信息:)我已经阅读了一些页面:https://vec.io/posts/android-hardware-decoding-with-mediacodechttps://bigflake.com/mediacodec/#ExtractMpegFramesTest,但我仍然一团糟。

我的问题:

  1. 我可以使用MediaExtractor 读取视频,然后将数据传递给MediaMuxer 以将视频保存在另一个文件中吗?不使用 MediaCodec?
  2. 如果我想在保存前修改帧,是否可以不使用Surface 进行修改?只需修改ByteBuffer?我假设我需要解码来自MediaExtractor 的数据,然后修改内容,然后将其编码为MediaMuxer
  3. 在方法MediaExtractor::readSampleData 的上下文中sample 是否与frame 相同?
  4. 我需要解码样本吗?

【问题讨论】:

    标签: android android-mediacodec mediamuxer mediaextractor


    【解决方案1】:

    这是对每个类的作用的简要说明:

    • MediaExtrator:提取编码的视频/音频数据
    • MediaCodec:根据其配置方式,它可以是解码器或编码器。
    • MediaMuxer:将数据流多路复用到一个输出文件中。

    这就是你的管道通常应该是这样的:

    MediaExtractor -> MediaCodec(As Decoder) -> 你的编辑 -> MediaCodec(As Encoder) -> MediaMuxer

    回答你的问题:

    1. MediaExtractor 会给你编码的数据,如果你想这样做 您必须使用 MediaCodec 对其进行解码。
    2. 也许可以在没有表面的情况下这样做,但它会 相当有限。表面是要走的路。您可以找到更多信息 这里: Editing frames and encoding with MediaCodec
    3. 样本可以是视频帧或音频样本
    4. 是的,您确实需要对样本进行解码才能对其进行编辑

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-04-22
      • 1970-01-01
      • 2019-10-19
      • 2013-09-22
      • 1970-01-01
      • 2015-01-02
      • 1970-01-01
      • 2013-10-05
      相关资源
      最近更新 更多