问题标签 [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.
android - 在 Android 上的测试用例之外运行 ExtractDecodeEditEncodeMuxTest
我正在尝试添加功能以在 Android 上提取、解码、编辑、编码和混合视频。因此,我发现了一些非常有用的实现,它是 Android CTS ExtractDecodeEditEncodeMuxTest的一部分。不幸的是,代码只有在作为测试用例的一部分执行时才有效。我试图从正常活动中执行它并得到:
E/ExtractDecodeEditEncodeMuxTest (18781): java.lang.IllegalStateException: 无法停止复用器
W/System.err(18781):java.lang.RuntimeException:表面帧等待超时 W/System.err(18781):在 ...OutputSurface.awaitNewImage(OutputSurface.java:216)
任何想法,为什么输出表面不接收帧?
更新: 这里是工作测试用例和非工作实现的日志文件。两者的代码完全相同。唯一的区别是工作的一个是 AndroidTestCase,另一个是在 IntentService 内的应用程序中运行。
似乎整个事情在大约 6 帧后停止提取和解码。有任何想法吗?
android - 适用于 android OS 4.1.2 及更高版本的 Muxer 等效库
目前我们正在开发一款安卓视频编辑应用程序。我们面临两个主要问题
我们有一个字节缓冲区,我们从中使用媒体编解码器的 H264 流。现在我们想从中创建一个 mp4 视频。我们知道,从 4.3 开始,我们可以使用媒体复用器来做到这一点。但是我们需要支持像 4.1.2 这样的旧操作系统,因为它有 MediaCodec 库。我想知道是否有任何其他方法可以在不使用 muxer 的情况下从 H264 流中创建 mp4 文件。
android - 在android中的视频上添加水印位图:4.3的MediaMuxer或ffmpeg
这是我的场景:
- 从网上下载 avi 电影
- 打开位图资源
- 将此位图叠加在影片底部的所有背景帧上
- 将视频保存在外部存储上
- 视频长度通常为 15 秒
这可以使用 MediaMuxer 来实现吗?很高兴收到有关此事的任何信息
我一直在寻找http://bigflake.com/mediacodec/#DecodeEditEncodeTest(感谢@fadden),它在那里说:
“在 Nexus 5 上解码帧并将其复制到 ByteBuffer
glReadPixels()
中大约需要 8 毫秒,速度足以跟上 30fps 输入的速度,但是将其作为 PNG 保存到磁盘所需的额外步骤非常昂贵(大约半秒) "
所以几乎 1 秒/帧是不可接受的。从我的想法来看,一种方法是将每个帧保存为 PNG,打开它,在其上添加位图叠加,然后保存。然而,这将花费大量时间来完成。
我想知道是否有办法做这样的事情:
- 从外部存储打开视频文件
- 开始解码
- 每个解码的帧都将随着内存中的位图覆盖而改变
- 帧被发送到编码器。
在iOS上,我看到有一种方法可以获取原始音频+原始视频+图像并将它们添加到容器中,然后对整个内容进行编码......
我应该切换到 ffmpeg 吗?ffmpeg 的稳定性和兼容性如何?我是否冒着与 android 4.0+ 设备的兼容性问题的风险?有没有办法使用 ffmpeg 来完成这个?我是这个领域的新手,还在做研究。
多年后的编辑:
问题已经过去了很多年,而且 ffmpeg 在许可方面并不是很容易添加到商业软件中。这是如何演变的?使用默认 sdk 的较新版本的 android 在这方面的能力更强?
稍后再编辑
我因发布信息作为答案而获得了一些反对票,因此我将编辑原始问题。这是一个很棒的库,从我的测试来看,它确实将水印应用于视频,并使用进度回调进行处理,从而更容易向用户显示进度,并且还使用默认的 android sdks。https://github.com/MasayukiSuda/Mp4Composer-android
该库使用 Android MediaCodec API 生成 Mp4 电影并应用过滤器、缩放和旋转 Mp4。
示例代码,可能如下所示:
在模拟器上进行测试,似乎在 android 8+ 上运行良好,而在旧版本上会生成黑色视频文件。但是,在真实设备上进行测试时似乎可以正常工作。
android - Android MediaMuxer 音频问题
我正在尝试使用 MediaMuxer 将音轨添加到视频中。以下代码有效,但音频在视频中途停止。视频和音频文件都只有一个轨道。音频和视频的播放速度似乎还不错。音频文件比视频长,所以我认为这不是问题。我已经有一段时间了,现在无法弄清楚。
打印出来的媒体格式如下
任何指导将不胜感激。
谢谢
android - Android MediaMuxer readSampleData IllegalStateException
我正在使用以下代码生成视频。但是,每 5 次尝试 readSampleData 就会引发 IllegalArgumentException 或 IllegalStateException。我能做些什么来阻止异常。我可以在调用 readSampleData 之前检查提取器的状态吗?如果是这样,怎么做?
实际代码在视频提取器循环之后将音频添加到视频中。
android - 使用 MediaMuxer 和 MediaCodec 将 wmv 视频文件转换为 mp4 视频文件
我想将 .wmv 视频文件转换为 mp4 视频文件。可以使用MediaMuxer和MediaCodec类吗?
android - 使用 mediaMuxer 示例录制音频和视频?
我正在尝试使用 mediaMuxer 录制音频和视频。我按照https://github.com/google/grafika的视频录制示例进行操作,但是当我连接音频流时,它会导致一半以上的视频损坏。有谁知道任何显示如何正确录制音频和视频的示例或教程?
android - 如何使用 MediaCodec 和 MediaMuxer 录制视频和音频
我可以在 MediaCodec 和 MediaMuxer 的帮助下录制(编码)视频。接下来,我需要在 MediaCodec 和 MediaMuxer 的帮助下处理音频部分和混合音频与视频。
我面临两个问题:
如何使用 MediaCodec 对音频进行编码。我需要在单独的线程中编码音频和视频吗?
如何将音频和视频数据传递给 MediaMuxer(因为 writeSampleData() 方法一次只需要一种类型的数据)?
我提到了MediaMuxerTest,但它使用的是 MediaExtractor。我需要使用 MediaCodec,因为视频编码是使用 MediaCodec 完成的。如果我错了,请纠正我。
任何建议或建议都会非常有帮助,因为这些新 API 没有适当的文档可用。
笔记:
- 我的应用程序面向 API 18+(Android 4.3+)。
- 我已经将Grafika用于视频编码。
android - 使用媒体编解码器进行视频压缩
我有一个需要在 android 中压缩的视频,目前 m 使用 ffmpeg 并且工作正常,但我想尝试使用媒体编解码器和媒体复用器。我已经阅读了http://developer.android.com/reference/android/media/MediaCodec.html中的文档,并且还尝试了这些链接:
https
://github.com/holrory/MediaCodecDemo
和上面有关媒体编解码器的许多链接.
谁能告诉我它是如何工作的以及采取了哪些步骤?
提前致谢!!