linux下编译ts工程,linux下搭建生成HLS所需的.ts和.m3u8文件
要想利用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文件相关推荐
- linux将ts文件合并,生成ts文件 Linux下生成HLS所需的.ts和.m3u8文件
要想利用HLS来实现视频的播放,就得需要将一个完整的视频文件切割成多个ts视频流,然后利用m3u8的索引文件来播放. 安装ffmpeg $ apt-get install ffmpeg $ apt-g ...
- linux 保存编译log,(转)Linux下编译安装log4cxx
一个项目的服务器端在Linux平台下,用到了开源日志库log4cxx,这个库是apache项目的一个子库.功能很不错.下面记录下它的编译和安装过程. 第一步安装apr-1.3.8,顺序不能错,它必须首 ...
- linux系统下编译fpga工程,【工程师分享】整合Xilinx PetaLinux工程编译和Open Source U- Boot/Linux编译...
5.1. 保留Linux和UBoot源代码 缺省情况下,PetaLinux在编译完成后会删除源代码,以节省硬盘空间.在project-spec/meta-user/conf/petalinuxbsp. ...
- linux emule 编译 wx-config --libs,linux下编译wxwidgets所写程序所遇到的问题
记录linux下编译wxwidgets所遇到的问题 1./home/hrd/baohualib/wxWidgets-3.0.2/include/wx/platform.h:184:22: 致命错误: ...
- linux下编译安装ntfs,linux下编译安装ntfs
"mount: you must specify the filesystem type" 错误提示是这个 mount /dev/hda1 /media/windows/ 在 ...
- linux mpeg4ip 编译,[操作系统]CentOS6.2下编译mpeg4ip
[操作系统]CentOS6.2下编译mpeg4ip 0 2012-06-29 01:00:09 一.环境 1.操作系统版本 CentOS 6.2 64位 uname -a的输出: Linux loca ...
- linux下编译zbar64位,linux 编译zbar
从github上git的源码的目录下没有configure ,晕 wget http://downloads.sourceforge.net/project/zbar/zbar/0.10/zbar-0 ...
- linux 内核编译不能打字,linux系统升级后,手动编译的kernel无法启动问题
linux系统升级后,手动编译的kernel无法启动问题 linux系统升级后,手动编译的kernel无法启动问题 做开发相关,需要编译3.18的kernel,x86_64的,但是我的deepin升级 ...
- linux 模块化编译,手把手教Linux驱动1-模块化编程 module
大家好,从本篇起,一口君将手把手教大家如何来学习Linux驱动,预计会有20篇关于驱动初级部分知识点.本专题会一直更新,有任何疑问,可以留言或者加我微信. Linux的开发者,遍布世界各地,他们相互之 ...
最新文章
- Linux下使用nmap扫描局域网存活的IP
- 凯立德手机导航APP全新升级 小长假结伴出行说走就走
- 核心机房电源中断应急预案
- php radio样式美化,微信小程序修改radio组件默认样式
- WMPLib.WindowsMediaPlayer 的用法
- 数据如何成为企业未来的商业资产?
- 大学计算机在线阅读,大学计算机
- vector中resize()和reserve()区别
- 在linux下安装iNode校园客户端
- es 在数据量很大时(数十亿级别)如何提高查询效率啊
- 在linux上配置telnet服务器,Ubuntu 10.10 下配置Telnet服务器
- 做移动视频直播应用的思路
- 2021-最新Web前端经典面试试题及答案-史上最全前端面试题(含答案)---JavaScript篇
- 计算机弹出虚拟U盘,我们通过工具所自带的电脑模拟器对我们u盘制作启动盘进行模拟启动测试...
- 四川省着力打造三位一体服务平台,精准服务保障农民工
- 刀片服务器如何选择操作系统,刀片服务器如何选择操作系统?
- 成语归类大全(留着,孩子有用的)
- P1567 吃糖果游戏
- 二进制文件漏洞挖掘 IDA插件VulFi安装使用
- 几种常见的JS递归算法
热门文章
- Linux中awk后面的RS, ORS, FS, OFS 用法
- html购物页面产品展示,html5 3D交互式房间购物商品展示特效
- 高通平台开发系列讲解(AI篇)高通神经网络处理引擎 SNPE SDK架构
- 需要程序猿了解的 89 个操作系统核心知识
- Oracle 语句大全,确实不错,赶紧转走!
- Intel 英特尔CPU带字母
- 将不同数据来源的ggplot图绘制到同一张图中,并添加统一的图例
- iOS-事件响应链、单例模式、工厂模式、观察者模式
- android手机打电话时没有网络吗,打电话手机有没有网络 打电话手机有无网络 - 云骑士一键重装系统...
- docker入门命令