windows使用ffmpeg将MP4转m3u8使用参数详解,视频添加水印和压缩

目录

背景:

一、什么是m3u8:

二、为什么使用m3u8:

三、安装ffmpeg:

1、下载后直接解压:

2、配置环境变量:

四、开始转换m3u8:

五、视频添加水印和压缩:

1. 给视频加上水印图片

2.输出视频的尺寸

3.输出文件的起始文件

4.输出文件的最小大小 和 最大的大小(会影响视频质量)


背景:

        近期公司购买了海外课程,面向高校推广;因此需要开发点播平台,但是面对错综复杂的客户群体,需要解决用户体检以及防盗链问题;因此,我们选择了m3u8。

一、什么是m3u8:

        M3U8视频格式也是一种M3U,只是它的编码格式是UTF-8格式。M3U用Latin-1字符集编码。M3U8格式特点是带有一个目录信息或文件。

二、为什么使用m3u8:

        随着客户在移动端播放的需求日益强烈,我们的转码软件开始输出mp4格式文件,经过测试,发现优秀的软件压缩mp4跟flv压缩率几乎相差无几,于是我们把输出格式统一为mp4,经过我们软件处理后的mp4文件能实现无缓冲拖拽播放(快进播放),也解决了部分视频文件有声音无画面的问题,赢得了客户的好评。

        随着客户的增加,mp4文件播放的弊端也日益凸显,主要集中在两个方面,一是当视频时长比较长的时候,mp4的关键帧元素往往很大,需要加载很长时间才能开始播放,网速不好的情况缓冲加载就要20多秒的时间,客户早已急不可耐。二是当用户打开一个视频播放的时候,浏览器会持续请求下载mp4文件直到下载完成,就算是用户暂停视频播放浏览器也会持续这种下载状态,如果这个视频文件是500M则会请求服务器下载500M文件,是1G则会不停下载1G,给服务器硬盘和宽带造成很大浪费和压力。

        于是我们参考优酷土豆等大型视频网站系统的播放文件,发现他们的视频文件都是分段播放的,即把一个大的视频文件按照一定大小或时长把一个视频分为N段播放,这样的优势是打开视频加载速度快,可以达到秒播,另外一个优势是当视频播放第N段的时候,浏览器会下载N+1段,N+2则不会下载,大大缓解了服务器硬盘和宽带压力,可知道高昂的宽带成本才是视频网站的最大压力。这样的视频文件处理方式得到了大量客户的一致好评。

        可是很快我们又发现了一个很严重的问题,xml分段列表的视频在IOS上面也是一筹莫展,为了让视频在IOS设备播放还得保留mp4文件给IOS设备播放。于是m3u8播放列表登场了。

        m3u8是苹果公司开发的一项新型播放格式,这种播放格式支持目前市面的windows、androis、ios设备主流的浏览器,同样的视频文件既可以在flash环境播放,又能在无flash的html5环境播放,它的优势还不止于此,它可以实现多种码率在不同网速下的自动切换,网速好自动切换高清晰度视频,网速慢自动播放低清晰度文件,还可以实现流加密(视频文件本身加密)、分段下载播放、任意时间点拖拽播放、随机视频文件广告插入等等优势,所以最新版的云转码视频系统仅把m3u8作为唯一的播放格式而放弃了其他格式的输出。

三、安装ffmpeg:

首先下载windows 可用的ffmpeg文件(Linux环境其他章节再讲讲)

网址为:https://github.com/BtbN/FFmpeg-Builds/releases

1、下载后直接解压:

下载完成后解压压缩包,完成后bin目录下ffmpeg.exe文件是之后程序启动时需要使用的

2、配置环境变量:

在Windows系统变量的path中添加ffmpeg文件夹中 bin 的路径

配置完成后检测是否配置成功

在CMD中输入 ffmpeg -version 出现如下信息则配置成功

四、开始转换m3u8:

准备Mp4文件

打开CMD

根据文件位置在CMD中执行以下命令

ffmpeg -i E:\demo\demo.MP4 -profile:v baseline -level 3.0 -s 640x360 -start_number 0 -hls_time 10 -hls_list_size 0 -f hls E:\demo\demo.m3u8

如出现以下提示则转换成功

我们看一下转换m3u8文件夹中的文件

文件中包括一个m3u8文件和多个ts文件

我们打开m3u8文件

发现文件中其实就是指定了其他视频文件的路径

当我们需要访问当前视频的时候只需要将地址直接指向当前m3u8文件地址即可


五、视频添加水印和压缩:

ffmpeg -i E:\videos\video.mp4 -i E:\videos\logo.png -filter_complex overlay -profile:v baseline -level 3.0 -s 1024x1080 -start_number 0 -hls_time 0.5 -b:v 125k -bufsize 150k -hls_list_size 0 -f hls E:\videos\video\video.m3u8

1. 给视频加上水印图片

-i E:\videos\logo.png 给视频加上水印图片 -filter_complex overlay 位置位于视频左上角

左上角: -filter_complex overlay
左下角: -filter_complex overlay=0:H-h

右上角: -filter_complex overlay=W-w

右下角: -filter_complex overlay=W-w:H-h

2.输出视频的尺寸

-s 1024x1080

3.输出文件的起始文件

-start_number 0

4.输出文件的最小大小 和 最大的大小(会影响视频质量)

-b:v 125k -bufsize 150k

参考链接:FFmpeg常用命令汇总_ffmpeg -i input.ts_梧桐樹下的博客-CSDN博客

参考链接:https://www.jianshu.com/p/e3f6c3705033
参考链接:https://www.jianshu.com/p/36475d6f4558
 


如果本篇文章对你有帮助的话,很高兴能够帮助上你。

当然,如果你觉得文章有什么让你觉得不合理、或者有更简单的实现方法又或者有理解不来的地方,希望你在看到之后能够在评论里指出来,我会在看到之后尽快的回复你。

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ffmpeg是一个开源的跨平台多媒体处理工具,可以实现将MP4视频文件换为M3U8格式。以下是一种常见的使用ffmpeg实现MP4M3U8的方法: 1. 首先,将MP4文件切片成TS格式,创建M3U8清单。可以使用以下命令来实现: ``` ffmpeg -i demo.mp4 -profile:v baseline -level 3.0 -start_number 0 -hls_time 10 -hls_list_size 0 -f hls demo.m3u8 ``` 这个命令将会把demo.mp4文件切片成TS格式,并生成一个名为demo.m3u8M3U8清单文件。 2. 如果需要批量执行MP4M3U8操作,可以使用像引用中提供的PHP脚本一样的方法。这个脚本将遍历一个视频文件数组,针对每个视频文件执行MP4M3U8的操作。 3. 如果已经拥有一个包含TS清单的M3U8文件,可以使用以下命令将其换为MP4文件: ``` ffmpeg -i https://xxx.com/index.m3u8 -acodec copy -vcodec copy -absf aac_adtstoasc xxx.mp4 ``` 这个命令将会下载并解析名为index.m3u8M3U8文件,并将其中的TS流合并为一个MP4文件,保存为xxx.mp4。 总结起来,FFmpeg可以通过切片MP4文件并生成M3U8清单文件来实现MP4M3U8的功能。同时,也可以通过解析包含TS清单的M3U8文件来将其换为MP4文件。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [使用ffmpeg进行mp4m3u8之间换](https://blog.csdn.net/shamqu/article/details/114042996)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值