HLS 与 FFMPEG

转自:http://my.oschina.net/gaga/blog/492348

记得有一次用手机上网看 MP4 ,才知道手机是看不到一般格式的视频的,参考了一些有关流媒体的文章后,渐渐地就缠上了 Ffmpeg ...

今年特意下载个短视频来测试新版 ffmpeg ,制作流媒体 HLS 虽然成功,但 ffmpeg 却发出错误讯息,说我的流复用器选项过时,个别选项被忽略,无奈,只得到 ffmpeg 网页 看看,原来 ffmpeg 已经不需要【TS流分割器】也能独自将媒体分段(一个简单范例):ffmpeg -i in.nut out.m3u8

这范例没有设定分段长度: hls_time seconds 默认值是2秒。没有设定播放列表的最大列数: hls_list_size size 默认为5列......其它新旧选项的用法有待测试。

ffmpeg 版本: N-69612-g2fd9ce9,下面是其中一个测试例子:


1

ffmpeg -i in.nut -codec copy -bsf:v h264_mp4toannexb -ss 00:01:00 -to 00:04:10 -hls_time 9 -hls_list_size 0 -hls_segment_filename ‘lj%03d.ts‘ out.m3u8

-bsf:v h264_mp4toannexb: 视频H.264流过滤, 犹其那类非标准H.264码流格式的视频更需要。

-ss 00:01:00 -to 00:04:10: 截取一分钟长度后的视频并开始分段到四分十秒止。

-hls_time 9: 设定段长度9秒。

-hls_list_size 0: 此项设置为0将包含所有的段。

-hls_segment_filename ‘lj%03d.ts‘: 设置段文件名以lj开始。

out.m3u8 播放列表(自动生成):

如果将 -hls_segment_filename ‘lj%03d.ts‘ 换作 -hls_flags single_file 即所有段文件将存储在一个单一的MPEG-TS文件(out.ts)中。


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

#EXTM3U

#EXT-X-VERSION:3

#EXT-X-TARGETDURATION:16

#EXT-X-MEDIA-SEQUENCE:0

#EXTINF:14.199633,

lj000.ts

#EXTINF:5.040000,

lj001.ts

#EXTINF:8.480000,

lj002.ts

#EXTINF:9.440000,

lj003.ts

#EXTINF:10.000000,

lj004.ts

#EXTINF:10.000000,

lj005.ts

#EXTINF:8.120000,

lj006.ts

#EXTINF:10.000000,

lj007.ts

#EXTINF:6.920000,

lj008.ts

#EXTINF:14.320000,

lj009.ts

#EXTINF:4.760000,

lj010.ts

#EXTINF:9.960000,

lj011.ts

#EXTINF:10.040000,

lj012.ts

#EXTINF:6.640000,

lj013.ts

#EXTINF:7.440000,

lj014.ts

#EXTINF:9.960000,

lj015.ts

#EXTINF:8.000000,

lj016.ts

#EXTINF:15.480000,

lj017.ts

#EXTINF:6.920000,

lj018.ts

#EXTINF:6.040000,

lj019.ts

#EXTINF:8.200000,

lj020.ts

#EXT-X-ENDLIST

自适流播放列表


1

2

3

4

5

6

7

#EXTM3U

#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=1677946,RESOLUTION=1280x720

lj1280x720.m3u8

#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=707099,RESOLUTION=640x360

lj640x360.m3u8

#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=357103,RESOLUTION=320x180

lj320x180.m3u8

时间: 2024-10-08 22:17:16

HLS 与 FFMPEG的相关文章

转: 基于nginx的hls直播系统

转自:http://blog.csdn.net/cjsafty/article/details/9108587 看点: 1. 详细解解答了 nginx rtmp配置过程. 前写了一篇基于nginx的hls点播系统,本质上是把一个媒体文件做成m3u8索引,对应的文件都是提前做好放在服务器上的. nginx充当的是个Http 服务器的角色,之所以说是基于nginx的,是因为它可以设置限速. 本文主要是描述一个直播系统,核心在于m3u8和里面对于的ts链接都是实时的,可以刷新.类似于cntv里面的直播

Linux---nginx+ffmpeg搭建流媒体服务器

原帖地址:https://blog.csdn.net/loyachen/article/details/50907828 这里实现了简单nginx+ffmpeg 推本地mp4视频文件的功能,以后将会继续更新 环境 系统环境:CentOS release 6.7 (Final) 需求 利用nginx和ffmpeg搭建流媒体服务器 步骤 安装ffmpeg 安装过程可以参考:centos编译安装ffmpeg:http://blog.csdn.net/loyachen/article/details/5

在Windows下搭建基于nginx的视频直播和点播系统

一.软件准备 由于nginx原生是为linux服务的,因此官方并没有编译好的windows版本可以下载,要在windows上使用nginx,要么下载源码进行编译,要么使用其他人已经编译好的文件. 而要让nginx支持视频直播和点播,还需要第三方的nginx模块:nginx-rtmp-module 所幸,已经有大神做好了nginx的编译,而且集成了很多nginx模块,其中就已经包括了nginx-rtmp-module. 下载地址:http://nginx-win.ecsds.eu/,详细说明可参见

Rtsp to Rtmp流媒体转发

RTMP是一种设计用来进行实时数据通信的网络协议,主要用来在Flash/AIR平台和支持RTMP协议的流媒体/交互服务器之间进行音视频和数据通信.支持该协议的软件包括Adobe Media Server.Ultrant Media Server.red5.nginx. HTTP Live Streaming(HLS)是苹果公司(Apple Inc.)实现的基于HTTP的流媒体传输协议,可实现流媒体的直播和点播,相对于常见的流媒体直播协议,例如RTMP协议.RTSP协议.MMS协议 等,HLS直播

nginx-rtmp-module

Nginx本身是一个非常出色的HTTP服务器,FFMPEG是非常好的音视频解决方案.这两个东西通过一个nginx的模块nginx-rtmp-module,组合在一起即可以搭建一个功能相对比较完善的流媒体服务器. 这个流媒体服务器可以支持RTMP和HLS(Live Http Stream) 从安装开始 Nginx的安装参照我之前的这个: http://blog.csdn.net/redstarofsleep/article/details/45092127 不同的是在configure的时候需要增

nginx-rtmp流媒体服务器搭建【转】

nginx-rtmp https://github.com/pengqiuyuan/nginx-rtmp nginx-rtmp 流媒体服务器的搭建(采集桌面,手机直播) 在线Demo,直播自己的pc机桌面音视频(现在就一单线路,1M带宽,2个人向同一个目录下推送m3u8.ts文件肯定不行,之后再改,资源有限) 1.下载ffmpeg及脚本 http://download.csdn.net/detail/pqy15005917185/8160799 2.安装screen-capture-record

srs2.0 安装启动

一.SRS源码地址 https://github.com/winlinvip/simple-rtmp-server 目前有1.0-release.2.0.3.0等版本 2.0官方文档地址:https://github.com/winlinvip/simple-rtmp-server/wiki/v2_CN_Home 二.SRS源码下载 如果是新安装的系统,很可能没有安装git,那么就直接安装一个git吧. CentOS:yum -y install git Ubuntu:apt-get insta

使用Nginx+FFMPEG搭建HLS直播转码服务器

目的:使Nginx支持Rtmp协议推流,并支持hls分发功能及FFMPEG转码多码率功能. 一.准备工作 模块:nginx-rtmp-module-master(支持rtmp协议) 下载地址: http://nginx.org https://github.com/arut/nginx-rtmp-module 1.安装依赖包: #yum -y install gcc glibc glibc-devel make nasm pkgconfig lib-devel openssl-devel exp

FFmpeg中HLS文件解析源码

不少人都在找FFmpeg中是否有hls(m3u8)解析的源码,其实是有的.就是ffmpeg/libavformat/hlsproto.c,它依赖的文件也在那个目录中. /* * Apple HTTP Live Streaming Protocol Handler * Copyright (c) 2010 Martin Storsjo * * This file is part of FFmpeg. * * FFmpeg is free software; you can redistribute