要想利用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

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 -vcodec copy -acodec copy -vbsf h264_mp4toannexb

其中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中的程序写的还有缺陷,修正方法如下:

参考:

linux下编译ts工程,linux下搭建生成HLS所需的.ts和.m3u8文件相关推荐

  1. linux将ts文件合并,生成ts文件 Linux下生成HLS所需的.ts和.m3u8文件

    要想利用HLS来实现视频的播放,就得需要将一个完整的视频文件切割成多个ts视频流,然后利用m3u8的索引文件来播放. 安装ffmpeg $ apt-get install ffmpeg $ apt-g ...

  2. linux 保存编译log,(转)Linux下编译安装log4cxx

    一个项目的服务器端在Linux平台下,用到了开源日志库log4cxx,这个库是apache项目的一个子库.功能很不错.下面记录下它的编译和安装过程. 第一步安装apr-1.3.8,顺序不能错,它必须首 ...

  3. linux系统下编译fpga工程,【工程师分享】整合Xilinx PetaLinux工程编译和Open Source U- Boot/Linux编译...

    5.1. 保留Linux和UBoot源代码 缺省情况下,PetaLinux在编译完成后会删除源代码,以节省硬盘空间.在project-spec/meta-user/conf/petalinuxbsp. ...

  4. linux emule 编译 wx-config --libs,linux下编译wxwidgets所写程序所遇到的问题

    记录linux下编译wxwidgets所遇到的问题 1./home/hrd/baohualib/wxWidgets-3.0.2/include/wx/platform.h:184:22: 致命错误: ...

  5. linux下编译安装ntfs,linux下编译安装ntfs

    "mount: you must specify the filesystem type"  错误提示是这个 mount /dev/hda1 /media/windows/   在 ...

  6. linux mpeg4ip 编译,[操作系统]CentOS6.2下编译mpeg4ip

    [操作系统]CentOS6.2下编译mpeg4ip 0 2012-06-29 01:00:09 一.环境 1.操作系统版本 CentOS 6.2 64位 uname -a的输出: Linux loca ...

  7. linux下编译zbar64位,linux 编译zbar

    从github上git的源码的目录下没有configure ,晕 wget http://downloads.sourceforge.net/project/zbar/zbar/0.10/zbar-0 ...

  8. linux 内核编译不能打字,linux系统升级后,手动编译的kernel无法启动问题

    linux系统升级后,手动编译的kernel无法启动问题 linux系统升级后,手动编译的kernel无法启动问题 做开发相关,需要编译3.18的kernel,x86_64的,但是我的deepin升级 ...

  9. linux 模块化编译,手把手教Linux驱动1-模块化编程 module

    大家好,从本篇起,一口君将手把手教大家如何来学习Linux驱动,预计会有20篇关于驱动初级部分知识点.本专题会一直更新,有任何疑问,可以留言或者加我微信. Linux的开发者,遍布世界各地,他们相互之 ...

最新文章

  1. Linux下使用nmap扫描局域网存活的IP
  2. 凯立德手机导航APP全新升级 小长假结伴出行说走就走
  3. 核心机房电源中断应急预案
  4. php radio样式美化,微信小程序修改radio组件默认样式
  5. WMPLib.WindowsMediaPlayer 的用法
  6. 数据如何成为企业未来的商业资产?
  7. 大学计算机在线阅读,大学计算机
  8. vector中resize()和reserve()区别
  9. 在linux下安装iNode校园客户端
  10. es 在数据量很大时(数十亿级别)如何提高查询效率啊
  11. 在linux上配置telnet服务器,Ubuntu 10.10 下配置Telnet服务器
  12. 做移动视频直播应用的思路
  13. 2021-最新Web前端经典面试试题及答案-史上最全前端面试题(含答案)---JavaScript篇
  14. 计算机弹出虚拟U盘,我们通过工具所自带的电脑模拟器对我们u盘制作启动盘进行模拟启动测试...
  15. 四川省着力打造三位一体服务平台,精准服务保障农民工
  16. 刀片服务器如何选择操作系统,刀片服务器如何选择操作系统?
  17. 成语归类大全(留着,孩子有用的)
  18. P1567 吃糖果游戏
  19. 二进制文件漏洞挖掘 IDA插件VulFi安装使用
  20. 几种常见的JS递归算法

热门文章

  1. Linux中awk后面的RS, ORS, FS, OFS 用法
  2. html购物页面产品展示,html5 3D交互式房间购物商品展示特效
  3. 高通平台开发系列讲解(AI篇)高通神经网络处理引擎 SNPE SDK架构
  4. 需要程序猿了解的 89 个操作系统核心知识
  5. Oracle 语句大全,确实不错,赶紧转走!
  6. Intel 英特尔CPU带字母
  7. 将不同数据来源的ggplot图绘制到同一张图中,并添加统一的图例
  8. iOS-事件响应链、单例模式、工厂模式、观察者模式
  9. android手机打电话时没有网络吗,打电话手机有没有网络 打电话手机有无网络 - 云骑士一键重装系统...
  10. docker入门命令