vitnmio 是一个android视频框架,它依赖ffmpeg,使用它可以很方便的播放rtmp,rtsp,hls,和其他网络流。
下载vitnmio:
https://codeload.github.com/yixia/VitamioBundle/zip/master
下载后解压:
搞了两三天的android studio,也没有能生成,最后还是在eclipse中生成了
android studio中的目录和eclipse 是一一对应的,我们只需要建一个空的eclipse android项目,然后把文件复制进去就可以了。
我们先建主项目:
目录对应关系就像下图
需要注意的是在eclipse中src文件夹是不能直接往里粘贴文件夹的,需要先建package。
res中自动生成没用,都删了吧。
完成之后,特别重要的一点来了,因为需要调用so库文件,所以需要把Java工程变为c++工程,
在主项目上右键-》android Tools-》Add Natlive Support,输入自己的so模块名称,这里我输入vitamioTest,变为c++工程。
然后在jni文件夹下创建Application.mk文件内容如下
#指明编译时生成armeabi-v7a架构的so文件
APP_ABI := armeabi-v7a
在Android.mk中,需要将so文件引入到工程中,内容如下
LOCAL_PATH := $(call my-dir)
#引入vitnmio的每个so模块
include $(CLEAR_VARS)
LOCAL_MODULE := ffmpeg
LOCAL_SRC_FILES := armeabi-v7a/libffmpeg.so
LOCAL_MODULE_FILENAME:=libffmpeg ##指明模块别名
include $(PREBUILT_SHARED_LIBRARY) ##指明此模块需要预编译
include $(CLEAR_VARS)
LOCAL_MODULE := OMX.11
LOCAL_SRC_FILES := armeabi-v7a/libOMX.11.so
LOCAL_MODULE_FILENAME:=libOMX.11 ##指明模块别名
include $(PREBUILT_SHARED_LIBRARY) ##指明此模块需要预编译
include $(CLEAR_VARS)
LOCAL_MODULE := OMX.14
LOCAL_SRC_FILES := armeabi-v7a/libOMX.14.so
LOCAL_MODULE_FILENAME:=libOMX.14 ##指明模块别名
include $(PREBUILT_SHARED_LIBRARY) ##指明此模块需要预编译
include $(CLEAR_VARS)
LOCAL_MODULE := OMX.18
LOCAL_SRC_FILES := armeabi-v7a/libOMX.18.so
LOCAL_MODULE_FILENAME:=libOMX.18 ##指明模块别名
include $(PREBUILT_SHARED_LIBRARY) ##指明此模块需要预编译
include $(CLEAR_VARS)
LOCAL_MODULE := OMX.9
LOCAL_SRC_FILES := armeabi-v7a/libOMX.9.so
LOCAL_MODULE_FILENAME:=libOMX.9 ##指明模块别名
include $(PREBUILT_SHARED_LIBRARY) ##指明此模块需要预编译
include $(CLEAR_VARS)
LOCAL_MODULE := stlport_shared
LOCAL_SRC_FILES := armeabi-v7a/libstlport_shared.so
LOCAL_MODULE_FILENAME:=libstlport_shared ##指明模块别名
include $(PREBUILT_SHARED_LIBRARY) ##指明此模块需要预编译
include $(CLEAR_VARS)
LOCAL_MODULE := vao.0
LOCAL_SRC_FILES := armeabi-v7a/libvao.0.so
LOCAL_MODULE_FILENAME:=libvao.0 ##指明模块别名
include $(PREBUILT_SHARED_LIBRARY) ##指明此模块需要预编译
include $(CLEAR_VARS)
LOCAL_MODULE := vplayer
LOCAL_SRC_FILES := armeabi-v7a/libvplayer.so
LOCAL_MODULE_FILENAME:=libvplayer ##指明模块别名
include $(PREBUILT_SHARED_LIBRARY) ##指明此模块需要预编译
include $(CLEAR_VARS)
LOCAL_MODULE := vscanner
LOCAL_SRC_FILES := armeabi-v7a/libvscanner.so
LOCAL_MODULE_FILENAME:=libvscanner ##指明模块别名
include $(PREBUILT_SHARED_LIBRARY) ##指明此模块需要预编译
include $(CLEAR_VARS)
LOCAL_MODULE := vvo.0
LOCAL_SRC_FILES := armeabi-v7a/libvvo.0.so
LOCAL_MODULE_FILENAME:=libvvo.0 ##指明模块别名
include $(PREBUILT_SHARED_LIBRARY) ##指明此模块需要预编译
include $(CLEAR_VARS)
LOCAL_MODULE := vvo.7
LOCAL_SRC_FILES := armeabi-v7a/libvvo.7.so
LOCAL_MODULE_FILENAME:=libvvo.7 ##指明模块别名
include $(PREBUILT_SHARED_LIBRARY) ##指明此模块需要预编译
include $(CLEAR_VARS)
LOCAL_MODULE :=vvo.8
LOCAL_SRC_FILES := armeabi-v7a/libvvo.8.so
LOCAL_MODULE_FILENAME:=libvvo.8 ##指明模块别名
include $(PREBUILT_SHARED_LIBRARY) ##指明此模块需要预编译
include $(CLEAR_VARS)
LOCAL_MODULE :=vvo.9
LOCAL_SRC_FILES := armeabi-v7a/libvvo.9.so
LOCAL_MODULE_FILENAME:=libvvo.9 ##指明模块别名
include $(PREBUILT_SHARED_LIBRARY) ##指明此模块需要预编译
include $(CLEAR_VARS)
LOCAL_MODULE :=vvo.j
LOCAL_SRC_FILES := armeabi-v7a/libvvo.j.so
LOCAL_MODULE_FILENAME:=libvvo.j ##指明模块别名
include $(PREBUILT_SHARED_LIBRARY) ##指明此模块需要预编译
#我自己的so模块
include $(CLEAR_VARS)
LOCAL_MODULE := vitamioTest
LOCAL_SRC_FILES := vitamioTest.cpp
include $(BUILD_SHARED_LIBRARY)
然后点击工具栏 -》 Project-》build Project,来完成工程中c++部分的构建。
如果这个按钮不能点击,需要查看eclipse的ndk插件,下载地址
https://pan.baidu.com/s/1gfeZaev,并且配置好ndk的路径。
build Project完成后,会在libs/armeabi-v7a 下生成各种so库。
主项目到这里就基本上完了。
接下来eclipse新建vitamio-sampleTest工程,为包含主项目完成视频播放。
子项目rar和eclipse工程文件夹对应关系如下。
最后需要配置主项目和子项目的依赖关系。
在主项目上右键-》properties
勾选 is library,使它变为一个库项目,使其他工程可以引用它。
在子项目中右键-》properties
着样的话。应该报错就大概没有了。
然后我们真机测试,播放几个网络流。
//path="http://live.hkstv.hk.lxdns.com/live/hks/playlist.m3u8";
//path="rtmp://live.hkstv.hk.lxdns.com/live/hks";
//path="rtsp://184.72.239.149/vod/mp4://BigBuckBunny_175k.mov";
网络流path在MediaPlayerDemo_Video的98行定义
VitamioListActivity是主Activity
看看效果图吧。
工程我上传了
https://pan.baidu.com/s/11s1McTHpPtMj8Iq3bcGrkw
在 诺基亚 7 android 7.1上安装没问题,
在华为 4x android 4.1 上却无法安装 ,可能是其他原因
apk在 vitamio-sampleTest\bin里
视频播放菜单时 MediaPlayer -》 PLAY STREAMING VIDEO