`
haoningabc
  • 浏览: 1477758 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

ffmpeg+nginx 的直播(1,直播播放的视频文件)

阅读更多
64位操作系统centos7
############
1.一键安装

http://jingyan.baidu.com/article/22a299b5cf7ea79e19376ad1.html

安装EPEL Release,因为安装需要使用其他的repo源,所以需要EPEL支持
yum install -y epel-release 

#如果出现缺少Code提示,可以:
sudo rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7

#安装完成之后,可以查看是否安装成功
yum repolist
安装Nux-Dextop源
#导入一个Code
sudo rpm --import http://li.nux.ro/download/nux/RPM-GPG-KEY-nux.ro

#安装nux-dextop 源
sudo rpm -Uvh http://li.nux.ro/download/nux/dextop/el7/x86_64/nux-dextop-release-0-1.el7.nux.noarch.rpm

#查看repo源是否安装成功
yum repolist



#########################
yum安装ffmpeg
yum install -y ffmpeg

#安装完成后检查ffmpeg 版本
ffmpeg -version

安装播放器
yum install vlc
yum install mplayer

随便下载个mp4文件
mplayer emacs.mp4



2.安装rtmp:
https://github.com/arut/nginx-rtmp-module/wiki/Getting-started-with-nginx-rtmp


cd /opt/nginx
git clone https://github.com/killinux/nginx-rtmp-module
./configure --add-module=/opt/nginx/nginx-rtmp-module --prefix=/usr/local/nginx

make
make install


注意:★★★★★★
mime.types文件里加两行
application/octet-stream              ts; 
application/x-mpegURL                 m3u8; 

否则不支持m3u8
apple的safari会加载不了视频文件
nginx.conf的配置文件修改如下
###################
worker_processes  1;
error_log  logs/error.log debug;
events {
    worker_connections  1024;
}
rtmp {
    server {
        listen 1935;
        application myapp {
            live on;
            #record keyframes;
            #record_path /tmp;
            #record_max_size 128K;
            #record_interval 30s;
            #record_suffix .this.is.flv;
            #on_publish http://localhost:8080/publish;
            #on_play http://localhost:8080/play;
            #on_record_done http://localhost:8080/record_done;
        }
        application hls {  
             live on;  
             hls on;  
             hls_path /tmp/app;  
             hls_fragment 5s;  
       }  
    }
}
http {
    autoindex on;
    server {
        listen      8080;
        location /stat {
            rtmp_stat all;
            rtmp_stat_stylesheet stat.xsl;
        }
        location /stat.xsl {
            root /opt/nginx/nginx-rtmp-module/;
        }
        location /control {
            rtmp_control all;
        }
        #location /publish {
        #    return 201;
        #}
        #location /play {
        #    return 202;
        #}
        #location /record_done {
        #    return 203;
        #}
        location /rtmp-publisher {
            root /opt/nginx/nginx-rtmp-module/test;
        }
        location /hls {  
           #server hls fragments  
           types{  
             application/vnd.apple.mpegurl m3u8;  
             video/mp2t ts;  
           }  
        alias /tmp/app;  
        expires -1;  
        }  
        location / {
            root /opt/nginx/nginx-rtmp-module/test/www;
        }
    }
}

###################

3.iphone的服务端和浏览器客户端测试
如果是用ios的safari打开
服务端启动
ffmpeg -re -i ./emacs.mp4 -vcodec copy -acodec copy -f flv rtmp://192.168.139.117/hls/mystream


客户端用
##########################
<html>
<head>
<title>HTTP Live Streaming Example</title>
</head>
<body>
<video src="http://devimages.apple.com/iphone/samples/bipbop/bipbopall.m3u8" height="300" width="400">
</video>
<video src="http://192.168.139.117:8080/hls/mystream.m3u8" height="300" width="400">
</video>

-----------------
</body>
</html>

#########################
4.windows的服务端和浏览器chrome测试

如果是用windows的浏览器打开

服务端用
ffmpeg -loglevel verbose -re -i ./emacs.mp4  -f flv rtmp://192.168.139.117/myapp/mystream

参考nginx-rtmp-module/test/www/ffstream.sh
客户端参考
参考nginx-rtmp-module/test/www/index.html
##################
<b>Play</b> | <a href="record.html">Record</a>
<br/>
<script type="text/javascript" src="/jwplayer/jwplayer.js"></script>

<div id="container">Loading the player ...</div>
    <script type="text/javascript">
        jwplayer("container").setup({
        sources: [
            {
                file: "rtmp://192.168.139.117/myapp?carg=1/mystream?sarg=2"
            }
        ],
        image: "bg.jpg",
        autostart: false,
        width: 640,
        height: 480,
        primary: "flash"
});
</script>

###################
5.用linux客户端ffplay打开
如果是用客户端打开
参考
nginx-rtmp-module/test/www/play.sh
ffplay -loglevel verbose "rtmp://192.168.139.117/myapp/mystream"
ffplay -loglevel verbose "rtmp://192.168.139.117/hls/mystream"


查看视频状态使用
http://192.168.139.117:8080/stat

参考
https://github.com/killinux/nginx-rtmp-module
http://blog.csdn.net/cjsafty/article/details/9108587
http://haoningabc.iteye.com/blog/1559086






分享到:
评论

相关推荐

    用FFmpeg+nginx+rtmp搭建环境实现推流.docx

    nginx可以与FFmpeg结合,使用FFmpeg将视频文件转换为流媒体格式,然后将其推送到客户端。 RTMP RTMP(Real-Time Messaging Protocol)是一种基于TCP的应用层协议,主要用来实时传输音频、视频和数据。RTMP协议可以...

    ffmpeg+nginx-rtmp-module+flv监控视频web展示

    FFmpeg、Nginx-RTMP-Module 和 FLV 监控视频Web展示是一个整合了实时流媒体处理、传输和播放的技术方案。这个方案适用于在Web端实现监控视频的实时展示,尤其对于需要构建远程监控系统或者直播平台的场景非常实用。...

    搭建ffmpeg+nginx+yasm 流媒体服务器低延迟,最低延迟两三秒

    我们需要在nginx的配置文件中指定视频流的处理规则,以便nginx可以正确地处理视频流。 五、流媒体服务器应用 流媒体服务器可以应用于各种场景,例如直播、监控、在线视频等。流媒体服务器可以提供实时的视频流传输...

    Windows下一站式搭建ffmpeg推流+nginx-http-flv-module直播拉流+FLV.js播放环境.rar

    1、在Windows系统下,搭建ffmpeg推流+nginx-http-flv-module直播拉流+FLV.js播放环境,所需依赖相关资源文件。 2、适合初学、研究、验证视频直播部署方案的相关技术人员。

    ffmpeg+nginx程序包

    在这个"ffmpeg+nginx程序包"中,它们被结合使用,实现了通过RTSP(Real-Time Streaming Protocol)协议远程播放摄像头视频的功能。 FFmpeg的核心功能包括视频编码、解码、转换、分割、合并以及流媒体处理。它支持...

    FFmpeg+Nginx转流相关文件

    在FFmpeg+Nginx转流的相关项目中,通常的目标是构建一个实时的流媒体服务器系统,能够接收来自各种源的直播流,如RTMP协议的视频流,然后通过FFmpeg进行处理,再由Nginx分发给多个客户端。这样的系统广泛应用于在线...

    FFmpeg+Nginx海康大华威视rtsp转rtmp

    FFmpeg和Nginx RTMP模块是两种广泛用于视频流处理的技术。FFmpeg是一个开源的跨平台工具包,用于处理音频和视频文件,包括转换、编码、解码、分割、合并等多种功能。Nginx RTMP模块则是在Nginx服务器基础上扩展的一...

    ffmpeg+nginx+vlc

    1. **推流端**:使用 FFmpeg 将摄像头或其他输入源的视频流编码并推送到运行了 Nginx-RTMP 模块的服务器。 2. **服务器端**:Nginx-RTMP 接收推流,将其存储或转码成 HLS,并提供 RTMP 和 HLS 流给客户端。 3. **...

    nginx+ffmpeg流媒体服务器(java)

    基于java搭建的流媒体服务器(nginx+ffmpeg)可运行在linux上,具体文章说明:https://blog.csdn.net/weixin_40263855/article/details/87917484

    rtmp+nginx实现rtmp直播

    在实际应用中,你可以根据需求调整推流代码,例如从摄像头或文件读取视频数据,然后通过librtmp将这些数据推送到Nginx服务器。 总结一下,"rtmp+nginx实现rtmp直播"主要是利用Nginx的RTMP模块搭建一个流媒体服务器...

    ffmpeg录制屏幕并推流ffmpeg+nginx-http-flv-module+flv.js

    然后,使用FFmpeg将录制的视频实时推送到Nginx服务器: ```bash ffmpeg -f x11grab -i :0 -c:v libx264 -preset ultrafast -tune zerolatency -f flv rtmp://localhost/live/stream_key ``` 这里,我们使用`-f flv...

    nginx+ffmpeg+nginx-http-flv-module+html资源包

    6. 使用FFmpeg将视频文件转化为FLV格式,并上传到Nginx服务器的指定目录。 7. 通过浏览器访问`flv播放.html`,测试流媒体播放功能是否正常。 这个资源包提供了一种简单而有效的方法来建立一个基础的流媒体服务系统...

    Nginx-rtmp流媒体服务器搭建+ffmpeg推流.pdf

    Nginx-rtmp流媒体服务器搭建+ffmpeg推流.pdf 本文将对Nginx-rtmp流媒体服务器的搭建和ffmpeg推流进行详细的讲解,从操作系统的选择到Nginx的编译安装,最后到配置Nginx服务和ffmpeg推流的配置。 一、操作系统的...

    nginx+ffmpeg+demo.zip

    【标题】"nginx+ffmpeg+demo.zip"是一个包含使用Nginx和FFmpeg在Google Chrome浏览器中实现视频预览的解决方案的压缩包。这个压缩包提供了编译完成的Nginx服务器、FFmpeg工具集以及一个前端展示的示例。 【Nginx】...

    flv+nginx+vue+ffmpeg

    4. **FFmpeg**:FFmpeg是一个强大的命令行工具集,用于处理多媒体文件,包括转码、合并、分割、提取音频和视频流等。在流媒体场景中,FFmpeg可以用于转换不同格式的媒体文件,确保它们与服务器和客户端兼容,例如将...

    nginx+rtmp+ffmpeg+vlc.zip

    例如,你可以使用FFmpeg将本地视频文件推送到Nginx-RTMP服务器,或者从服务器拉取流并将其保存为本地文件。 3. **VLC** VLC是一款流行的多媒体播放器,支持多种格式的音频和视频文件,以及网络流。在流媒体环境中...

    linux下qt5中调用ffmpeg测试程序

    在Linux环境下,Qt5是一个强大的跨平台应用开发框架,它提供了丰富的图形用户界面(GUI)组件和工具,而FFmpeg则是一个开源的多媒体处理库,支持音频、视频的编码、解码、转换和流媒体功能。将FFmpeg与Qt5结合,可以...

    nignx+nginx-http-flv-module-master+ffmpeg

    此外,FFmpeg还支持RTMP推流,可以将本地视频源推送到Nginx服务器,完成直播发布。 使用这个资源包进行实时视频流开发的基本流程如下: 1. 首先,安装并配置Nginx,确保Nginx-Http-Flv-Module正确加载。 2. 编译并...

    FFmpeg-nginx-Http-flv

    开发者可以创建Angular组件来调用Flv.js,实现直播视频的播放控制,同时利用Angular的数据绑定和路由功能,与后端Nginx服务器进行交互,获取和播放直播流。 总结来说,FFmpeg-nginx-Http-flv方案是一个实用的直播...

    electron+ffmpeg+vue3 录屏推流 源代码 真实有效

    **推流** 是将实时视频或音频数据发送到服务器的过程,常用于直播场景。在这个应用中,录制的屏幕内容会被推送到一个流媒体服务器,可能是像Nginx-RTMP或Wowza这样的服务,使其他用户可以实时观看。 **npm install*...

Global site tag (gtag.js) - Google Analytics