Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1478880
  • 博文数量: 228
  • 博客积分: 1698
  • 博客等级: 上尉
  • 技术积分: 3241
  • 用 户 组: 普通用户
  • 注册时间: 2008-12-24 21:49
个人简介

Linux

文章分类

全部博文(228)

文章存档

2017年(1)

2016年(43)

2015年(102)

2014年(44)

2013年(5)

2012年(30)

2011年(3)

分类: LINUX

2016-01-12 23:32:29

前段时间搭了个RTMP的环境,简单介绍下(主要是ffmpeg编译):

Yasm(NASM汇编,支持X86和AMD64指令集,支持NAS和GNU汇编器语法)

点击(此处)折叠或打开

  1. wget http://www.tortall.net/projects/yasm/releases/yasm-1.2.0.tar.gz
  2. tar xzvf yasm-1.2.0.tar.gz
  3. cd yasm-1.2.0
  4. ./configure
  5. make –j 4
  6. make install
lame,mp3编码器 (最新版本3.99.5)
点击(此处)折叠或打开
  1. wget http://sourceforge.net/projects/lame/files/latest/download?source=directory
  2. tar zxvf lame-3.99.5.tar.gz
  3. cd lame-3.99.5
  4. ./configure --enable-shared --prefix=/usr
  5. make -j 4
  6. make install
libogg,用于处理ogg多流传输格式的开发库,独立解码器(最新版本1.3.2)

点击(此处)折叠或打开

  1. wget
  2. tar zxvf libogg-1.3.2.tar.gz
  3. cd libogg-1.3.2
  4. ./configure
  5. make -j 4
  6. make install
libvoris,通用音频解码器,(最新版本1.3.5
点击(此处)折叠或打开
  1. wget http://downloads.xiph.org/releases/vorbis/libvorbis-1.3.5.tar.gz
  2. tar zxvf libvorbis-1.3.5.tar.gz
  3. cd libvorbis-1.3.5
  4. ./configure
  5. make -j 4
  6. make install
XviD,MPEG-4视频编解码器
点击(此处)折叠或打开
  1. wget http://downloads.xvid.org/downloads/xvidcore-1.3.2.tar.gz
  2. tar zxvf xvidcore-1.3.2.tar.gz
  3. cd xvidcore
  4. ./build/generic/configure
  5. cd build/generic/
  6. make -j 4
  7. make install
x264,开源的H264/MPEG-4 AVC视频编码函数库

点击(此处)折叠或打开

  1. wget ftp://ftp.videolan.org/pub/x264/snapshots/last_x264.tar.bz2
  2. bzip2 -d last_x264.tar.bz2
  3. tar xvf last_x264.tar
  4. cd x264-snapshot-20160106-2245/
  5. ./configure --enable-shared --enable-static --prefix=/usr
  6. make
  7. make install
libdts,DTS编码库
点击(此处)折叠或打开
  1. wget http://download.videolan.org/pub/videolan/libdca/0.0.5/libdca-0.0.5.tar.bz2
  2. bzip2 -d libdca-0.0.5.tar.bz2
  3. tar xvf libdca-0.0.5.tar
  4. cd libdca-0.0.5
  5. ./configure
  6. make
  7. make install
liba52,符合ATSC A/52标准的流媒体音频解码标准的程序软件包

点击(此处)折叠或打开

  1. wget http://liba52.sourceforge.net/files/a52dec-0.7.4.tar.gz
  2. tar zxvf a52dec-0.7.4.tar.gz
  3. cd a52dec-0.7.4
  4. ./configure
  5. make -j 4
  6. make install
faad2,用作MPEG-2和AAC格式的解码

点击(此处)折叠或打开

  1. wget http://downloads.sourceforge.net/faac/faad2-2.7.tar.gz
  2. tar zxvf faad2-2.7.tar.gz
  3. cd faad2-2.7
  4. ./configure
  5. make -j 4
  6. make install

faac,AAC音频编码器

点击(此处)折叠或打开
  1. wget http://downloads.sourceforge.net/faac/faac-1.28.tar.gz
  2. tar zxvf faac-1.28.tar.gz
  3. cd faac-1.28
  4. ./configure --prefix=/usr
  5. make -j 4
  6. make install

注:遇到../../depcomp: line 512: exec: g++: not found提示时,需要安装gcc-c++软件包,yum –y install gcc-c++

已安装结束后,make可能会遇到错误:

点击(此处)折叠或打开
  1. mpeg4ip.h:126: error: new declaration‘char* strcasestr(const char*, const char*)
  2. /usr/include/string.h:369: error: ambiguates old declaration‘const char* strcasestr(const char*, const char*)
  3. In file included from mp4common.h:29, from atom_avc1.cpp:22:

需要进行如下改动:

点击(此处)折叠或打开
  1. 从123行开始修改此文件mpeg4ip.h,到129行结束。
  2. 修改前:
  3. #ifdef __cplusplus
  4. extern "C" {
  5. #endif
  6.     char *strcasestr(const char *haystack, const char *needle);
  7. #ifdef __cplusplus
  8. }
  9. #endif

  10. 修改后:
  11. #ifdef __cplusplus
  12. extern "C++" {
  13. #endif
  14.     const char *strcasestr(const char *haystack, const char *needle);
  15. #ifdef __cplusplus
  16. }
  17. #endif
amr-nb,语音编码算法,自适应多速率编码
点击(此处)折叠或打开
  1. wget http://www.penguin.cz/~utx/ftp/amr/amrnb-11.0.0.0.tar.bz2
  2. bzip2 -d amrnb-11.0.0.0.tar.bz2
  3. tar xvf amrnb-11.0.0.0.tar
  4. cd amrnb-11.0.0.0/
  5. ./configure
  6. make -j 4
  7. make install
amr-wb,语音编码算法,自适应多速率编码
点击(此处)折叠或打开
  1. wget http://www.penguin.cz/~utx/ftp/amr/amrwb-11.0.0.0.tar.bz2
  2. bunzip2 amrwb-11.0.0.0.tar.bz2
  3. tar xvf amrwb-11.0.0.0.tar
  4. cd amrwb-11.0.0.0/
  5. ./configure
  6. make
  7. make install
FFmpeg

点击(此处)折叠或打开

  1. wget http://ffmpeg.org/releases/ffmpeg-2.8.4.tar.bz2
  2. bunzip2 -d ffmpeg-2.8.4.tar.bz2
  3. tar xvf ffmpeg-2.8.4.tar
  4. cd ffmpeg-2.8.4/
  5. ./configure --prefix=/usr/local/ffmpeg2 --enable-libmp3lame --enable-libvorbis --enable-gpl --enable-version3 --enable-nonfree --enable-pthreads --enable-libfaac --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libx264 --enable-libxvid --enable-postproc --enable-ffserver --enable-ffplay
提示
ERROR: libopencore_amrnb not found,需要安装opencore-amr

点击(此处)折叠或打开

  1. wget ftp://ftp.linux.ro/gentoo/distfiles/opencore-amr-0.1.3.tar.gz
  2. tar zxvf opencore-amr-0.1.3.tar.gz
  3. cd opencore-amr-0.1.3
  4. ./configure --prefix=/usr
  5. make -j 4
  6. make install
再次编译FFmpeg
点击(此处)折叠或打开
  1. ./configure --prefix=/usr/local/ffmpeg2 --enable-libmp3lame --enable-libvorbis --enable-gpl --enable-version3 --enable-nonfree --enable-pthreads --enable-libfaac --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libx264 --enable-libxvid --enable-postproc --enable-ffserver --enable-ffplay
  2. make -j 4
  3. make install
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

还需要测试一下,用了nginx搭建个web服务(nginx需要增加nginx_rtmp_module模块的支持),rtmp的配置和nginx的配置比较简单:
点击(此处)折叠或打开
  1. worker_processes 1;
  2. daemon on;
  3. error_log logs/error.log debug;

  4. events {
  5.     worker_connections 3000;
  6. }

  7. rtmp {
  8.     server {
  9.         listen 1935;
  10.         chunk_size 4000;

  11.         application test {
  12.             live on;
  13.         }
  14.     }
  15. }

  16. http {
  17.     include mime.types;
  18.     default_type application/octet-stream;

  19.     server {
  20.         listen 80;
  21.         server_name vmware-hw-01;

  22.         error_page 500 502 503 504 /50x.html;
  23.         location = /50x.html {
  24.             root html;
  25.         }

  26.         location / {
  27.             root /root/nginx/install/html;
  28.         }
  29.     }
  30. }
准备一个test.html文件,里面嵌入了jwplayer的播放器:
点击(此处)折叠或打开
  1. <html>
  2.     <head>
  3.         <script src="/jwplayer/jwplayer.js"></script>
  4.     </head>

  5.     <body>
  6.         <div id="my-video"></div>
  7.         <script type="text/javascript">
  8.             jwplayer('my-video').setup({
  9.                 flashplayer: "/jwplayer/jwplayer.flash.swf",
  10.                 file:"rtmp://2.1.1.10/test/live_test",
  11.                 width:"50%",
  12.                 aspectratio:"3:2",
  13.                 fallback:"false",
  14.                 primary:"flash"
  15.             });
  16.         </script>
  17.     </body>
  18. </html>
附件jwplayer.tgz在/root/nginx/install/html下直接解压即可。最后还需要用新编译的ffmpeg进行编码转换和推流:
点击(此处)折叠或打开
  1. #!/bin/bash

  2. while true; do
  3.     /usr/local/ffmpeg2/bin/ffmpeg -re -i test.mp4 -f flv "rtmp://2.1.1.10/test/live_test"
  4. done
由于视频文件比较小,进行了循环播放。启动Nginx,ffmpeg脚本开始推流,客户端可以访问test.html观看直播视频了。

阅读(1698) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~