其他教程

其他教程

Products

当前位置:首页 > 其他教程 >

nginx+rtmp+livePush实现视频转流推流

GG网络技术分享 2025-03-18 16:14 0


大家好,这里是关于[centos6/7系统安装FFmpeg给mp4视频切片为m3u8],[nginx+rtmp+livePush实现视频转流推流]问题的解答,希望对您有所帮助。如果你还想了解更多这方面的信息,请关注本站其他相关内容,共同学习吧!

centos6/7系统安装FFmpeg给mp4视频切片为m3u8

教程大全FFmpeg安装,MP4切片m3u8

FFmpeg是一种流行的开源解决方案,用于录制,转换和流式传输音频和视频,广泛用于各种在线流媒体服务。目前国内外视频服务普遍采用在FFmpeg进行二次开发的方案。

在本文中,我将向您展示如何在CentOS 6/7服务器上安装FFmpeg。以及简单的使用操作

先决条件

新部署的Vultr CentOS 6或CentOS 7服务器实例。

一个sudo用户。

第1步:更新系统sudo yum install epel-release -y

sudo yum update -y

sudo shutdown -r now

第2步:安装Nux Dextop YUM仓库
目前还没有针对CentOS的官方FFmpeg rpm软件包。相反,您可以使用第三方YUM回购Nux Dextop来完成工作。

在CentOS 7上,您可以使用以下命令安装Nux Dextop YUM存储库:

sudo rpm –import http://li.nux.ro/download/nux/RPM-GPG-KEY-nux.ro

sudo rpm -Uvh http://li.nux.ro/download/nux/dextop/el7/x86_64/nux-dextop-release-0–5.el7.nux.noarch.rpm

对于CentOS 6,您需要安装另一个版本:

sudo rpm –import http://li.nux.ro/download/nux/RPM-GPG-KEY-nux.ro

sudo rpm -Uvh http://li.nux.ro/download/nux/dextop/el6/x86_64/nux-dextop-release-0–2.el6.nux.noarch.rpm

第3步:安装FFmpeg和FFmpeg开发包

sudo yum install ffmpeg ffmpeg-devel -y

第4步:测试

1)确认FFmpeg的安装:

ffmpeg

此命令提供有关系统上安装的FFmpeg的详细信息。在撰写本文时,使用Nux dextop安装的FFmpeg版本为2.6.8。

如果您想了解有关FFmpeg的更多信息,请输入:

ffmpeg -h

2)将mp3音频文件转换为ogg音频文件。

使用FFmpeg时需要确定适当的参数。例如,您可以使用以下命令将mp3文件转换为ogg文件:

wget https://archive.org/download/MLKDream/MLKDream_64kb.mp3

ffmpeg -i MLKDream_64kb.mp3 -c:a libvorbis -q:a 4 MLKDream_64kb.ogg

3)将flv视频文件转换为mp4视频文件。
以下是从flv到mp4的无损转换示例:

wget https://archive.org/download/beeenieilp/beeen.flv

ffmpeg -i beeen.flv -y -vcodec copy -acodec copy beeen.mp4

4)将MP4视频文件转换为m3u8转换示例。

ffmpeg-i 斗罗大陆合集篇EP01.mp4-codeccopy-vbsfh264_mp4toannexb-map 0 -fsegment-segment_listindex.m3u8-segment_time 10 out%03d.ts

4)将mkv视频文件转换为mp4转换示例。

ffmpeg-i 复仇者联盟3无限战争.mkv-y-c:vlibx264-strict-2 复仇者联盟3.mp4

测试mp4切片:

首先下载一个mp4文件到我们服务器的root目录,然后SSH输入

ffmpeg -i 你的视频文件名.mp4 -codec copy -vbsf h264_mp4toannexb -map 0 -f segment -segment_list index.m3u8 -segment_time 10 out%03d.ts

它会自动进行转换操作,完成后在/root目录会生成三个文件index.m3u8、out000.ts、out001.ts、out002.ts

其中index.m3u8就是我们需要调用的视频媒体列表文件。将这三个文件移动到我们的网站目录下

我们可以在本机使用potplayer打开index.m3u8的地址:

比如我的地址是http://ql.cheshirex.com/index.m3u8(临时地址,随时删除)

如果你的服务器网络没有问题的话,直接就打开播放了。

nginx+rtmp+livePush实现视频转流推流

需要的工具:

一台电脑。

一个美美的心情。

centos环境

nginx(linux下部署)

rtmp模块(linux下部署)

livePush.war包(windows下部署)

OBS(测试转流工具)

VLC(测试拉流工具)

-----------------------我的分割线--------------------

先安装nginx+rtmp模块( nginx-rtmp-module-maste),没什么好说的。

1、wget http://nginx.org/download/nginx-1.8.0.tar.gz(如果连接没有或者更换的,移步 nginx下载 )选择你喜欢的版本

2、tar -zxvf nginx-1.8.0.tar.gz

3、 cd nginx-1.8.0

4、./configure --prefix=/usr/local/src/nginx --add-module=../nginx-rtmp-module --with-http_ssl_module ./configure --prefix=/usr/local/src/nginx --add-module=../nginx-rtmp-module-maste --with-http_ssl_module

5、make && make install

中间如果少什么模块,就去装。

然后启动nginx。浏览器中能打开就好。

可能回有这样的一个问题 nginx: [emerg] unknown directive \"rtmp\"

网上说法很多,都是说没有安装rtmp模块,但是我之前是安装好了的。后来rtmp有多种。一定要选择源码类的哦。(nginx-rtmp-module-maste)

直接上nginx配置文件。

[java] view plain copy

  1. ##################RTMP服务#################
  2. rtmp {
  3. server {
  4. listen 1935;
  5. chunk_size 4096;
  6. application video {
  7. play /usr/local/data/video;
  8. }
  9. application live{ #第一处添加的直播字段
  10. live on;#直播模式
  11. hls on; #这个参数把直播服务器改造成实时回放服务器。
  12. wait_key on; #对视频切片进行保护,这样就不会产生马赛克了。
  13. hls_path /tmp/hls; #切片视频文件存放位置。
  14. hls_fragment 10s; #每个视频切片的时长。
  15. hls_playlist_length 60s; #总共可以回看的事件,这里设置的是1分钟。
  16. hls_continuous on; #连续模式。
  17. hls_cleanup on; #对多余的切片进行删除。
  18. hls_nested on; #嵌套模式。
  19. }
  20. }
  21. }
  22. ####启动浏览器查看http://localhost:80/stat
  23. http {
  24. include mime.types;
  25. default_type application/octet-stream;
  26. sendfile on;
  27. keepalive_timeout 65;
  28. server {
  29. listen 80;
  30. server_name localhost;
  31. location /stat {
  32. #第二处添加的location字段。
  33. rtmp_stat all;
  34. rtmp_stat_stylesheet stat.xsl;
  35. }
  36. location /stat.xsl {
  37. #第二处添加的location字段。
  38. root /usr/nginx/nginx-rtmp-module-master/;
  39. }
  40. location /live { #这里也是需要添加的字段。
  41. types {
  42. application/vnd.apple.mpegurl m3u8;
  43. video/mp2t ts;
  44. }
  45. alias /opt/video/hls;
  46. expires -1;
  47. add_header Cache-Control no-cache;
  48. }
  49. location / {
  50. root html;
  51. index index.html index.htm;
  52. }
  53. error_page 500 502 503 504 /50x.html;
  54. location = /50x.html {
  55. root html;
  56. }
  57. }
  58. }

这个配置文件直接用就ok了。

然后创建文件夹 /tmp/hls/

给hls赋权限。chmod 777 /tmp/hls

我这里设置的是最高权限哦。

至此到这里,nginx+rtmp就已经搞定了。

现在启动nginx

1、cd /usr/local/nginx/sbin/

2、./nginx -c /usr/nginx/nginx-1.8.1/conf/nginx.conf

再浏览器中打开就ip,看看nginx是否成功启动成功

打开OBS软件,设置一下

可以再/tmp/hls下看到有一个名叫app的文件夹。我们看一下内容。

这里有数据就ok了。

然后下一步。

使用VLC拉流。能成功的获取到视频才算是成功的嘛。

可以看到,这里已经能成功的拉起到刚才推送的视频了。到此为止,已经满足一部分的看官了。

但是呢。我们需要继续往下走哦。

使用livePush来代替OBS,毕竟实际项目使用,没办法使用OBS。他只能推一个哦。

拿到livePush的war包,再tomcat下启动,访问网址就出现下面的页面

这个应用名就是你推的流的名。

视频源是从网上随便找了个。发布地址应该指向到nginx上。然后点击发布。生成一个播放地址,拿这个播放地址去刚才的VLC中去拉流就ok了。

到此为止,已经结束咯。哦。对了,war包。传送门在此 失效请联系我。

标签: 直播

提交需求或反馈

Demand feedback