android|android ffmpeg rtmp,Android利用ffmpeg产生推流

Android利用ffmpeg产生推流
Android利用ffmpeg产生推流
目标
在安卓手机客户端有一个视频文件,利用ffmpeg产生推流。
借助nginx-rtmp-module推送给另一客户端(简单起见用PC上的VLC)。
VLC播放这个视频流。
本次实验重点是第一步,即利用ffmpeg产生推流。
1、获得ffmpeg库
1/1 可以直接在ffmpeg官网下载源码,在Ubuntu下借助NDK编译得到.so库。关于这点,可以参照https://trac.ffmpeg.org/wiki/CompilationGuide/Android
1/2 还可以借助github上的开源项目https://github.com/WritingMinds/ffmpeg-android-java
2、使用ffmpeg库
ffmpeg原本是一个支持多种平台的命令行工具。
如果使用的是1/1方法。可以直接修改ffmpeg的main方法,以实现直接jni方式对ffmpeg的调用。
如果使用的是1/2方法。那就直接使用命令行输入/输出方式来调用ffmpeg。
这里使用1/2方法
核心代码
try {
ffmpeg.execute(new String[]{
"-re",
"-i",
"/sdcard/DCIM/Camera/test.avi",
"-vcodec",
"libx264",
"-acodec",
"aac",
"-f",
"flv",
"-strict",
"-2",
"rtmp://192.168.42.248:1935/myapp/test"}, new ExecuteBinaryResponseHandler() {
@Override
public void onStart() {
Log.i("yuyong", "onStart");
}
@Override
public void onProgress(String message) {
Log.i("yuyong", "onProgress-->" + message);
}
@Override
public void onFailure(String message) {
Log.i("yuyong", "onFailure-->" + message);
}
@Override
public void onSuccess(String message) {
Log.i("yuyong", "onSuccess-->" + message);
}
@Override
public void onFinish() {
Log.i("yuyong", "onFinish");
}
});
【android|android ffmpeg rtmp,Android利用ffmpeg产生推流】} catch (FFmpegCommandAlreadyRunningException e) {
Log.i("yuyong", "FFmpegCommandAlreadyRunningException-->" + e.getMessage());
}
效果
android|android ffmpeg rtmp,Android利用ffmpeg产生推流
文章图片

3、用VLC播放
效果
android|android ffmpeg rtmp,Android利用ffmpeg产生推流
文章图片

Android利用ffmpeg产生推流相关教程

    推荐阅读