[hls]用ffmpeg做HLS协议切片方法教程
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
具体参考:http://www.cnblogs.com/aHuner/p/3247068.html
2.rtmp实时推流
推流工具:Adobe Flash Media Live Encoder
必须同时推音频和视频,否则ffmpeg切片会报错,e2eSoft VCam做模拟视频输入,手机耳机插入PC麦克风插口做音频输入
3.安装x264
- wget ftp://ftp.videolan.org/pub/x264/snapshots/x264-snapshot-20120718-2245-stable.tar.bz2
- 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
http://www.audiocoding.com/faac.html
./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播放地址
http://192.168.42.128/player.html
http://192.168.42.128/stat
8.HLS实时播放地址
http://192.168.42.128/playlist.m3u8
参考
Encoding HLS with ffmpeg:
http://sinclairmediatech.com/encoding-hls-with-ffmpeg/
热门文章推荐
- [nginx]使用nginx搭建rtmp流媒体服务器环境
- [nginx]HTTP服务器Nginx.conf配置文件介绍与调试
- [Nginx]windows下设置Nginx随机子开机自动启动运行的方法
- [nginx]NGINX的rtmp流媒体插件
- [nginx]Nginx下限速限制下载速度实例
- [nginx]nginx-rtmp-module使用实现rtmp
- [nginx]做防盗链的教程:Apache和Nginx防盗链的几种配置方法
- [nginx]Windows环境的Nginx启动与重启操作