前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Nginx-rtmp、FFmpeg实现直播效果并在web页面播放「建议收藏」

Nginx-rtmp、FFmpeg实现直播效果并在web页面播放「建议收藏」

作者头像
全栈程序员站长
发布2022-11-10 16:04:39
1.5K0
发布2022-11-10 16:04:39
举报
文章被收录于专栏:全栈程序员必看

本文参考链接:https://blog.csdn.net/u011424614/article/details/113420000

在这里插入图片描述
在这里插入图片描述

前情提示:本文使用的是windows10系统

主要流程讲解

1.本文选择的路线是 视频文件–>FFmpeg–>nginx–>web播放 2.FFmpeg是一个强大的视频编辑软件,基本干视频,音频的多多少少都会用到这个软件。本文中FFmpeg的作用是将视频整成视频流的形式。 3.nginx的作用主要是将FFmpeg的视频流进行发布,供web进行访问。 4.web访问我选择了video标签,参考文章中还出现了一种div形式的,也是很好的。

第一步:下载FFmpeg

百度链接:https://pan.baidu.com/s/1isTdobOaDEcQXcNAs_f9fw 提取码:0ohe 官网:https://ffmpeg.org/download.html 安装教程就是解压完了然后配置一下环境变量就行了。path里面配到bin目录

在这里插入图片描述
在这里插入图片描述

第二步:安装nginx

这个更简单,下载完了解压一下,然后把rtmp的放在nginx的总目录下就行了,主要是配置文件的书写。 nginx百度链接:https://pan.baidu.com/s/1V9kcE8KmD8JdlI-fvXe0bQ 提取码:z70m nginx官网下载:https://nginx.org/en/download.html

rtmp模块github下载:https://github.com/illuspas/nginx-rtmp-win32/tree/master rtmp模块百度下载:https://pan.baidu.com/s/1gP165PFQOm4POgJFeT8jBw 提取码:4psx

nginx解压,把rtmp模块放在他的总目录下,下面是截图

在这里插入图片描述
在这里插入图片描述

在conf目录下新建一个nginx-rtmp.conf文件,把下面这段代码复制进去 下文中的注意事项,要建好 C://m3u8//liveC://m3u8//show 这两个文件夹,视频被直播时是会被处理的,这两个就是处理时需要用来存储处理材料的文件夹。当然,名字和位置你可以自己定义。

代码语言:javascript
复制
worker_processes  1;
events { 

worker_connections  1024;
}
# # RTMP configuration
rtmp { 

server { 

listen 1935; # Listen on standard RTMP port
chunk_size 4000;
application livetv { 

live on;
# Turn on HLS
hls on;
hls_path C://m3u8//live;
hls_fragment 3;
hls_playlist_length 60;
# disable consuming the stream from nginx as rtmp
deny play all;
}
application file { 

live on;
# Turn on HLS
hls on;
hls_path C://m3u8//show;
hls_fragment 3;
hls_playlist_length 60;
# disable consuming the stream from nginx as rtmp
deny play all;
}
}
}
http { 

sendfile off;
tcp_nopush on;
# aio on;
directio 512;
default_type application/octet-stream;
server { 

listen 8080;
location /live { 

# 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 requests
if ($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;
}
alias C://m3u8//live;
# root E://m3u8;
}
location /show { 

# 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 requests
if ($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;
}
alias C://m3u8//show;
# root E://m3u8;
}
}
}

第三步:写好代码

此处我只写出我用的video那段,另外一种div的请到页首的参考链接里面学习

代码语言:javascript
复制
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<title>直播</title>
<link href="https://cdn.bootcss.com/video.js/7.6.5/alt/video-js-cdn.min.css" rel="stylesheet">
<script src="https://cdn.bootcss.com/video.js/6.6.2/video.js"></script>
<script src="https://cdn.bootcss.com/videojs-contrib-hls/5.15.0/videojs-contrib-hls.min.js"></script>
</head>
<body>
<video id="liveVideo" class="video-js vjs-default-skin vjs-big-play-centered" autoplay muted>
<source id="source" src="http://127.0.0.1:8080/show/stream.m3u8" type="application/x-mpegURL">
</video>
</body>
<script> var liveVideo = videojs('liveVideo',{ 
 bigPlayButton : true, textTrackDisplay : false, posterImage: false, errorDisplay : false, }) // let li = document.getElementById("liveVideo"); // li.style.display = 'none'; </script>
</html>

第四步:启动

个人建议启动顺序:nginx,web页面,ffmpeg 启动nginx:先到nginx文件夹中,打开cmd,使用下面命令 该命令是让nginx按照指定配置文件进行启动

代码语言:javascript
复制
nginx -c conf/nginx-rtmp.conf

启动web页面:双击 启动ffmpeg:先到你要发布的视频文件夹中,打开cmd,使用下面命令 0169.flv替换成你的视频,其他的我建议你不要乱动,如果你是新手的话

代码语言:javascript
复制
ffmpeg -re -i 0169.flv -vcodec libx264 -vprofile baseline -g 30 -acodec aac -strict -2 -f flv rtmp://127.0.0.1:1935/file/stream

第五步:看页面啊,还看我的博客干啥。

成功的请三连谢谢,没成功的出门左转,再见。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/184808.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022年10月7日 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前情提示:本文使用的是windows10系统
  • 主要流程讲解
  • 第一步:下载FFmpeg
  • 第二步:安装nginx
  • 第三步:写好代码
  • 第四步:启动
  • 第五步:看页面啊,还看我的博客干啥。
相关产品与服务
云直播
云直播(Cloud Streaming Services,CSS)为您提供极速、稳定、专业的云端直播处理服务,根据业务的不同直播场景需求,云直播提供了标准直播、快直播、云导播台三种服务,分别针对大规模实时观看、超低延时直播、便捷云端导播的场景,配合腾讯云视立方·直播 SDK,为您提供一站式的音视频直播解决方案。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档