我正在尝试获取由Android相机生成的预览帧,并将data[]
传递给ffmpeg输入管道,以生成FLV视频。
我使用的命令是:
ffmpeg -f image2pipe -i pipe: -f flv -vcodec libx264 out.flv
我曾试图强制输入格式为
yuv4mpegpipe
和rawvideo
,但没有成功......
由android-camera生成的预览帧的默认格式是NV21
。
我通过Process API
调用ffmpeg,并将预览帧的data[]
写入进程的stdin
...
onPreviewFrame()
的定义如下:public void onPreviewFrame(byte[] data, Camera camera)
{
try
{
processIn.write(data);
}
catch(Exception e)
{
Log.e(TAG, FUNCTION + " : " + e.getMessage());
}
camera.addCallbackBuffer(new byte[bufferSize]);
}
processIn
连接到 ffmpeg
进程的 stdin
,buffersize
根据提供给 addCallbackBuffer()
的文档计算而来。
我是否做错了什么...?
谢谢...
camera.addCallbackBuffer(new byte[bufferSize])
:你应该返回(即addCallbackBuffer()
)从相机回调中接收到的数据数组。 - Alex Cohn