要想利用HLS来实现视频的在线播放,就得需要将一个完整的视频文件切割成多个ts视频流,然后利用m3u8的索引文件来播放。

在Mac下,苹果提供了streamingTools的工具,里面有mediafilesegmenter和 mediastreamsegmenter来分别实现文件和直播流的切割,一行命令直接就可以将输入的原始视频文件导出成几个ts和索引文件,直接就可以 用了。但是一般服务器都是基于linux的,要想在linux下实现同样的切割,着实费了一番功夫。

网上也找了好多相关的资料,基本是利用开源的ffmpeg和segmenter工具来实现,但是这搭建这个环境的过程是曲折的,编译这些工具的时候 会出现好多错误,难以解决,好多文章的步骤介绍的也很复杂,又要安装各种包,又要修改源代码,经过几天的各种反复尝试,才知道在不是直接将源文件切割,而 是先要转换一下,再切割,最终终于痛苦的摸索到了一个成功的路子,特此记录下来以防忘记。

1、首先获得ffmpeg

  apt-get install ffmpeg

2、安装ffmpeg支持库,为m3u8-segmenter准备

  apt-get install libavformat-dev

3、获得m3u8-segmenter

  https://github.com/johnf/m3u8-segmenter

4、编译并安装m3u8-segmenter

  aclocal

  automake -ac

  ./configure

  make

  sudo make install  

4、编译其中的文件m3u8-segmenter

  gcc -Wall -g  m3u8-segmenter.c -o segmenter -lavformat

5、利用ffmpeg将已有的视频文件转换成ts文件

  ffmpeg -y -i <in file> -vcodec copy -acodec copy -vbsf h264_mp4toannexb <output file>

其中in file为待转换的视频文件,比如input.mov,output file为转换后的文件,要命名为output.ts

6、利用segmenter将转换好的ts文件切割成多个ts片,并生成.m3u8的索引文件

  ./segmenter -i out.ts -n 10 -p segmenter_test -m test.m3u8 -u

i表示输入文件,n表示切割10秒,p表示切割文件的前缀。m表示生成的m3u8文件名,u表示这些切割后的文件处于web server的哪个目录下

PS:实践过程中发现一个问题,就是切片之后,最后一段ts不管是不是10s,同样会按10s去切,导致切好后的视频最后一段会加上去几秒的黑段来补足10s,原因是segmenter.c中的程序写的还有缺陷,修正方法如下:

https://github.com/johnf/m3u8-segmenter/pull/10/files

参考:

http://blog.chinaunix.net/uid-25530360-id-3483535.html

http://shappy1978.iteye.com/blog/1071815

http://www.ioncannon.net/programming/452/iphone-http-streaming-with-ffmpeg-and-an-open-source-segmenter/

http://hi.baidu.com/lphack/item/83865611c5f82c8988a956df

http://blog.cnrainbird.com/index.php/2012/03/25/ping_guo_http_shi_pin_dian_bo_ji_shu/

linux下搭建生成HLS所需的.ts和.m3u8文件的更多相关文章

  1. Linux下搭建Oracle11g RAC(3)----创建用户及配置相关文件

    配置11gR2 RAC需要安装Oracle Grid Infrastructure软件.Oracle数据库软件,其中Grid软件等同于Oracle 10g的Clusterware集群件.Oracle建 ...

  2. Linux下搭建iSCSI共享存储

    转至:https://www.linuxidc.com/Linux/2016-09/135655.htm Linux下搭建iSCSI共享存储 拓扑: 实验步骤: ------------------- ...

  3. linux下搭建ftp文件服务器

    linux下搭建ftp文件服务器 一.搭建步骤(以在centos7中搭建为例) 1.首先检查一下系统中是否已经安装了vsftpd软件 # 查看是否安装vsftpd rpm -q vsftpd rpm ...

  4. Linux下搭建个人网站

    前不久在阿里买了一个服务器,然后开始第一次尝试搭建自己的个人网站.前端采用了bootstrap框架,后端采用的是PHP,数据库使用的是Mysql.新手第一次在linux下搭建遇见很多问题,在这里分享一 ...

  5. Linux下搭建Lotus Domino集群

    Linux下搭建Lotus Domino 集群 本文内容是Linux平台下Lotus Domino服务器部署案例(http://chenguang.blog.51cto.com/350944/1334 ...

  6. Linux下搭建tomcat集群全记录(转)

    本文将讲述如何在Linux下搭建tomcat集群,以及搭建过程中可能的遇到的问题和解决方法.为简单起见,本文演示搭建的集群只有两个tomact节点外加一个apache组成,三者将安装在同一机器上:ap ...

  7. Linux下搭建tomcat集群全记录

    (转) Linux下搭建tomcat集群全记录 2011-10-12 10:23 6133人阅读 评论(1) 收藏 举报 tomcatlinuxapacheinterceptorsession集群 1 ...

  8. 【转】在Linux下搭建Git服务器

    在 Linux 下搭建 Git 服务器 环境: 服务器 CentOS6.6 + git(version 1.7.1)客户端 Windows10 + git(version 2.8.4.windows. ...

  9. Linux下搭建iSCSI共享存储的方法 Linux-IO Target 方式CentOS7-1810下实现

    iSCSI(internet SCSI)技术由IBM公司研究开发,是一个供硬件设备使用的.可以在IP协议的上层运行的SCSI指令集,这种指令集合可以实现在IP网络上运行SCSI协议,使其能够在诸如高速 ...

随机推荐

  1. C# 线程 在 sleep,suspend 之后 Abort 的方法

    1) 线程在sleep时的Abort     方法:对线程函数用 catch ThreadAbortException ,并return.   示例: [csharp] view plaincopy ...

  2. 解决最近vs2017总是在加载工程的时候卡住不不动

    就像这样 解决方法 删除工程目录下的.vs目录

  3. CS229 7.2 应用机器学习方法的技巧,准确率,召回率与 F值

    建立模型 当使用机器学习的方法来解决问题时,比如垃圾邮件分类等,一般的步骤是这样的: 1)从一个简单的算法入手这样可以很快的实现这个算法,并且可以在交叉验证集上进行测试: 2)画学习曲线以决定是否更多 ...

  4. HTML5和CSS3的一些学习记录

    1.引述块级文本的标签(blockquote): <blockquote cite="http://www.marktwainbooks.edu/"> <p> ...

  5. django中路由系统和视图的对应关系(值的传递)-->主要内容(位置参数、关键字参数、额外参数、include分组[urls的分发]、命名分组、反向解析、APPEND_SLASH)

    路由系统也就是 urls.py文件,视图就是 views.py文件 路由系统里面要注意的事项 urlpatterns中的元素按照书写顺序从上往下逐一匹配正则表达式,一旦匹配成功则不再继续. 若要从UR ...

  6. CMD命令行合并多个txt文件到一个txt文件

    运行->输入CMD回车 输入: Copy G:\MyFolder\*.txt  G:\NewFolder\a.txt 回车即可 意思是将G:\MyFolder\下的所有txt文本内容复制到G:\ ...

  7. Elasticsearch5.5.2安装和启动遇到哪些问题

    最近学习Elasticsearch,顺便记录下操作步骤,供日后参考 安装环境 CentOS release 6.6 1.因Elasticsearch是基于java写的,所以它的运行环境中需要java的 ...

  8. py库: Selenium (自动化测试)

    http://blog.csdn.net/liujingqiu/article/details/50458553 http://www.cnblogs.com/zhaof/p/6953241.html ...

  9. hping安装过程

    转载: http://www.safecdn.cn/website-announcement/2018/12/hping-install/97.html ‎ Hping的主要功能有: 测试防火墙实用的 ...

  10. Spring Cloud (6)config 客户端配置 与GitHub通信

    1. 配置yml 1.1 1.2 1.3 2. 提交yml 到git 3.新建项目 pom 4.新建bootstrap.yml (优先权比application.yml高) 5.bootstrap.y ...