问题标签 [mediamuxer]

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 回答
153 浏览

android - 尝试通过 JNI 调用 MPEG4Writer.o 时演示崩溃

我正在 JellyBean(Android4.2.2) 上构建我的应用演示,演示的一个模块是将 h264 流写入 mp4 文件。由于 MPEG4Writer 在源代码中完成了这项工作,所以我尝试通过 JNI 调用它。

编译源代码后,我得到了 MPEG4Writer.o 文件。在我的第一步中,我只想尝试这种方式是否可行。所以我写了 JNI 文件,这很容易,只需创建一个 MPEG4Writer 类的新实例:

和 Android.mk 文件:

然后我在Java中调用该函数:

当我构建项目时它是好的,但是当我运行它时它就关闭了。日志是:

我真的不知道。如果这种使用 MPEG4Writer 的方式可行吗?有人有什么主意吗?谢谢!

0 投票
1 回答
407 浏览

android - Android 测试项目 bigflake

我正在尝试运行BigFlake Android samples中的示例代码,特别是这个示例:CameraToMpegTest。我是 Android 开发的新手,我不确定我应该如何对待这个测试套件。我尝试在 Eclipse 中创建一个 Android 测试项目,但它没有运行。网上的例子好像是从一个特定的应用项目创建一个Android Test Project。有人尝试运行这些代码并可以给我一些提示吗?

0 投票
3 回答
3391 浏览

android - 使用 android 的 MediaMuxer 连接多个 mp4 音频文件

我正在尝试使用以下函数将多个 mp4 音频文件(每个仅包含一个音轨,全部使用相同的 MediaRecorder 和相同的参数录制)连接成一个:

代码编译并运行,但是在播放结果文件时,我只听到第一个文件的内容。我没有看到我做错了什么。

然而,在 Marlon 向我指出那个方向之后,我从 MediaMuxer 收到的消息有些奇怪。他们来了:

似乎从第一个文件复制数据后,MPEG4Writer(为什么不是 MediaMuxer?)停止轨道并且不写入更多数据。我怎样才能防止这种情况?我是否必须直接操作标题,如果是,如何操作?

任何帮助,将不胜感激。

此致,

基督教

0 投票
1 回答
177 浏览

android - 如何从 StagefrightRecorder 中提取 Video Muxer 部分?

我正在尝试构建一个视频录制系统Android 4.2.2,我已经完成了编码部分,它正在使用OMX. 现在我正在研究 Muxer 部分,因为如果我使用 ,视频的码流可能会有些不同FFMpeg,所以我希望使用与原始系统完全相同的 Muxer 工具。所以我想提取 Muxer 的部分StagefrightRecorder,将其编译成 .so 文件,然后JNI在我的应用程序中调用它。但是里面有很多东西StagefrightRecorder,我很困惑。

这种方式能行吗?我可以只提取与 MPEG4Writer 相关的代码吗?谁能给我任何指示?谢谢!

0 投票
1 回答
2379 浏览

android - Android MediaCodec 丢帧

我正在通过 和 进行实时OpenGL视频MediaCodec处理MediaMuxer

输出视频似乎丢帧。视频似乎以 1 或 2 FPS 的速度运行,即使应用程序以 15 FPS 的速度运行。我已经调试了编码器的输出,没有丢帧。到底是怎么回事?

我在下面添加了核心代码。

驱动它的代码如下:

0 投票
1 回答
375 浏览

android - 带有 openGL 的 Android MediaMuxer

我正在尝试使用MediaMuxer. 这Grafika例子是一个很好的努力,但是当我尝试扩展它时,我遇到了一些问题。

我正在尝试在电影中绘制一些基本形状,例如正方形、三角形、线条。如果我将形状绘制到屏幕上,我的 openGL 代码运行良好,但我无法将相同的形状绘制到视频中。

我也有关于设置 openGL 矩阵、程序、着色器和视口的问题。通常,有类似的方法onSurfaceCreatedonSurfaceChanged以便我可以设置这些东西。最好的方法是什么GeneratedMovie

任何人都有写入具有更复杂形状的视频的示例将受到欢迎

0 投票
0 回答
574 浏览

android - MediaMuxer 连续捕获

我正在尝试示例Grafika。我对将ContinuousCapture视频记录到文件系统并同时将其绘制到屏幕上的示例感兴趣。我遇到的问题是将视频录制到文件系统似乎很慢。丢帧很多,每秒帧数只有7-10fps。

在 maindrawFrame()方法内部,

主要的性能瓶颈似乎是

两个日志之间的时间为 130 毫秒。Android MediaRecorder 可以以 30fps 的高质量视频完成这项工作。我试图禁用显示部分,但没有任何区别

0 投票
1 回答
3877 浏览

android - 使用 MediaMuxer 创建的非流式视频文件

MediaCodec用来编码视频。帧通过相机预览回调传到MediaCodec实例(不使用 Surface)。我正在使用JCodec库进行复用,并且能够流式传输制作的视频(视频播放器显示正确的持续时间,并且我能够使用搜索栏更改视频位置)。

今天我尝试使用MediaMuxer而不是,JCodec我得到的视频看起来仍然很好,但是持续时间绝对不正确(几个小时而不是一分钟)并且搜索栏根本不起作用。

当我收到以下代码时,会延迟调用以下代码MediaCodec.INFO_OUTPUT_FORMAT_CHANGED

我正在使用以下代码对帧进行编码:

byteBuffer并且bufferInfo直接来自MediaCodec一些定位的东西:

演示时间设置正确:

在记录的最后,我做了:

日志:

我猜The mp4 file will not be streamable.关于问题的信号。

更新:

我已经在另一台设备(LG G2)上测试了我的应用程序,该设备执行更详细的日志记录。同一文件的生成时间很长。日志在这里,视频文件在这里

0 投票
1 回答
7242 浏览

android - 使用 MediaCodec 和 MediaMuxer 编码和混合视频

我正在开发一个应用程序,我在其中解码视频并替换某些帧并使用和重新MediaMuxer编码MediaCodec。如果我不替换任何帧(我在下面解释的 1080p 视频除外),该应用程序就可以工作,但是当我这样做时,替换后的帧会被像素化并且视频不连贯。

此外,当我尝试使用 1920x1080 视频的应用程序时,我得到一个奇怪的输出,视频没有显示任何内容,直到我滚动到视频的开头,然后视频开始显示(但与之前提到的相同问题编辑后的像素化。

这是我配置编码器的方式:

所以总结一下,我有两个问题:

1- 修改帧后的像素化帧和断断续续的视频。

2- 损坏的 1920x1080 视频,除非我滚动到开头。

编辑

这是一个未经编辑的1080p示例视频,当我在 VLC 上播放时会出现绿屏,并且在手机上播放不正确,除非我滚动开始,现在奇怪地在 YouTube 上正常工作,除了开始时的绿框

这是一个示例720p 视频,在开始时也有一个绿框,并且在编辑后有清晰的像素化和滞后

这是我用来解码重新编码的代码:

解码方法:

这是编码方法:

0 投票
2 回答
3197 浏览

android - MediaMuxer 无法制作可流式传输的 MP4

我正在使用 MediaExtractor 在 Android 上编辑 MP4 以获取音频和视频轨道,然后使用 MediaMuxer 创建一个新文件。它工作正常。我可以在手机(和其他播放器)上播放新的 MP4,但无法在网络上流式传输文件。当我停止 MediaMuxer 时,它会生成一条日志消息

“mp4 文件将无法流式传输。”

我查看了底层的本机代码(MPEG4Writer.cpp),似乎作者在计算所需的 moov 框大小时遇到​​了问题。如果比特率没有作为参数提供给编写器,它会尝试使用一些启发式猜测。问题是 MediaMuxer 不提供设置 MPEG4Writer 参数的能力。我是否遗漏了某些东西,或者我是否一直在寻找其他生成文件(或标题)的方法?谢谢。