iOS 直播(一)

news/2024/7/10 22:24:08 标签: 运维, 移动开发, ffmpeg

由于业务需求,需要从腾讯直播sdk要迅速转移到自主开发(先让我默哀三分钟)。不多说,直接开始唠嗑!

  这个项目超级简单,简单到只能一个推流,一个拉流的功能。需求多的再另谈。

  前期准备:推流用优酷开源的LFLiveKit框架。

       拉流(实际上就是一个播放器)用ijkplayer 框架,当然这个也是开源的。

       创建本地rtmp服务器

 

创建本地rtmp服务器。(这个地方坑比较多,老夫深陷其中欲罢不能)

一.打开终端, 查看是否已经安装了Homebrew, 直接终端输入命令

  man brew

如果已经安装就会显示帮助信息,没有的情况下就去安装,终端之行命令:

  ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

安装后需要卸载的情况下

  ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/uninstall)"

二.安装 nginx执行命令:(分布执行)

  brew tap homebrew/nginx

  brew install nginx-full --with-rtmp-module

  nginx

三个命令执行完成后浏览器打开:

  http://localhost:8080

如果出现 welcome to nginx! .......表示成功

如果出现端口被占用,则查看端口PID,执行

  lsof -i tcp:8080

找到自己的端口kill 掉,执行

  kill xxxx(xxxx表示自己的端口)

重复二

三.配置nginx和ramp

1.查看nginx的安装路径,执行命令:

  brew info nginx-full

2.找到nginx.conf的所在位置,然后进入文件夹,用记事本打开nginx.conf,滚到最后空白处粘贴:

# 在http节点后面加上rtmp配置:
rtmp {
    server {
        listen 1935;
        application rtmplive {
            live on;
            record off;
        }
    }
}

3.查看nginx版本号,执行:

  nginx -v

4.重启nginx

/usr/local/Cellar/nginx-full/xxxx/bin/nginx -s reload   (xxxx表示nginx版本号)


四.安装ffmpeg,执行:

  brew install ffmpeg(这个有50兆,建议FQ啊亲!!)

安装完成后,本地的rtmp服务器久已经安装完成了。

 

五.测试

1.在桌面放上一个mp4的文件,例如文件名为:text.mp4

2.终端执行:ffmpeg -re -i /Users/a123/Desktop/text.mp4 -vcodec libx264 -acodec aac -strict -2 -f flv rtmp://localhost:1935/rtmplive/room
黄色为这个视频文件的路径,终端会显示你想要的结果(你应该能看得懂)。

3.如果(我是说如果,你还想从服务器里面读取这个推流上来的视频),那就去下载一个播放器,自行百度。然后打开:rtmp://localhost:1935/rtmplive/room就能播放了。

 

终~~~~~~~~~(好多都是借鉴别人的,好紧张啊,会不会被举报呀http://www.cnblogs.com/damiao/p/5231221.html)

 

  这里
 

转载于:https://www.cnblogs.com/MyBlogZH/p/5763585.html


http://www.niftyadmin.cn/n/1826623.html

相关文章

VNC CentOS Linux下VNC Server远程桌面配置详解

VNC概述 VNC (Virtual Network Console)是虚拟网络控制台的缩写。VNC 是一款优秀的远程控制工具软件,由著名的 AT&T 的欧洲研究实验室开发的。VNC 是在基于 UNIX 和 Linux操作系统的免费的开源软件,远程控制能力强大,高效实用&#xff0c…

java连连看小游戏代码大全_连连看小游戏java源代码(1)

//MainView 主界面import java.awt.BorderLayout;import java.awt.Color;import java.awt.FlowLayout;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.event.WindowAdapter;import java.awt.event.WindowEvent;import javax.swing.*…

Java eclipse export jar包 包括第三方引入的jar

1、安装fatjar插件 2、export jar 说明:安装后,操作说明以官网为准,不同的版本会有不同的右键菜单,我的版本(Eclipse Java EE IDE for Web Developers.Version: Kepler Service Release 2Build id: 20140224-0627) 就没有右键菜单…

重定向 CORS 跨域请求

TL;DR 非简单请求不可重定向,包括第一个preflight请求和第二个真正的请求都不行。简单请求可以重定向任意多次,但如需兼容多数浏览器,只可进行一次重定向。中间服务器应当同样配置相关 CORS 响应头。 中间服务器设置当跨域请求被重定向时&…

转 [ORACLE]详解not in与not exists的区别与用法(not in的性能并不差!)

在网上搜了下关于oracle中not exists和not in性能的比较,发现没有描述的太全面的,可能是问题太简单了,达人们都不屑于解释吧。于是自己花了点时间,试图把这个问题简单描述清楚,其实归根结底一句话:not in性…

Web应用网络模型

Web应用网络模型 前言 这篇文章要介绍的是一个常见Web应用基本的过程跟网络模型,当然,对于多数的Client/Server应用也是适用的。延续这个系列文章的风格,只管通俗不管严谨。 概览 总体模型概览图: DNS 用户点开/输入一个链接http:…

java调整框大小_java – 调整JDialog框的大小

基本问题是TitledBorder不会将组件扩展到足以显示整个文本的位置.相反,它只会截断文本.解决方案是确保组件足够大,以便显示文本.我在这里通过扩展文本字段的大小以及在“缩短的”标题的位置添加“全长”标签来展示这一点.import java.awt.*;import javax.swing.*;import javax.…

python 语句正确1错误0_关于Python程序格式框架的描述,错误的是( )(1.0分)_学小易找答案...

【多选题】原子吸收原子化器分为哪几类?【单选题】在Python语言中,Good和good表示相同的名字。(1.0分)【填空题】乙型肝炎母婴传播的方式有产前____传播,分娩时通过____传播,产后____传播。【单选题】公文的制发者是( ) (2.0分)【单选题】turtle库中设置画笔颜色的函数为( ) (…