在Anroid 8设备上,我将h264+aac流组合成mp4,所以我使用MediaMuxer,但是我使用FileDescriptor创建一个文件,logcat显示如下:
Fail to get File Status Flags err: Bad file descriptor
System.err: java.lang.IllegalArgumentException: Invalid file descriptor
System.err: at android.media.MediaMuxer.nativeSetup(Native Method)
System.err: a
我正在通过像API这样的套接字来开发VoIP。(与窄带连接)
我需要编码每个语音帧(20毫秒),并通过上述api发送,然后解码它的另一边。
我试着通过NDK来处理Opus,但是它没有进展,所以我决定使用MediaCodec来对AMR进行编码/解码。
编码似乎有效,结果产生了一个预期大小的缓冲区(160个原始字节变成20个编码字节+7.9Kbps的头)
但是,当我处理编码的缓冲区并试图解码它时,我会收到一个INFO_OUTPUT_FORMAT_CHANGED结果。
编码器:
// Set up recorder
int recordBufferSize = AudioRecord.get
我试图合并音频和视频,但我得到了java.lang.IllegalStateException: Failed to add the track to the muxer。我认为问题是,我不能添加.weba音频到穆克塞。如果是这样的话,我怎么才能把它们合并呢?
fun mux() {
var outputFile = ""
val dir = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS).absolutePath
val file = File
我有一个视频文件.mp4 -只有视频轨道。
我使用MediaExtractor和MediaMuxer来添加音频文件。这个很好用。
在处理过的文件上,我想添加另一个音频轨道。
因此,我再次使用MediaExtractor和MediaMuxer复制文件,(创建视频和音频轨道、读取提取器和编写muxer)。此外,我试图添加第二个音频轨道的穆克塞。但这会引发错误Failed to add the track to the muxer。
在这个中,我们可以看到muxer不支持多个轨道。
链接中的代码:
// Throws exception b/c 2 audio tracks were added.
我正在尝试实现,但通过使用视频文件mp4来修改源代码。mime tipe为视频/avc,比特率288 tipe,iframe间隔100,宽176,高144。文件大小为6MB。当我解码视频并将帧放入输出面时,我可以将该帧保存到位图中,并查看该帧。但是在编码结束后(使用原始视频的相同参数),我得到了一个700 of的文件,我看不到视频(可能是一个损坏的文件)。
extractor = new MediaExtractor();
extractor.SetDataSource(filePath);
for
我正面临着媒体屏蔽的问题。为什么我的应用会崩溃?解决办法是什么?
java.lang.IllegalStateException: Failed to stop the muxer
at android.media.MediaMuxer.nativeStop(Native Method)
at android.media.MediaMuxer.stop(MediaMuxer.java:245)
at com.app.filter.helper.config.VideoInfoUtils.combineVideo(VideoInfoUtils.java:159)
以下是一段Android MediaMuxer API示例代码:
MediaMuxer muxer = new MediaMuxer("temp.mp4", OutputFormat.MUXER_OUTPUT_MPEG_4);
// More often, the MediaFormat will be retrieved from MediaCodec.getOutputFormat()
// or MediaExtractor.getTrackFormat().
MediaFormat audioFormat = new MediaFormat(...);
Medi
我正在为一个支持流媒体和录制视频的应用程序编写一个类。简而言之,当手机进行流式传输和录制时,使用MediaRecorder将音频保存在PCM文件中,将视频保存在mp4文件中。我的目标是,当记录完成时,使用MediaMuxer并将两个输入组合成一个新的组合的.mp4文件。 我尝试过使用MediaExtractor对音频进行编码,然后提取视频。原始视频和音频文件都完好无损,输出文件包含正确的音频,但视频似乎已损坏,就像跳过了帧一样。 这是我目前使用的代码: public class StreamRecordingMuxer {
private static final String T
我正在尝试使用Camera1创建视频帧相机帧,甚至当我从相机中拍摄长视频时视频播放太快。我尝试改变比特率和帧率。来自相机帧的图像byte[]正在排队并馈送到这个类,这样我们就可以从位图或byte[]创建我们所做的视频。 使用camera1从onNextFrame方法打开camera.Took摄像机帧。我们可以使用MediaRecorder来记录视频,但同时使用surfaceView的帧渲染和使用camera1的视频记录不能是done.So。我们已经使用MediaCodec从帧创建mp4视频,因此可以完成帧渲染和录制视频。 package com.sukshi.smartid_demo;
i
当我预先加载所有位图(带有测试数据)时,下面的代码可以工作
for (bitmap in bitmaps){
feedInOpenGL(bitmap)
}
但当我尝试用计时器创建位图时,
timer!!.scheduleAtFixedRate(object : TimerTask() {
override fun run() {
if (!recording) return
val bitmap = getNextBitmap()
feedInOpenGL(bitma
我正在开发一个用于视频/照片处理的库(添加诸如Instagram/Snapchat之类的过滤器)。到目前为止,核心功能工作得很好。
然而,我发现处理视频(重新编码输入视频)是非常令人沮丧的。似乎有一些边缘情况和设备特定的问题,阻止库100%的时间工作。
我想知道如何选择/创建一个能够在设备上工作的MediaFormat。
目前,我正在设置用于编码视频的MediaFormat,如下所示:
// assume that "extractor" is a media extractor wrapper, which holds a
// reference to the Media
我正在通过OpenGL、MediaCodec和MediaMuxer进行实时视频处理。
输出视频似乎有帧下降。视频似乎运行在1或2个FPS,尽管应用程序运行在15 FPS。我已经调试了编码器的输出,没有帧被删除。怎么一回事?
我在下面添加了核心代码。
public class VideoSavingController
{
// Static Variables
private static final String MIME_TYPE = "video/avc";
private static final int FRAME_RATE =