热门关键字:
jquery > jquery教程 > html5视频直播 > ffmpeg视频切片、缩放与裁剪输出m3u8流

ffmpeg视频切片、缩放与裁剪输出m3u8流

6497
作者:管理员
发布时间:2016/1/23 17:06:29
评论数:0
转载请自觉注明原文:http://www.jq-school.com/Show.aspx?id=737

ffmpeg视频切片、缩放与裁剪输出m3u8流

最近再研究html5视频直播,在研究的过程中主要用到了ffmpeg解码器、fms流媒体服务器(Flash Media Serve)、flash媒体直播工具(Flash Media Live Encoder 3.2)、nodejs、nginx服务器等。。。。


接下来主要介绍一下ffmpeg视频切片、缩放与裁剪输出m3u8流

1、利用ffmpeg视频切片

主要把视频源切成若干个.ts格式的视频片段然后生成一个.m3u8的切片文件索引提供给html5的video做hls直播源

命令如下:

ffmpeg -i 视频源地址 -strict -2 -c:v libx264 -c:a aac -f hls m3u8文件输出地址(如:F:\nginx\temp\hls\stream.m3u8)


2、ffmpeg缩放视频

假设原始视频尺寸是 1080p(即 1920×1080 px,16:9),使用下面命令可以缩小到 480p:

命令如下:

ffmpeg -i 视频源地址 -vf scale=853:480 -acodec aac -vcodec h264 视频输出地址(如:out.mp4)


各个参数的含义:

-i a.mov 指定待处理视频的文件名
-vf scale=853:480 vf 参数用于指定视频滤镜,其中 scale 表示缩放,后面的数字表示缩放至 853×480 px,其中的 853px 是计算而得,因为原始视频的宽高比为 16:9,所以为了让目标视频的高度为 480px,则宽度 = 480 x 9 / 16 = 853
-acodec aac 指定音频使用 aac 编码。


注:因为 ffmpeg 的内置 aac 编码目前(写这篇文章时)还是试验阶段,故会提示添加参数 “-strict -2” 才能继续,尽管添加即可。又或者使用外部的 libfaac(需要重新编译 ffmpeg)。

-vcodec h264 指定视频使用 h264 编码。注:目前手机一般视频拍摄的格式(封装格式、文件格式)为 mov 或者 mp4,这两者的音频编码都是 aac,视频都是 h264。

out.mp4 指定输出文件名
上面的参数 scale=853:480 当中的宽度和高度实际应用场景中通常只需指定一个,比如指定高度为 480 或者 720,至于宽度则可以传入 “-1” 表示由原始视频的宽高比自动计算而得。即参数可以写为:scale=-1:480,当然也可以 scale=480:-1

3、ffmpeg裁剪

有时可能只需要视频的正中一块,而两头的内容不需要,这时可以对视频进行裁剪(crop),比如有一个竖向的视频 1080 x 1920,如果指向保留中间 1080×1080 部分
命令如下:
ffmpeg -i 视频源地址 -strict -2 -vf crop=1080:1080:0:420 视频输出地址(如:out.mp4)


其中的 crop=1080:1080:0:420 才裁剪参数,具体含义是 crop=width:height:x:y,其中 width 和 height 表示裁剪后的尺寸,x:y 表示裁剪区域的左上角坐标。比如当前这个示例,我们只需要保留竖向视频的中间部分,所以 x 不用偏移,故传入0,而 y 则需要向下偏移:(1920 – 1080) / 2 = 420





如果您觉得本文的内容对您的学习有所帮助:支付鼓励



关键字:ffmpeg hls m3u8 ts crop segment libx264 scale
友荐云推荐