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

当使用Android的MediaCodec+MP4Parser编码时,是什么控制播放速度的?

胡沈义
2023-03-14

我正在尝试用MediaCodec和Mp4Parser(封装到.mp4)的组合在Android上录制、编码并最终创建一个短片(使用API16)。

一切都很好,除了.mp4的持续时间:它总是3秒长-运行速度大约是“正确”的两倍。

  • 编码器的输入为84帧(相隔100ms)。
  • 最后一帧设置“流结束”标志。
  • 我在queueinputbuffer
  • 上设置了每个帧的演示时间

那么是什么控制了回放的渗漏呢?我如何生成一个“自然”速度的电影?

共有1个答案

徐瑞
2023-03-14

我想通了:在用mp4parser进行封装时(如果你的目标是API<18),就需要),需要在mp4parser的API中设置速度。如果您没有使用Android的内置muxer(API18才提供),那么您为queueinputbuffer提供的呈现时间显然没有什么区别。

我在github上偶然发现了这个问题,它表明需要以下内容:

 new H264TrackImpl(new FileDataSourceImpl(rawDataFile), "eng", 100, 10);
  • 最后两个参数(timeScale和frameTick)将播放速度设置为“noraml”。
 类似资料:
  • 我将在android上播放Vimeo在线流媒体的视频。为此,我现在正在使用VideoView。现在,我想控制视频播放速度控制功能,如:0.5x、1x、1,5x、2x和视频缓存支持。Android VideoView是否可以实现这两个功能,或者我是否可以使用第三个播放器?帮助

  • 背景: 两天来,我一直在努力实现一个像Vine一样的录像机。首先,我试了MediaRecorder。但我需要的视频可能是由小视频剪辑组成的。此类不能用于录制短时视频剪辑。然后我找到了MediaCodec、FFmpeg和JavaCV。FFmpeg和JavaCV可以解决这个问题。但是我必须用许多库文件来编译我的项目。它将生成一个非常大的APK文件。所以我更喜欢用MediaCodec实现它,尽管这个类只

  • 我正在尝试使用使用编解码器对一些音频流进行编码。为此,我使用了google cts ExtractEncodeMust的这个实现。 对于某些aac文件,它会在编码某些帧后抛出。更准确地说,它会在第1030行抛出异常,。 我正在配置如下: 我完全不知道如何解决这个问题。任何形式的帮助都将不胜感激。 带有一些日志的堆栈跟踪: 设备:小米POCO x3 操作系统:Android10 导致溢出的示例文件信

  • 本文向大家介绍Android MediaPlayer 音频倍速播放 调整播放速度问题,包括了Android MediaPlayer 音频倍速播放 调整播放速度问题的使用技巧和注意事项,需要的朋友参考一下 现在市面上的很多音视频App都有倍速播放的功能,例如把播放速度调整为0.5、1.5、2倍等等。 从Android API 23 (Android M)开始,MediaPlayer支持调整播放速度。

  • 在我的网络应用程序中,用户应该能够上传自己的视频(任意一种格式)。我正在使用ffmpeg对视频进行编码。mp4和。flv使用命令: ffmpeg-iuservid.whateveroutput.mp4output.flv 当ffmpeg对视频进行编码时,它会加载到用户页面上的flowplayer中。但flowplayer总是说“找不到文件”,因为ffmpeg编码尚未完成。 是否有可能在某个播放器中

  • ap.seekBackgroundAudio(OPTION | position, CALLBACK) 控制音乐播放进度。 OPTION 参数说明 名称 类型 必选 描述 position Number 是 音乐位置,单位秒 错误码描述 error 描述 12 失败时会有对应描述 代码示例 <script src="https://gw.alipayobjects.com/as/g/h5-lib/