问题标签 [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.
java - 将图像编码为视频 (Mediacodec)
我需要使用 Mediacodec 将一系列 10 个位图编码为视频。我不想使用 FFmpeg 或 Jcodec,因为它非常慢。
我在 Internet 上进行了搜索,但似乎找不到可以修改的完整工作示例代码。
这是我尝试过的:
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
android - Chromecast 是否支持 RTP?
AFAIK chromecast 不支持 RTP,但是当我将我的一加一连接到 chromecast 时,我得到了以下日志,那么它是如何投射的?
更新
关于 Ali Naddaf 的回答,我担心的是,我也是这么想的,但是当您使用 mediacodec 和 muxer api 录制视频时,它的 moov atom 不会写在文件的开头,因此在录制完成之前无法播放(即可以'不被流式传输),那么内置应用程序是如何同时创建和流式传输的,如果你检查它大量提到 RTP 关键字的日志,那是什么?
我之前问过使用 muxer 创建文件的问题,但答案并不令人满意顺便说一句,这是上一个问题链接
还尝试了 Presentation API 演示,但它崩溃了 https://github.com/googlecast/CastRemoteDisplay-android
编辑那些演示演示不起作用,演示将无法使用CastMediaControlIntent.DEFAULT_MEDIA_RECEIVER_APPLICATION_ID
android - Android 图片转视频
如何将图像加载为纹理并通过 GLES 渲染以使用 MediaCodec Surface 输入方法?
我是从 EncodeAndMuxTest 示例开始的。
先感谢您。
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 中,是这样的:
复用代码:
android - 如果我们不手动设置此值,将在 Android MediaCodec 中设置哪个 AVC 配置文件/级别?
在 Android ACodec.cppsetupAVCEncoderParameters
中,它从( / )读取profile
和读取,似乎来自in 。所以,我认为我们可以像下面这样手动设置/之前:level
msg
msg->findInt32("profile", &profile)
msg->findInt32("level", &level)
msg
format
MediaCodec.configure()
profile
level
MediaCodec.configure()
当然,我同意这不是一个好主意,因为我们不知道我们的设备是否支持我们设置的配置文件/级别。而且我发现大多数示例代码根本没有设置这些值。
例如:
也许它们会自动设置?MediaCodec 会查询当前设备支持的配置文件/级别并自动选择一个吗?如果设备支持多个配置文件/级别,将选择哪一个?较低级别的(例如基线)还是较高级别的(例如高级别)?
android - Android MediaCodec dequeueInputBuffer 总是返回 -1
我正在尝试从 AudioRecord 对象中获取原始数据,并使用 MediaMuxer 和 MediaCodec 将其保存在文件中。
我启动编解码器,启动复用器,将数据加载到输入缓冲区中,但没有这样的运气。
通过调试调查,我发现问题出现在对dequeueInputBuffer()
. 前几块数据似乎成功了,但最终dequeueInputBuffer()
只是-1
不断地返回。
我有什么明显的遗漏吗?这似乎是我正在填充输入缓冲区,但编解码器从未释放它们。
相关代码片段:
java - MediaCodec.createInputSurface() 在 Android 模拟器中抛出 IllegalStateException(错误 -38)
我有MediaMuxer
:
还有记录视频的代码:
最后一串mMediaCodec.createInputSurface()
,扔给我java.lang.IllegalStateException
。堆栈跟踪:
和模拟器的日志:
我观察到这个字符串
说我Surface
必须在COLOR_FormatSurface
,但我已经设置好了
怎么了?如何解决这个问题呢?帮助。
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 函数?