使用ffmpeg实时解码android的硬件编码H264相机源

joe*_*ank 28 android ffmpeg rtsp h.264

我正在尝试使用H264Android上的硬件编码器从相机创建视频,并用于FFmpeg复用音频(所有这些都在Android手机上)

到目前为止我所做的是将H264视频打包成rtsp数据包,然后使用VLC(over UDP)对其进行解码,因此我知道视频的格式至少是正确的.但是,我无法以ffmpeg可以理解的格式获取视频数据.

我试着发送相同的rtsp本地主机上的数据包发送到端口5006(基于UDP),然后提供ffmpegsdp它告诉它哪个本地端口的视频流上进来,以及如何将视频解码,如果我没有理解文件rtsp正确流.然而,这不起作用,我无法诊断为什么,因为ffmpeg只是坐在那里等待输入.

出于延迟和可扩展性的原因,我不能将视频和音频发送到服务器并将其复制到那里,必须在手机上以尽可能轻的方式完成.

我想我正在寻找的是关于如何实现这一点的建议.最佳解决方案是将分组化H264视频发送到ffmpeg管道上,但之后我无法发送解码视频所需ffmpegsdp文件参数.

我可以根据请求提供更多信息,比如如何ffmpeg为Android编译,但我怀疑这是必要的.

哦,我开始的方式ffmpeg是通过命令行,我真的宁愿避免与jni纠缠,如果这是可能的.

非常感谢帮助,谢谢.

Dou*_*nes 1

您尝试过使用 java.lang.Runtime 吗?

String[] parameters = {"ffmpeg", "other", "args"};
Program program Runtime.getRuntime().exec(parameters);

InputStream in = program.getInputStream();
OutputStream out = program.getOutputStream();
InputStream err = program.getErrorStream();
Run Code Online (Sandbox Code Playgroud)

然后写入 stdout 并从 stdin 和 stderr 读取。它不是管道,但它应该比使用网络接口更好。