FFmpeg总结(十三)用ffmpeg基于nginx实现直播功能,不用第三方SDK,自研推流拉流

请尊重分享成果,转载请注明出处,本文来自逆流的鱼yuiop,原文链接:
http://blog.csdn.net/hejjunlin/article/details/71976574

直播app实现流程

  • 1.采集
  • 2.滤镜处理
  • 3.编码
  • 4.推流
  • 5.CDN分发
  • 6.拉流
  • 7.解码
  • 8.播放
  • 9.聊天互动

这里写图片描述

这里写图片描述

这里写图片描述

这里写图片描述

图像格式:

    public static final int DEPTH16 = 1144402265;
    public static final int DEPTH_POINT_CLOUD = 257;
    public static final int FLEX_RGBA_8888 = 42;
    public static final int FLEX_RGB_888 = 41;
    public static final int JPEG = 256;
    public static final int NV16 = 16;
    public static final int NV21 = 17;
    public static final int PRIVATE = 34;
    public static final int RAW10 = 37;
    public static final int RAW12 = 38;
    public static final int RAW_PRIVATE = 36;
    public static final int RAW_SENSOR = 32;
    public static final int RGB_565 = 4;
    public static final int UNKNOWN = 0;
    public static final int YUV_420_888 = 35;
    public static final int YUV_422_888 = 39;
    public static final int YUV_444_888 = 40;
    public static final int YUY2 = 20;
    public static final int YV12 = 842094169;

直播app架构:

这里写图片描述

项目结构:(不用第三方推流SDK,自研推流,封包,解包过程。)

这里写图片描述

手机推流直播:

这里写图片描述

其他客户端拉流播放:
这里用vlc,及ijkplayer进行拉流,效果如下:

这里写图片描述

生成头文件:
这里写图片描述

ndk编译so文件:(yuiopLiveFFmpeg,为什么加yuiopLive,因为我的网名id叫:逆流的鱼yuiop)本文来自逆流的鱼yuiop,原文链接:
http://blog.csdn.net/hejjunlin/article/details/71976574

这里写图片描述

genymotion先测试访问nginx服务器:

这里写图片描述

为什么是192.168.56.1,而不是10.0.2.2(android自带模拟器),因为genymotion是基于VirtualBox上运行的。它的宿主就是VirtualBox。

这里写图片描述

第一时间获得博客更新提醒,以及更多android干货,源码分析,欢迎关注我的微信公众号,扫一扫下方二维码或者长按识别二维码,即可关注。

这里写图片描述
如果你觉得好,随手点赞,也是对笔者的肯定,也可以分享此公众号给你更多的人,原创不易

  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
JavaFFmpegNginx可以实现直播多路并发播放。以下是一个简单的示例代码: 首先,我们需要导入Java中的FFmpeg框架,并且创建一个FFmpeg的实例。然后,我们可以使用FFmpeg来编码、转码、合并和分割视频。 接下来,我们需要使用Nginx作为媒体服务器来进行媒体的发布和分发。首先,我们需要配置Nginx来支持RTMP媒体协议。我们可以通过在Nginx的配置文件中添加如下内容来实现: ``` rtmp { server { listen 1935; chunk_size 4096; application live { live on; } } } ``` 然后,我们可以使用Java代码来调用FFmpeg来进行视频的编码和推流。我们可以使用FFmpeg的命令行选项来指定输入源和输出格式。例如,我们可以使用以下命令将本地摄像头的视频推送到Nginx: ```java String command = "ffmpeg -i /dev/video0 -f flv rtmp://localhost/live/stream"; Process process = Runtime.getRuntime().exec(command); ``` 最后,我们可以使用Nginx来分发视频。我们可以使用视频播放器来播放Nginx服务器上的视频。例如,我们可以使用以下HTML代码来实现: ```html <video src="rtmp://localhost/live/stream"></video> ``` 这样,我们就可以使用JavaFFmpegNginx实现直播多路并发播放。我们可以动态地将多个视频源合并并分发给多个观众,从而实现高效的直播。这个示例代码只是一个简单的演示,实际上还有很多其他的功能和细节需要考虑,比如音频处理、控制等等。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值