在直播和点播中,通常后台并不会直接给一个http://xxx.xxx.xxx.xxx/xxx.mp4这样的url给客户端,而是通过m3u8索引列表,给客户端。今天来通过ffmpeg进行切片生成m3u8索引文件。

首先将视频文件转为视频编码h.264,音频编码aac格式的mp4文件
1、使用ffprobe查看文件编码方式

2、如果不是mp4的,可以用如下命令进行转

ffmpeg -i input.mkv -acodec copy -vcodec copy out.mp4 

3、将mp4转为完整的ts

ffmpeg -i out.mp4 -c copy -bsf h264_mp4toannexb output.ts  

为什么要用-bsf h264_mp4toannexb,主要是因为使用了mp4中的h264编码,而h264有两种封装:
一种是annexb模式,传统模式,有startcode,SPS和PPS是在ES中;另一种是mp4模式,一般mp4、mkv、avi会没有startcode,SPS和PPS以及其它信息被封装在container中,每一个frame前面是这个frame的长度,很多解码器只支持annexb这种模式,因此需要将mp4做转换;在ffmpeg中用h264_mp4toannexb_filter可以做转换;所以需要使用-bsf h264_mp4toannexb来进行转换;

4、将ts切片,并生成m3u8文件

ffmpeg -i output.ts -c copy -map 0 -f segment -segment_list playlist.m3u8 -segment_time 5 output%03d.ts  

其中segment 就是切片,-segment_time表示隔几秒进行切一个文件,上面命令是隔5s,你也可以调整成更大的参数。

切片完成后如下所示:

完整ts文件播放如下:

使用生成的m3u8索引播放如下:

FFmpeg总结(九)用ffmpeg进行切片生成m3u8索引文件相关推荐

  1. 服务器php将视频转为m3u8,php应用ffmpeg对mp4文件转换并生成m3u8视频流文件

    生成m3u8视频流,如果没有做视频流文件,播放视频的时候,一个大视频直接加载,会增加服务器巨大压力,并且视频太大加载慢,显示视频也慢,都不利于观看.那么视频流的好处是,将大视频分成一小段一小段的ts分 ...

  2. avi 生成 m3u8/ts 文件

    使用ffmpeg 下载:FFmpeg 点我进入官网 下载后解压文件,并把bin 目录 添加到环境变量中,步骤省略 测试环境变量  cmd 任意目录 ffmpeg.exe -version 生成m3u8 ...

  3. ffmpeg 视频转ts切片 生成m3u8视频播放列表

    近期做视频点播,要求将视频文件切片成ts文件.经搜索得到以下两个命令,可完成这个任务. 一  首先将视频文件转为视频编码h264,音频编码aac格式的mp4文件       1.可以预先使用ffpro ...

  4. mp4视频分片生成m3u8流文件并加密

    目录 场景描述 加密准备 视频分片 Java代码实现 场景描述 相信大家都有这样的经历,一个视频太大,放到服务器上面,播放的时候,受服务器宽带和自己网络的影响访问会很慢. 经常看视频的小伙伴肯定看到过 ...

  5. 直播协议HLS技术要点分析:分段生成与m2u8文件

    1.概述: HTTP Live Streaming(HLS)是苹果公司(Apple Inc.)实现的基于HTTP的流媒体传输协议,可实现流媒体的直播和点播,主要应用在iOS系统,为iOS设备(如iPh ...

  6. 批处理ffmpeg将avi视频格式转换成mp4文件同时生成m3u8文件

    需求说明 本人在制作全栈开发的视频录制过程中,使用的是CameraStudio,录制生成在vv目录下的若干个avi视频,其中特别注意的是,生成的这些文件以及目录路径只能是字母或数字.需要将其转化成mp ...

  7. linux编译ffmpeg成so,「ffmpeg」一 mac 环境下编译ffmpeg,生成so库文件

    1.下载ffmpeg源码,官网,我这里直接采用git 方式下载: 下载ffmpeg.png 终端输入git命令: 静静等待~ 最后下载的版本为3.4.6 . image.png 这里注意一下,刚开始我 ...

  8. php 图片生成视频,PHP基于ffmpeg实现转换视频,截图及生成缩略图的方法

    本文实例讲述了PHP基于ffmpeg实现转换视频,截图及生成缩略图的方法.分享给大家供大家参考,具体如下: 这里把ffmpeg 和  生成缩略图整合了一下: include("ImageRe ...

  9. C#调用FFMPEG实现桌面录制(视频+音频+生成本地文件)【笔记】

    不得不说FFMPEG真是个神奇的玩意,所接触的部分不过万一.网上有个很火的例子是c++方面的,当然这个功能还是用c++来实现比较妥当. 然而我不会c++ 因为我的功能需求比较简单,只要实现基本的录制就 ...

最新文章

  1. CMakeLists.txt学习记录
  2. Insertion Loss Return Loss
  3. asmack xmpp 获取离线消息
  4. ps软件怎么测试性能,怎么样提高Photoshop性能,让PS软件快速启动
  5. 2017年第八届蓝桥杯国赛B组试题A-36进制-进制转换
  6. 工作392-选择Hbuilder x导入项目
  7. [转] Silverlight Navigation(多页面切换、传值)
  8. python3.6---之f'{}'
  9. SQL系统教程一(表之间的连接关系)
  10. iOS:NO suitable application records were found.Verify your bundle identifier 'com***'is correct
  11. 他面前有一个人,有一把刀
  12. 6.郝斌C语言笔记——流程控制
  13. koreader下载_kindle koreader
  14. getbook netty实战_《Netty实战》Netty In Action中文版 第1章 Netty——异步和事件驱动...
  15. 刷新HorizontalScrollView
  16. Pandas学习——分组
  17. 基于数字证书的windows安全登录
  18. 扪心自问!15个IT技术人员必须思考的问题
  19. MySQL高可用架构MHA
  20. 交换机芯片初创企业再获7700万美元融资

热门文章

  1. 用java代码写的段子_网上调侃程序员的段子
  2. 华工计算机网络随堂练习答案,华工计算机网络随堂练习答案
  3. 计算机网络文件丢失怎么找回,电脑上的数据误删除了怎么恢复?教你几招!
  4. python排序题总结
  5. linux各种配置笔记
  6. VMware 装Windows Server 系统
  7. 《 中国高校鄙视链大全 》
  8. 虚拟现实游戏的十大误区
  9. 耳机不分主从是什么意思_“小雪不分股,大雪不出土”指什么意思?立冬过后还能种小麦吗?...
  10. 快速了解Swagger及其快速入门