我正在尝试从 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)