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");

}

});

} catch (FFmpegCommandAlreadyRunningException e) {

Log.i("yuyong", "FFmpegCommandAlreadyRunningException-->" + e.getMessage());

}

效果

4b85a36bcf490fb39701f13971c402df.png

3、用VLC播放

效果

3e899c5d4a64b3af6f18377e4936c394.png

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

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值