1.rtmp服务器
nginx+pcre+zlib+openssl+nginx-rtmp-module
./configure \
--prefix=/usr/local/nginx \
--sbin-path=/usr/local/nginx/nginx \
--conf-path=/usr/local/nginx/nginx.conf \
--pid-path=/usr/local/nginx/nginx.pid \
--error-log-path=/usr/local/nginx/logs/error.log \
--with-pcre=/project/pcre-8.33 \
--with-zlib=/project/zlib-1.2.8 \
--with-http_dav_module \
--with-http_flv_module \
--with-http_stub_status_module \
--without-http_scgi_module \
--without-http_uwsgi_module \
--without-http_gzip_module \
--without-http_ssi_module \
--without-http_proxy_module \
--without-http_memcached_module \
--without-http_empty_gif_module \
--without-mail_pop3_module \
--without-mail_imap_module \
--without-mail_smtp_module \
--with-http_ssl_module \
--with-openssl=/project/openssl-1.0.1e \
--add-module=/project/nginx-rtmp-module-master
make && make install
修改nginx-rtmp-module-master/test/rtmp-publisher目录下player.html中rtmp推流接收地址和stream
增加nginx-rtmp-module-master/test/rtmp-publisher目录下播放器相关文件权限x
2.rtmp实时推流
推流工具:Adobe Flash Media Live Encoder
必须同时推音频和视频,否则ffmpeg切片会报错,e2eSoft VCam做模拟视频输入,手机耳机插入PC麦克风插口做音频输入
3.安装x264
tar jxvf x264-snapshot-20120718-2245-stable.tar.bz2
./configure --prefix=/usr/local/x264 --disable-asm --enable-shared
make && make install
vi /etc/ld.so.conf
加入:/usr/local/x264/lib
执行:ldconfig
4.安装aac
./configure --prefix=/usr/local/faac--enable-shared
make&&make install
遇到错误:
mpeg4ip.h:126: error: new declaration ‘char* strcasestr(const char*, const char*)’
解决方法:
vi common/mp4v2/mpeg4ip.h
修改第123行:
#ifdef __cplusplus
extern "C++" {
#endif
const char *strcasestr(const char *haystack, const char *needle);
#ifdef __cplusplus
}
#endif
vi /etc/ld.so.conf
加入:/usr/local/faac/lib
执行:ldconfig
5.ffmpeg切片方案
./configure --disable-yasm --enable-libx264--enable-libfaac --enable-gpl --enable-shared --prefix=/usr/local/ffmpeg --extra-cflags=-I/usr/local/x264/include --extra-ldflags=-L/usr/local/x264/lib
make && make install
如果linux下出现 ffmpeg: error while loading shared libraries: libavdevice.so.55: cannot open shared object file: No such file or directory
vi /etc/ld.so.conf
加入:/usr/local/ffmpeg/lib
执行:ldconfig
切本地文件命令:ffmpeg -i test.ts -c copy -map 0 -f segment -segment_list playlist.m3u8 -segment_time 10 output%03d.ts
切网络地址命令:ffmpeg -i rtmp://192.168.42.128/myapp/test1 -c copy -map 0 -f segment -segment_list playlist.m3u8 -segment_time 10 output%03d.ts
设置视频编码库libx264和音频编码库libfaac:
./ffmpeg -y -i rtmp://192.168.42.128/myapp/test1 -pix_fmt yuv420p -vcodec libx264 -acodec libfaac -r 25 -profile:v baseline -b:v 150k -maxrate 200k -force_key_frames 50 -s 320x240 -map 0 -flags -global_header -f segment -segment_list playlist.m3u8 -segment_time 10 -segment_format mpeg_ts -segment_list_type m3u8 segment%05d.ts
6. nginx-rtmp-module切片
application hls {
live on;
hls on;
hls_path /project/nginx-rtmp-module-master/test/rtmp-publisher;
}
7.nginx实时rtmp播放地址
8.HLS实时播放地址
参考
Encoding HLS with ffmpeg: