问题标签 [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 投票
1 回答
747 浏览

java - 将图像编码为视频 (Mediacodec)

我需要使用 Mediacodec 将一系列 10 个位图编码为视频。我不想使用 FFmpeg 或 Jcodec,因为它非常慢。

我在 Internet 上进行了搜索,但似乎找不到可以修改的完整工作示例代码。

这是我尝试过的:

0 投票
1 回答
429 浏览

android - 从一个 mp4 获取音频并在 android 的重新采样(较小)mp4 中使用它

我找到了一种解决方案,用于对使用设备上的相机拍摄的 .mp4 视频进行重新采样以使其更小(通过分辨率、比特率和帧率调整大小)。问题是,它不会携带音频。

我已经查看了几种不同的选项来尝试从我的源(大)mp4 中获取音频并将其推送到我较小的 mp4 中,但我似乎无法让这些程序中的任何一个正常工作。

我尝试了以下方法:1)使用以下方法从源中提取 PCM 音频:How do I extractor audio to mp3 from mp4 using java in Android? 2) 将 PCM 转换为 M4A,然后使用以下方法将 M4A 添加到较小的 MP4:https://github.com/tqnst/MP4ParserMergeAudioVideo/blob/master/Mp4ParserSample-master/src/jp/classmethod/sample/mp4parser/MainActivity。爪哇

这是我最接近的方法,但音频真的很慢,与较小的 mp4 中的视频完全不匹配。

我还尝试了从一个 mp4 到另一个“直接复制”的变体:Concatenate multiple mp4 audio files using android´s MediaMuxer

这使得我较小的 mp4 实际上比我的源 mp4 更大(文件大小),并且它实际上并没有移动声音。

MediaMuxer 的 android 文档非常糟糕,我无法确定我需要做什么才能使其正常工作。看起来这应该是一个非常微不足道的任务......

任何建议或意见,将不胜感激。

TIA

0 投票
1 回答
873 浏览

android - Android Mediamuxer moov atom

我正在使用MediacodecMediamuxerapi 记录设备屏幕,一切都很好。

现在我想在录制时流式传输这个文件,但是直到muxer停止并且 moov atom 被写入文件末尾。

所以我的问题是甚至可以Mediamuxer用于此目的吗?如果不是,有什么替代方案?

这就是我想做的,如果不可能的话,氰是怎么做的?

0 投票
1 回答
2225 浏览

android - Chromecast 是否支持 RTP?

AFAIK chromecast 不支持 RTP,但是当我将我的一加一连接到 chromecast 时,我得到了以下日志,那么它是如何投射的?

更新

关于 Ali Naddaf 的回答,我担心的是,我也是这么想的,但是当您使用 mediacodec 和 muxer api 录制视频时,它的 moov atom 不会写在文件的开头,因此在录制完成之前无法播放(即可以'不被流式传输),那么内置应用程序是如何同时创建和流式传输的,如果你检查它大量提到 RTP 关键字的日志,那是什么?

我之前问过使用 muxer 创建文件的问题,但答案并不令人满意顺便说一句,这是上一个问题链接

Android Mediamuxer moov atom

还尝试了 Presentation API 演示,但它崩溃了 https://github.com/googlecast/CastRemoteDisplay-android

编辑那些演示演示不起作用,演示将无法使用CastMediaControlIntent.DEFAULT_MEDIA_RECEIVER_APPLICATION_ID

您必须从https://cast.google.com/publish创建 APP id

0 投票
1 回答
889 浏览

android - Android 图片转视频

如何将图像加载为纹理并通过 GLES 渲染以使用 MediaCodec Surface 输入方法?

我是从 EncodeAndMuxTest 示例开始的。

先感谢您。

0 投票
1 回答
2023 浏览

android - Android使用mediamuxer mediacodec和mediaextractor合并mp4和aac文件(没有mp4parser)

我正在录制音频,然后尝试合并 aac 音频和 mp4 视频文件(静音,无音频),并共享合并的 mp4 文件。合并后的mp4文件共享在三星J2和小米都可以,但是在联想、Micromax等手机上不能播放mp4文件。这里提到了测试结果: https ://docs.google.com/spreadsheets/d/1eeJEM- v-smEUzY-bSxwIwFVOsAbv6KT2u3Kz3jdOb8o/edit?usp=sharing 我无法理解问题是由于共享还是由于不正确的复用以及问题的原因。请帮忙。

共享代码存在于 recordAudio.java 中,是这样的:

复用代码:

0 投票
1 回答
1213 浏览

android - 如果我们不手动设置此值,将在 Android MediaCodec 中设置哪个 AVC 配置文件/级别?

在 Android ACodec.cppsetupAVCEncoderParameters中,它从( / )读取profile和读取,似乎来自in 。所以,我认为我们可以像下面这样手动设置/之前:levelmsgmsg->findInt32("profile", &profile)msg->findInt32("level", &level)msgformatMediaCodec.configure()profilelevelMediaCodec.configure()

当然,我同意这不是一个好主意,因为我们不知道我们的设备是否支持我们设置的配置文件/级别。而且我发现大多数示例代码根本没有设置这些值。

例如:

也许它们会自动设置?MediaCodec 会查询当前设备支持的配置文件/级别并自动选择一个吗?如果设备支持多个配置文件/级别,将选择哪一个?较低级别的(例如基线)还是较高级别的(例如高级别)?

0 投票
1 回答
1861 浏览

android - Android MediaCodec dequeueInputBuffer 总是返回 -1

我正在尝试从 AudioRecord 对象中获取原始数据,并使用 MediaMuxer 和 MediaCodec 将其保存在文件中。

我启动编解码器,启动复用器,将数据加载到输入缓冲区中,但没有这样的运气。

通过调试调查,我发现问题出现在对dequeueInputBuffer(). 前几块数据似乎成功了,但最终dequeueInputBuffer()只是-1不断地返回。

我有什么明显的遗漏吗?这似乎是我正在填充输入缓冲区,但编解码器从未释放它们。

相关代码片段:

0 投票
1 回答
1738 浏览

java - MediaCodec.createInputSurface() 在 Android 模拟器中抛出 IllegalStateException(错误 -38)

我有MediaMuxer

还有记录视频的代码:

最后一串mMediaCodec.createInputSurface(),扔给我java.lang.IllegalStateException。堆栈跟踪:

和模拟器的日志:

我观察到这个字符串

说我Surface必须在COLOR_FormatSurface,但我已经设置好了

怎么了?如何解决这个问题呢?帮助。

0 投票
1 回答
791 浏览

android - Android MediaCodec 和 MediaMuxer 中的 getInpuBuffer

下面是一段 Android MediaMuxer API 示例代码: https ://developer.android.com/reference/android/media/MediaMuxer.html

对于这一行:finished = getInputBuffer(inputBuffer, isAudioSample, bufferInfo);我在 MediaCodec.java 和 MediaMuxer.java 中都没有找到这个函数 getInputBuffer,这是用户定义的函数还是 API 函数?