gpt4 book ai didi

FFmpegFrameRecorder 调用 record() 20 次,但生成的 mp4 文件只有 2 帧

转载 作者:行者123 更新时间:2023-12-04 23:29:03 39 4
gpt4 key购买 nike

我正在使用 FFmpegFrameRecorder 从相机预览中创建 mp4(H264) 视频。我的录音机配置如下。

recorder = new FFmpegFrameRecorder(filePath, width, height);
recorder.setVideoCodec(avcodec.AV_CODEC_ID_H264);
recorder.setFormat("mp4");
recorder.setFrameRate(VIDEO_FPS);
recorder.setVideoBitrate(16384);
recorder.setPixelFormat(avutil.AV_PIX_FMT_YUV420P);

对于其余部分,我密切关注示例代码 RecordActivity.java 并能够验证
recorder.record(yuvIplimage)

被调用 20 次(或更多)次,这应该创建一个 20 帧的 mp4。但是,打开后生成的 mp4 文件只有 2 帧(预览的两个第一帧)!我不知道是什么导致了这种行为。任何帮助将不胜感激。谢谢你。

龙乐

最佳答案

我想通了:问题是因为我不知道自己在做什么。我是 javacv 新手,我假设基于 this stackoverflow 条目,结果视频中的帧数应等于 record() 调用的数量。但是,视频编码并非如此,尤其是 H264。我通过尝试使用 MPEG4 编码来解决这个问题,并且肯定有超过 2 帧。 H264 似乎需要 minimum number of input frames因此不适合短(<1 分钟)视频剪辑生成(这是我的应用程序)。一种解决方案是切换到 MPEG4 编码。但是,大多数播放 .mp4 文件的浏览器不支持 MPEG4 编码。另一种解决方案是使用具有最小压缩的 H264,通过添加以下配置

recorder.setVideoQuality(0); // maximum quality, replace recorder.setVideoBitrate(16384);
recorder.setVideoOption("preset", "veryfast"); // or ultrafast or fast, etc.

关于FFmpegFrameRecorder 调用 record() 20 次,但生成的 mp4 文件只有 2 帧,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27831123/

39 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com