ffmpeg实战教程(十一)手把手教你实现直播功能,不依赖第三方SDK

原创 2017年05月19日 20:24:01

直播,2016最火的技术之一了,更多的关于直播的知识:http://blog.csdn.net/king1425/article/details/72489272 …这篇我们就不依赖任何集成好的SDK,自己搭建服务器,用ffmpeg+nginx实现手机直播功能

先上图:

推流的手机

这里写图片描述

拉流的网页和VL播放器

这里写图片描述

拉流的手机客户端

这里写图片描述

对于nginx服务器的搭建之前有写过:

ffmpeg实战教程(九)windows下ffmpeg命令+nginx + rtmp实现推流,拉流。

这篇也建议看一下:

关于音视频直播技术的总结

下面开始实现手机直播功能

1.首先你要准备一份编译好的ffmpeg+x264库,我们打算软编码推流。
如果你没有编译好的ffmpeg+x264库也没关系,我最后会提供源码,包含了这些。
这里写图片描述

其中libnative-lib.so是我打包的采集推流的方法,使用方式如下

2.然后我们在建一个包 com.ws.ffmpegandroidcameralive,在这个包下写一个WSPlayer类。

public  class WSPlayer {
    static {
        System.loadLibrary("avutil-54");
        System.loadLibrary("swresample-1");
        System.loadLibrary("avcodec-56");
        System.loadLibrary("avformat-56");
        System.loadLibrary("swscale-3");
        System.loadLibrary("postproc-53");
        System.loadLibrary("avfilter-5");
        System.loadLibrary("avdevice-56");
        System.loadLibrary("native-lib");
    }

    public static native int initialize(int width,int height,String url);
    public static native int start(byte[] cameraData);
    public static native int stop();
    public static native int close();
}

initialize(int width,int height,String url) 是初始化方法,三个参数分别是视频的宽,高,以及,推流的地址。

start(byte[] cameraData);开始推流,参数传入相机的NV21数据。

stop();停止推流。

close();关闭。

3.编写界面
这里写图片描述

点击start开始推流

4.实现具体逻辑

activity中

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
...

 WSPlayer.initialize(mCamera.getParameters().getPreviewSize().width,mCamera.getParameters().getPreviewSize().height,"rtmp://192.168.9.135:1935/wstv/home");
 ...

在onCreate中初始化WSPlayer 其中rtmp://192.168.9.135:1935/wstv/home是我的服务器地址

   final Camera.PreviewCallback mPreviewCallbacx=new Camera.PreviewCallback() {
            @Override
            public void onPreviewFrame(byte[] data, Camera arg1) {

                WSPlayer.start(data);
            }
        };

WSPlayer.start(data) 在相机的预览回调里面开始添加数据进行推流

    @Override
    protected void onPause(){
        super.onPause();
        WSPlayer.stop();
        WSPlayer.close();
        if(mCamera!=null){
            mCamera.release();
            mCamera=null;
        }
    }

在activity的onPause()方法里面关闭推流

详情:demo下载:https://github.com/WangShuo1143368701/FFmpegandroidWSLive

版权声明:本文为博主原创文章,未经博主允许不得转载。

android 视频直播SDK

通过android移动端实时采集视频,同时在拍摄过程中支持多种实时滤镜效果,只要调用视频直播接口,通过3G、4G、WIFI等网络,推流发送给云端流媒体直播系统处理,并通过CDN视频加速分发做现场直播播...
  • talker
  • talker
  • 2017年02月23日 10:56
  • 6186

第三方SDK接入--Vitamio

第三方SDK接入之—Vitamio说明由于公司的需求,app需要能播放多种格式的视频,并能实时播放直播的视频流。所以这里使用了一款开放的,功能强大的全能多媒体开发框架—Vitamio。接下来简单说明下...
  • u010976213
  • u010976213
  • 2016年01月22日 10:22
  • 3137

[总结]FFMPEG视音频编解码零基础学习方法

在CSDN上的这一段日子,接触到了很多同行业的人,尤其是使用FFMPEG进行视音频编解码的人,有的已经是有多年经验的“大神”,有的是刚开始学习的初学者。在和大家探讨的过程中,我忽然发现了一个问题:在“...
  • leixiaohua1020
  • leixiaohua1020
  • 2013年11月16日 00:04
  • 465044

FFmpeg教程【转】

来自:https://github.com/yinwenjie/FFmpeg_Tutorial FFmpeg工具和sdk库的使用demo 一、使用FFmpeg命令行工具和批处理...
  • chenyefei
  • chenyefei
  • 2016年08月23日 12:06
  • 5774

FFmpeg教程(一) 视音频基础知识

视频播放器的原理 封装格式 作用:视频码流和音频码流按照一定的格式储存在一个文件汇总 视频编码数据 作用:将视频像素数据(RGB,YUV等)压缩成为视频码流,从而降低视频的数据量 音频码流 ...
  • Bobsweetie
  • Bobsweetie
  • 2016年03月20日 08:28
  • 12026

ffdoc (FFMPEG的最完整教程)

  • 2013年10月10日 15:07
  • 824KB
  • 下载

ffmpeg教程

转:http://blog.sina.com.cn/s/blog_51396f890100nd91.html 概要  电影文件有很多基本的组成部分。首先,文件本身被称为容器Container,容器的类...
  • cffishappy
  • cffishappy
  • 2012年03月14日 14:36
  • 61598

ffmpeg实战教程(四)格式转换如MP4转MKV等

知识延伸:I,P,B帧和PTS,DTS的关系基本概念:I frame :帧内编码帧 又称intra picture,I 帧通常是每个 GOP(MPEG 所使用的一种视频压缩技术)的第一个帧,经过适度地...
  • King1425
  • King1425
  • 2017年05月05日 10:37
  • 2467

ffmpeg教程

转自:http://blog.csdn.net/kl222/article/details/7819301   ffmpeg教程五 —— 使用举例 1.1.1    截取一张352x240尺寸大小的,...
  • zhichao2001
  • zhichao2001
  • 2013年10月11日 08:48
  • 11392

ffmpeg超详细综合教程(三)——安卓手机摄像头编码

本文的示例将实现:读取安卓手机摄像头数据并使用H.264编码格式实时编码保存为flv文件。示例包含了 1、编译适用于安卓平台的ffmpeg库 2、在java中通过JNI使用ffmpeg ...
  • xyblog
  • xyblog
  • 2015年12月30日 11:01
  • 5657
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:ffmpeg实战教程(十一)手把手教你实现直播功能,不依赖第三方SDK
举报原因:
原因补充:

(最多只允许输入30个字)