前言:这个服务主要用于一下项目里面的视屏在线预览。

第一点  下载FFmpge  

网上很多,有很多说用 PHP-FFmpge 等其他的都是了一下很麻烦。这里我提供我用的 

链接:https://pan.baidu.com/s/1s2wjRKvtyaeua-e4NjuOlw 
提取码:yns6 

这里有一篇有参考价值的博客 ,其他的好像帮助不大  参考

这里我要说一下这个哥们,后面说点有点坑,什么叫 “把刚才解压的文件bin文件夹下面的ffmpeg.exe放一个到web目录”,这句话正的是坑,搞得浪费一上午。

其实直接把下载好的文件放在项目目录下,使用的时候直接绝对路径 调用就行。

我这里以视屏截图为例,具体要推流什么的,晚上百度一大把。

$name = '123.rmvb';//图片名字
$from = "E:\web_hwf\\PHP\\05WJGL\\public\\uploads\\file\\20181129\\weiqian.mp4";//文件存放路径
$to = "E:\web_hwf\\PHP\\05WJGL\public\\uploads\\file\\20181129\\";//生成图片存放路径
$str = "E:\web_hwf\\PHP\\05WJGL\\vendor\\FFmpge\\bin\\ffmpeg.exe -i " . $from . " -y -f mjpeg -ss 3 -t 1 -s 740x500 " . $to . $name;//ffmpeg命令,具体啥意思可以百度
exec($str, $output);//执行上述语句

这里绝对路径实际开发的时候可以 使用PHP z自带的方法 获取 项目地址拼接好。

推流

$strMP4RTMP = "E:\web_hwf\\PHP\\05WJGL\\vendor\\FFmpge\\bin\\ffmpeg.exe -re -i " . $from . " -vcodec copy -acodec copy -b:v 800k -b:a 32k -f flv rtmp://localhost:1935/live/home" ;

这里 rtmp://localhost:1935/live/home  ,需要peiz配置nginx 服务 ,记下来会说

拉流

ffplay.exe rtmp://localhost:1935/live/home

这里我们用 FFmpge   包下面 ,目录里面 会有一个拉流程序 ,用来测试效果。使用方式CMD 到该目录下。

E:\web_hwf\PHP\05WJGL\vendor\FFmpge\bin>ffplay.exe rtmp://localhost:1935/live/home
ffplay version N-92644-gfe0416f8a1 Copyright (c) 2003-2018 the FFmpeg developers
  built with gcc 8.2.1 (GCC) 20181201
  configuration: --disable-static --enable-shared --enable-gpl --enable-version3 --enable-sdl2 --enable-fontconfig --enable-gnutls --enable-iconv --enable-libass --enable-libbluray --enable-libfreetype --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-libopus --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libtheora --enable-lib
wolame --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxml2 --enable-libzimg --enable-lzma --enable-zlib --enable-gmp --enable-libvidstab --enable-libvorbis --enable-libvo-amrwbenc --enable-libmysofa --enable-libspeex --enable-libxvid --enable-libaom --enable-libmfx --enable-amf --enable-ffnvcodec --enable-cuvid --enable-d3d11va --enable-nvenc --
nable-nvdec --enable-dxva2 --enable-avisynth --enable-libopenmpt
  libavutil      56. 24.101 / 56. 24.101
  libavcodec     58. 41.102 / 58. 41.102
  libavformat    58. 23.102 / 58. 23.102
  libavdevice    58.  6.101 / 58.  6.101
  libavfilter     7. 46.101 /  7. 46.101
  libswscale      5.  4.100 /  5.  4.100
  libswresample   3.  4.100 /  3.  4.100
  libpostproc    55.  4.100 / 55.  4.100
Input #0, flv, from 'rtmp://localhost:1935/live/home':   0B f=0/0
  Metadata:
    Server          : NGINX RTMP (github.com/arut/nginx-rtmp-module)
    displayWidth    : 1280
    displayHeight   : 720
    fps             : 25
    profile         :
    level           :
  Duration: 00:00:00.00, start: 7.301000, bitrate: N/A
    Stream #0:0: Data: none
    Stream #0:1: Audio: aac (LC), 44100 Hz, stereo, fltp, 128 kb/s
    Stream #0:2: Video: h264 (High), yuv420p(progressive), 1280x720 [SAR 1:1 DAR 16:9], 2856 kb/s, 25 fps, 25 tbr, 1k tbn, 50 tbc
SDL_OpenAudio (2 channels, 44100 Hz): WASAPI can't initialize audio client: 灏氭湭璋冪敤 CoInitialize銆?

SDL_OpenAudio (1 channels, 44100 Hz): WASAPI can't initialize audio client: 灏氭湭璋冪敤 CoInitialize銆?

No more combinations to try, audio open failed
 263.35 M-V: -0.018 fd=   2 aq=    0KB vq=    0KB sq=    0B f=0/0

python 流媒体服务 php流媒体服务器_python 流媒体服务

 拉流和推流成功了,可是视屏播放卡顿....这就比较尴尬。

这里卡顿播放器的问题。这里用一个HTML 页面接收一下来测试。这样看起来是不是还可以

python 流媒体服务 php流媒体服务器_rtmp_02

<html>
<head>
    <title>视频直播</title>
    <meta charset="utf-8">
    <link href="http://vjs.zencdn.net/5.5.3/video-js.css" rel="stylesheet">
    <!-- If you'd like to support IE8 -->
    <script src="http://vjs.zencdn.net/ie8/1.1.1/videojs-ie8.min.js"></script>
</head>
<body>
<h1>直播间</h1>
<video id="my-video" class="video-js" controls preload="auto" width="640" height="300"
       poster="http://ppt.downhot.com/d/file/p/2014/08/12/9d92575b4962a981bd9af247ef142449.jpg" data-setup="{}">
    <source src="rtmp://localhost:1935/live/home" type="rtmp/flv">
    <!-- 如果上面的rtmp流无法播放,就播放hls流 -->
    <!-- <source src="http://10.10.5.119/live/livestream.m3u8" type='application/x-mpegURL'> -->
    <p class="vjs-no-js">播放视频需要启用 JavaScript,推荐使用支持HTML5的浏览器访问。
        To view this video please enable JavaScript, and consider upgrading to a web browser that
        <a href="http://videojs.com/html5-video-support/" target="_blank">supports HTML5 video</a>
    </p>
</video>
<script src="http://vjs.zencdn.net/5.5.3/video.js"></script>
</body>
</html>

 

第二  Nginx 服务器搭建

我是windows 系统  这里要说明的一点是,Nginx 版本很多,要下对版本。我这里提供我使用的版本

链接:https://pan.baidu.com/s/1qKskgZ5JMIgW_5Eg6pnjEQ 
提取码:t717 

直接解压出来,启动可以直接点击文件根目录下的 nginx.exe  。在conf文件夹下面 有nginx.conf  配置文件 ,这里我已经配置好了测试版本 。

重点  启动 的效果

会看到黑窗口一闪而过,这里就需要在CMD里面验证一下是否启动成功

F:\nginx-1.7.11.3-Gryphon>nginx -s stop

F:\nginx-1.7.11.3-Gryphon>start nginx

F:\nginx-1.7.11.3-Gryphon>tasklist /fi "imagename eq nginx.exe"

映像名称                       PID 会话名              会话#       内存使用
========================= ======== ================ =========== ============
nginx.exe                     3896 Console                    1      7,396 K
nginx.exe                    14740 Console                    1     10,620 K
nginx.exe                    15492 Console                    1     10,580 K

这里说明一下  第一行 nginx -s stop tinz 停止服务

                       第二行 start nginx   启动服务  ,我这里使用的是命令启动的

                       第三行  tasklist /fi "imagename eq nginx.exe"   判断是否启动成功

如果显示下面的那个这个表格就是启动成功了。