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中加载libs然后将ffmpeg可执行文件复制到assets文件夹,在运行时我复制到我的应用程序的“files”目录,然后使用Runtime.getRuntime()设置可执行文件的权限.exec ().然后最后一步是在java中使用以下语句执行它:
Runtime.getRuntime().exec("ffmpeg -i file:///android_asset/movie.mp4http://<server>:8090/cam1.ffm");
2.复制ffmpeg.c,共享库和构建到我的jni文件夹生成的“include”文件夹,并添加了一个包装ffmpeg.c中main()函数的jni函数.通过这种方法,我发现自己必须从ffmpeg源复制几个头文件才能使ndk-build成功,我非常怀疑这是否可行.
以上两种方法对我有用,我不知道我哪里出错了,所以任何有关如何做一个简单的ffmpeg流媒体的帮助就像一个来自android的mp4文件将受到高度赞赏.
解决方法
1.将ffmpeg.c,“include”文件夹和共享库复制到我项目的jni文件夹中.
>修改了ffmpeg.c并参考了这篇博文http://demo860.blogspot.com/2010/07/android-ffmpeg-dynamic-module-jni.html
>使用ndk构建时出现了几个错误,所以我只是添加了缺少的依赖项,直到最终构建成功.
起初应用程序会启动,然后立即退出,这是由于我忘了做的一些事情,所以请确保你已经完成以下操作以节省一些时间和脱发:
– 在清单上设置Internet权限(如果媒体文件在sdcard中,设置写入外部存储权限并确保已安装SD卡)
– 确保远程ffserver正在运行并正确配置.您可以通过桌面流式传输进行确认
– 确保你通过了正确的参数
现在我可以从我的SD卡中的mp4文件流式传输到远程ffserver,havnt尝试从设备摄像头流式传输.