我需要从 android 相机/文件流式传输到远程 ffserver,它将播放我的视频。我可以通过发出如下命令在 ubuntu 的桌面上执行此操作:
ffmpeg -f video4linux2 -s 640x480 -r 25 -i /dev/video0 http://192.168.0.20:8090/cam1.ffm
或像这样流式传输文件:
ffmpeg -i /home/kev/share/movie.mp4 http://192.168.0.20:8090/cam1.ffm
所以基本上我希望能够从 android 执行上述操作。经过几次搜索,这就是我到目前为止所做的 - 我遇到了这个链接http://bambuser.com/opensource,我从中下载了 ffmpeg 源代码并构建了它。该构建输出了几件事:1. 共享库 [libavcodec, libavcore, libavdevice, libavfilter,libavformat,libavutil,libswscale] 2. 可执行文件 [ffmpeg,ffprobe]
不知道如何用这些资源插入我的功能,这是我迄今为止尝试过的: 1. 使用 System.loadLibrary() 将库加载到我的 Activity 中,然后将 ffmpeg 可执行文件复制到资产文件夹,在运行时我复制到我的然后我使用 Runtime.getRuntime().exec() 为应用程序的“文件”目录设置可执行文件的权限。然后最后一步是使用以下语句在 java 中执行它:
Runtime.getRuntime().exec("ffmpeg -i file:///android_asset/movie.mp4http://<server>:8090/cam1.ffm");
2. 将 ffmpeg.c、共享库和构建生成的“include”文件夹复制到我的 jni 文件夹中,并在 ffmpeg.c 中添加了一个环绕 main() 函数的 jni 函数。使用这种方法,我发现自己必须从 ffmpeg 源中复制几个头文件才能使 ndk-build 成功,我非常怀疑这是否是可行的方法。
以上两种方法对我有用,我不确定我哪里出错了,所以任何关于如何做一个简单的 ffmpeg 流(如来自 android 的 mp4 文件)的帮助将不胜感激。