java搭建直播平台_直播平台简单搭建笔记

article/2025/8/20 12:07:44

直播平台大致流程

4795c9322f5a72fb53d82f4656550180.png

实时传输协议有:RTMP、HLS、HDL(HTTP-FLV)

编译环境

apt-get install build-essential

nginx安装

安装pcre(目前最新8.44)

./configuremake && make installpcre-config --version //查看版本

下载nginx-rtmp-module源

git 下载https://github.com/arut/nginx-rtmp-module

安装nginx(目前最新1.17.9)

./configure --add-module=../nginx-rtmp-module --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-pcre=/usr/local/pcre-8.44

make

make install

obs studio视频直播录制软件安装(debian尽量9以上,因为ops有要求,不然自己编译有点麻烦)

https://obsproject.com/download

ffmpeg转码安装

https://obsproject.com/wiki/install-instructions#linux里有安装流程

或者低版本的

sh -c 'echo "deb http://www.deb-multimedia.org jessie main" >> /etc/apt/sources.list'apt-get update

apt-get install deb-multimedia-keyring

apt-get install ffmpeg

rtmp参数配置

nginx.conf点播配置

#播放地址示例: rtmp://localhost/live/qq.mp4

rtmp { #RTMP服务

server {

listen1935;#//服务端口

chunk_size 4096;#//数据传输块的大小

application live {

play /usr/local/nginx/video;#//视频文件存放位置。

}

}

}

nginx.conf直播配置

rtmp里

application show {

live on;#enable HLS

hls on; hls_path /usr/local/nginx/video/hls; hls_fragment 3; hls_playlist_length 20; }

http-server里

location /hls {

# Disable cache

add_header Cache-Control no-cache;

# CORS setup

add_header'Access-Control-Allow-Origin' '*'always;

add_header'Access-Control-Expose-Headers' 'Content-Length';

# allow CORS preflight requestsif ($request_method = 'OPTIONS') {

add_header'Access-Control-Allow-Origin' '*';

add_header'Access-Control-Max-Age' 1728000;

add_header'Content-Type' 'text/plain charset=UTF-8';

add_header'Content-Length' 0;return 204;

}

types {

application/vnd.apple.mpegurl m3u8;

video/mp2t ts;

}

root/usr/local/nginx/video/hls/;

add_header Cache-Control no-cache;

}

重启nginx

sudo ./sbin/nginx -s reload

开启 ffmpeg

ffmpeg -re -i /usr/local/nginx/video/test.mp4 -vcodec libx264 -vprofile baseline -acodec aac -strict -2 -f flv rtmp://localhost/show/stream

结果

f26e287605edf4f7dfe38a28f809ac1c.png

fb551d1aba22fa635599473b513479e7.png


http://chatgpt.dhexx.cn/article/3vXsyovU.shtml

相关文章

直播平台搭建|实现完整直播流程,考验直播平台性能

直播平台搭建的意义是为了实现完整的直播流程: 前处理: 最重要的部分是实时GPU渲染美感,前处理中还要去除水印、时间戳等,这也是在直播平台必要的防范措施。实时美颜本身就相当考验APP厂商的技术经济实力,如何发展能够充分利用能…

直播平台怎么搭建,老司机带你了解

直播平台怎么搭建,老司机带你了解 1.创建前端工程 直播平台怎么搭建毫无疑问,搭建一个项目的框架,那第一步肯定是得创建一个工程啦。cmd命令,输入vue create mylive ,然后一直回车就好了。然后等待一小会&#xff0c…

Nim问题和阶梯Nim(staircase nim)

Nim问题和阶梯Nim(staircase nim) Nim问题: 有若干堆石子,每堆石子的数量都是有限的,合法的移动是“选择一堆石子并拿走若干颗(不能不拿)”,如果轮到某个人时所有的石子堆都已经被…

B. Stairs(构造+规律寻找)Codeforces Round #671 (Div. 2)

原题链接: https://codeforces.com/contest/1419/problems 测试样例 input 4 1 8 6 1000000000000000000 output 1 2 1 30 Note In the first test case, it is possible to build only one staircase, that consists of 1 stair. It’s nice. That’s why the answ…

《中英双解》leetCode Arranging Coins (排列硬币)

Arranging Coins 难度简单182收藏分享切换为中文接收动态反馈 You have n coins and you want to build a staircase with these coins. The staircase consists of k rows where the ith row has exactly i coins. The last row of the staircase may be incomplete. Given th…

house of cat

2022强网杯 house of cat 跟着大佬的文章学习了一个新的利用手法 house of cat,原文链接:House of cat新型glibc中IO利用手法解析 && 第六届强网杯House of cat详解 利用条件: 1.能够任意写一个可控地址。 2.能够泄露堆地址和libc…

我谈阶梯博弈(Staircase Nim)

今天在POJ做了一道博弈题..进而了解到了阶梯博弈...下面阐述一下我对于阶梯博弈的理解.. 首先是对阶梯博弈的阐述...博弈在一列阶梯上进行...每个阶梯上放着自然数个点..两个人进行阶梯博弈...每一步则是将一个集体上的若干个点( >1 )移到前面去..最后没有点可以移动的人输.…

阶梯博弈(Staircase Nim)

阶梯博弈!!!下面阐述一下我对于阶梯博弈的理解.. 首先是对阶梯博弈的阐述...博弈在一列阶梯上进行...每个阶梯上放着自然数个点..两个人进行阶梯博弈...每一步则是将一个集体上的若干个点( >1 )移到前面去..最后没有点可以移动的人输.. 如…

我谈阶梯博弈( Staircase Nim )

今天在POJ做了一道博弈题..进而了解到了阶梯博弈...下面阐述一下我对于阶梯博弈的理解.. 首先是对阶梯博弈的阐述...博弈在一列阶梯上进行...每个阶梯上放着自然数个点..两个人进行阶梯博弈...每一步则是将一个集体上的若干个点( >1 )移到前面去..最后没有点可以移动的人输.…

Scala class和case class的区别

在Scala中存在case class,它其实就是一个普通的class。但是它又和普通的class略有区别,如下:   1、初始化的时候可以不用new,当然你也可以加上,普通类一定需要加new; scala> case class Iteblog(name…

hackerrank初级篇之staircase

题目说明&#xff1a; 示例代码&#xff1a; // staircase.cpp: 定义控制台应用程序的入口点。 // // n4 // # // ## // ### //#### // //#include "stdafx.h" #include <windows.h> #include <iostream> using namespace std;void staircase( int …

Staircases

Staircases Time Limit : 2000/1000ms (Java/Other) Memory Limit : 32768/16384K (Java/Other) Total Submission(s) : 8 Accepted Submission(s) : 5 Problem Description One curious child has a set of N little bricks (5 ≤ N ≤ 500). From these bricks he buil…

自旋锁是什么?

本文内容如有错误、不足之处&#xff0c;欢迎技术爱好者们一同探讨&#xff0c;在本文下面讨论区留言&#xff0c;感谢。 文章目录 定义特点和互斥锁比较适用场景 结论混合是什么意思&#xff1f; 结尾参考资料 定义 自旋锁 spin lock 下面内容摘自维基百科 在软件工程中&…

【自旋锁】

1. 原理 PV操作原理 记录一个锁定状态(就是一个共享资源&#xff0c;基于原子操作) 2. 适用 1. 解决多cpu之间的竞态 2. 可以解决中断程序和普通程序之间的竞态(自旋锁可以用于中断上下文) 3. 加锁时间不宜过长 4. 获得自旋锁期间&#xff0c;不能进行调度(sleep) 例&#xff1…

量子力学之电子自旋与四个量子数

量子力学之电子自旋与四个量子数 前言一、电子自旋是什么&#xff1f;二、四个量子数1.主量子数 n2.角量子数*l*3.磁量子数ml4.自旋量子数ms 三.例题 前言 在笔者学习大学物理量子力学部分时&#xff0c;对此部分非常疑惑&#xff0c;弄明白之后写下来以供查看&#xff0c;水平…

学习自旋电子学的笔记03:初试自旋波模拟

文章目录 前言一、初遇1.Figure S2 (a)2.图4-23.Figure S1 二、暂别1.FFT分析程序包&#xff1a;MFA简介2.使用练习MFA 三、重逢3.Figure S14.FIG.2 (a)5.FIG.2 (b)6.FIG.5 总结 _ _ 远行&#xff01; 前言 四月&#xff0c;过得四真的快啊&#xff0c;这是从入学到现在的第9个…

深入理解CAS (自旋锁)

文章目录 0. 导言1. 什么是CAS2. 保证原子操作2.1 CAS 实现自旋锁2.2 AtomicBoolean 中的CAS2.3 CAS使用场景 3. 锁的分类3.1 乐观锁3.2 悲观锁 4. CAS存在的问题4.1 ABA问题4.2 循环时间长开销大4.3 只能保证一个共享变量的原子操作 0. 导言 背景&#xff1a; 我们都知道&…

CAS和自旋锁

什么是CAS CAS算法&#xff08;Compare And Swap&#xff09;&#xff0c;即比较并替换&#xff0c;是一种实现并发编程时常用到的算法&#xff0c;Java并发包中的很多类都使用了CAS算法。 CAS算法有3个基本操作数&#xff1a; 内存地址V旧的预期值A要修改的新值B CAS使用自…

Java中的自旋锁,手动实现一个自旋锁

自旋锁 CAS是实现自旋锁的基础,CAS利用CPU指令保证了操作的原子性,已达到锁的效果。自旋是指尝试获取锁的线程不会立即阻塞,而是采用循环的方式去尝试获取锁, 当线程发现锁被占用时,会不断循环判断锁的状态,直到获取。这样的好处是减少线程上下文切换的消耗,缺点是循环…

学习自旋电子学的笔记04:模拟自旋波在弯曲磁畴壁中传播

文章目录 前言零、笔记03中错误的补充改正1.保持电子的极化方向不变的原因2.Oxs_SpinXferEvolve类的额外补充说明3.时间演化器的时间步长相关补充说明 一、文章概述和要复现的微磁模拟1.文章概述2.要复现的微磁模拟 二、FIG.1三、 FIG.21. FIG.2(a-b)2. FIG.2(c-f) 四、 FIG.3五…