CentOS6下基于Nginx搭建mp4/flv流媒体服务器(4)

location ~ \.flv$ {
                    root /mnt/media/vod;
                  flv;
                  limit_conn addr 20;
                  limit_rate 200k;
            }
            location ~ \.mp4$ {
                  root /mnt/media/vod;
                  mp4;
                  limit_conn addr 20;
                  limit_rate 200k;
            }

location /hls {
                # Serve HLS fragments
                alias /mnt/media/app;
            }

access_log  logs/nginxflv_access.log access;
        }
       
           
    }
      ——————————————————nginx配置文件——————————————
   
4.把自己的电影转换成mp4和flv格式来测试nginx搭的环境

4.1)准备两部电影,硬盘上随便找,我找了“谍影重重A.mp4”和“鹿鼎记033.rmvb”,尽量找小一点十来分钟的,等下我们还要看完测试一下转换的结果有没有音影不同步的情况。
    我把两部电影重命名为 movie1.mp4和 movie2.rmvb,并上传到服务器/mnt/media/video下面,这里目录用来存放我们的原始视频。还有一个目录是/mnt/media/vod 用来存放转换后的视频。
    我这里的具体目录结构为:
      /mnt/media/video -> 存放原始视频
    /mnt/media/app  -> 存放转成m3u8的视频,供http访问(HLS)
      /mnt/media/vod  -> 存放转换后的flv和mp4视频,供http或rtmp访问

4.2)用ffmpeg转换mp4文件(ffmpeg不支持rmvb)
      [root@linuxidc ~]# cd /mnt/media/video/
      [root@linuxidc video]# ffmpeg -i movie1.mp4 -y -vcodec libx264 -vf scale=”640:-1″ -r 15 -acodec libfaac ../vod/movie1.flv
      -y:文件覆盖,-vf scale=”640:-1”:尺寸调整为宽度640高度自动,-r 15:帧数15fps,这里用libfaac音频编码防止转成ts格式时iPhone没有声音
   
      添加关键帧用来支持拖动播放
    [root@linuxidc video]# cd ../vod
      [root@linuxidc vod]# mv movie1.flv movie1-src.flv
      [root@linuxidc vod]# yamdi -i movie1-src.flv -o movie1.flv
      [root@linuxidc vod]# rm -rf movie1-src.flv

接下来测试的话,下载VLC Player到本地测试(VLC有时候会花屏,用JWPlayer就好了),或者不行麻烦的话装一个apache服务器并下载JWPlayer来测试。
    测试播放地址为(地址已失效,请勿访问):
    HTTP形式访问:     
      RTMP形式访问:      rtmp://www.linuxidc.com/vod/movie1.flv

4.3)用mencoder转换rmvb文件
   
      4.4)把flv转换成hls的m3u8
      下载安装segmenter
      [root@linuxidc ~]# yum install -y curl curl-devel zlib-devel openssl-devel perl perl-devel cpio expat-devel gettext-devel git
      [root@linuxidc ~]# git clone https://github.com/johnf/m3u8-segmenter.git
      [root@linuxidc ~]# cd m3u8-segmenter/
      [root@linuxidc m3u8-segmenter]# gcc -Wall -g m3u8-segmenter.c -o segmenter -lavformat
      [root@linuxidc m3u8-segmenter]# cp segmenter /usr/bin/
     
      转换成ts,片源大小及清晰度等取决于flv文件,所以转成flv的时候一定要统一起来
    [root@linuxidc vod]# cd /mnt/media/vod
      [root@linuxidc vod]# mkdir /mnt/media/app/movie1/
      [root@linuxidc vod]# ffmpeg -y -i movie1.flv -f mpegts -c:v copy -c:a copy -vbsf h264_mp4toannexb /mnt/media/app/movie1/main.ts
     
      切片
    [root@linuxidc movie1]# cd /mnt/media/app/movie1/
      [root@linuxidc movie1]# segmenter -i main.ts -d 10 -p movie1 -m movie1.m3u8 -u
      -d 10:每个切片为10秒,-p movie1:切片的名字的前缀
    -u URL地址:m3u8中播放列表的地址前缀,自己cat一下生成的movie1.m3u8就知道什么用 了
   

测试一下,用iPhone的Safari访问一下

注:安装日志记录于半年前的evernote,现在才贴出来的,所以文中的视频访问地址都已经失效了。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/797407da1acb1a3248d2e79359e6021d.html