小编Bob*_*oss的帖子

Android FFmpeg - 来自 MediaCodec 的 Mux 编码的 h264 帧

我正在尝试从 Android 相机(由 MediaCodec 编码)捕获 h264 帧并将它们传递给在同一设备上运行的 FFmpeg 进程。

我目前通过将我从 MediaCodec 接收到的编码字节数组写入名为 out.h264 的文件来实现。

像这样:

    FileOutputStream fosVideo = new ...

    ...

    // encoder callback
    @Override
    public void onVideoData(ByteBuffer h264Buffer, MediaCodec.BufferInfo info) {
        fosVideo.write(h264Buffer);
    }
Run Code Online (Sandbox Code Playgroud)

在写入 h264 文件时,我启动 FFmpeg 进程并提供 h264 文件作为输入。

ffmpeg -re -i out.h264 -c:v copy -r 30 -loglevel 48 a.mp4
Run Code Online (Sandbox Code Playgroud)

我也试过

ffmpeg -re -framerate 25 -i out.h264 -c:v copy -r 30 -loglevel 48 a.mp4
Run Code Online (Sandbox Code Playgroud)

FFmpeg 进程在 10 秒到几分钟之间运行,然后突然停止:

frame=  330 fps= 29 q=31.0 size=     512kB time=00:00:10.98 bitrate= 381.8kbits/s …
Run Code Online (Sandbox Code Playgroud)

android ffmpeg h.264 android-ffmpeg android-mediacodec

5
推荐指数
0
解决办法
832
查看次数