用 ffmpeg + m3u8-segment 将h264的ES流转换成m3u8的过程记录
来源:互联网 发布:进入编程模式失败 编辑:程序博客网 时间:2024/06/06 13:59
from:http://blog.chinaunix.net/uid-8489474-id-4538230.html
苹果公司的 HLS(HTTP Live Streaming) 使用的是m3u8这种格式的传输协议,最近因工作需要对它进行了研究,
完成了一个最简单的demo,即HLS的服务器,可使用VLC来进行播放。
在这记录下过程:
一. CentOS6 Linux上编译ffmpeg
1. 源码下载ffmpeg-2.4.2.tar.bz2,下载地址:http://ffmpeg.org/releases/ffmpeg-2.4.2.tar.bz2
2. 编译时用到了x264,所以同时也下载last_x264.tar.bz2,下载地址:ftp://ftp.videolan.org/pub/x264/snapshots/last_x264.tar.bz2
3. 先编译x264:
./configure --disable-asm --enable-shared
make
make install
最后会安装在:
4. 编译ffmpeg:
./configure --disable-yasm --enable-libx264 --enable-gpl --enable-shared --prefix=/usr/local/ffmpeg
如果不先安装x264,则不能使用 --enable-libx264
make
make install
最后会安装在:
我这默认情况下,ffmpeg可执行文件找不到so的路径,所以新增了ld.so.conf:
5. 将一个es流的h264文件转换成ts流:
/usr/local/ffmpeg/bin/ffmpeg -i /root/720p.es.h264 -c:v libx264 -c:a -o/tmp/720p.ts
二. CentOS6 Linux上编译m3u8-segment:
1. 下载m3u8-segmenter-master.zip,下载地址:https://github.com/johnf/m3u8-segmenter/archive/master.zip
2. 解压编译,但./configure时,始终报告:
checking for FFMPEG... no
configure: error: Package requirements (libavformat libavcodec libavutil) were not met:
No package 'libavformat' found
No package 'libavcodec' found
No package 'libavutil' found
所以,直接用命令行编译了:
gcc -Wall -g -I/usr/local/ffmpeg/include m3u8-segmenter.c -o segmenter -L/usr/local/ffmpeg/lib -lavformat
得到了:segmenter
3. 使用开始创建好的ts文件:720p.ts,生成m3u8:
./segmenter -i /tmp/720p.ts -d 10 -p onedemo -m /tmp/720p.m3u8 -u http://192.168.8.239/videox/
具体参数直接看帮助即可,它会将720p.ts切成多份ts文件。
然后,将生成好的m3u8文件和这多份ts,布署在WEB服务器就可以了。
但不论是ngnix,还是在IIS,仅仅将上面这些文件拷到磁盘目录,是不行的,还要做MIME的映射:
即将 .m3u8和 .ts 指定好类型
application/x-mpegURL m3u8;
video/MP2T ts;
最后就可以用VLC直接网络播放了。
顺带在这粘一下从原始的es流中截取一张jpg图片的命令:
./ffmpeg -i /root/720p.es.h264 -f image2 -ss 1 -vframes 1 -s 352*288 /tmp/one1.jpg
-ss参数后跟的时间有两种写法,hh:mm:ss 或直接写秒数 :
-ss 00:01:00 -vframes 1 or -ss 60 -vframes 1
这样输出的图片是相同的。
- 用 ffmpeg + m3u8-segment 将h264的ES流转换成m3u8的过程记录
- EasyHLS实现将IPCamera摄像机的RTSP流转成HLS(ts+m3u8)直播输出
- m3u8视频格式的支持
- 关于使用ffmpeg把mp4转化m3u8文件的命令
- 用VideoView实现播放本地的m3u8
- 最简单的m3u8 播放
- m3u8的浏览器播放器
- Android,播放m3u8视频和下载m3u8的视频
- ffmpeg mkv to m3u8 [windows][cmd信息记录]
- 将接收的二进制流转换成图片保存
- MV88DE3010之ffmpeg与m3u8
- nginx + ffmpeg 搭建m3u8服务器
- centos ffmpeg m3u8切片相关
- centos ffmpeg m3u8切片相关
- CentOS6.5 ffmpeg m3u8 切片
- ffmpeg+x265+m3u8-segmenter编译
- 将流转换成字符串
- 将流转换成图片
- 对象存储系统Swift技术详解:综述与概念
- Linux socket编程(二) 服务器与客户端的通信
- 字符串匹配之kmp算法
- Linux socket编程(一) 对套接字操作的封装
- 4个字节的16进制数转浮点型数据
- 用 ffmpeg + m3u8-segment 将h264的ES流转换成m3u8的过程记录
- 共享思源黑体ttf版,还有Mac下7z压缩
- Linux socket编程(四) 简单聊天室之epoll版
- An internal error occurred during: "Building workspace". java.lang.StackOverflowError
- poj1703解题报告
- Linux socket编程(五) 文件传输
- java作业整理
- c语言里NULL的理解
- hadoop的文件操作