m3u8视频流,视频切片处理

这篇具有很好参考价值的文章主要介绍了m3u8视频流,视频切片处理。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

为什么要用m3u8而不是mp4

随着客户的增加,mp4文件播放的弊端也日益凸显。

mp4缺点

1):mp4的关键帧元素往往很大,需要加载很长时间才能开始播放。
2):当用户打开一个视频播放的时候,浏览器会持续请求下载mp4文件直到下载完成,就算是用户暂停视频播放浏览器也会持续这种下载状态,给服务器硬盘和宽带造成很大浪费和压力。

选用m3u8

而m3u8视频流则是吧一个大的视频文件按照一定大小或时长把一个视频分为N段播放,这样打开视频加载速度快,可以达到秒播,而且当视频播放第N段的时候,浏览器会下载N+1段,N+2则不会下载,大大缓解了服务器硬盘和宽带压力。

什么是m3u8

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

将mp4视频转换为m3u8视频流

方法/步骤

主流的方式是通过 m3u8格式视频转码工具 FFmpeg 来实现的

下载
从我个人百度网盘下载:https://pan.baidu.com/s/17Hkccz4w1qxHd2bPJsslOg?pwd=wpcd
提取码:wpcd

下载完解压后可以在bin文件嘉下看到三个可执行文件,
m3u8视频流,视频切片处理,音视频,webpack,vue,前端
配置环境变量,找到path编辑并添加刚刚bin目录复制进去

m3u8视频流,视频切片处理,音视频,webpack,vue,前端

在cmd中输入ffmpeg 没有报错则表示安装成功

m3u8视频流,视频切片处理,音视频,webpack,vue,前端

视频分割命令

 ffmpeg -i video1.mp4 -profile:v  baseline -level 3.0 -start_number 0 -hls_time 1 -hls_list_size 0 -f hls demo.m3u8
  1. -i 指定输入的文件名
  2. -profile:v baseline 大概意思是档次转成基本画质,有四种画质级别,分别是baseline, extended, main, high,从低到高
  3. -level 3.0 大概也是视频画质级别吧,基本上是从1到5,
  4. -start_number 0 表示从0开始
  5. -hls_time 1 标识每1秒切一个
  6. -f hls 将视频转为hls格式
  7. -hls_list_size 0设置播放列表保存的最多条目,设置为 0 会保存有所片信息,默认值为5。

成功后可以得到下面的文件

m3u8视频流,视频切片处理,音视频,webpack,vue,前端

注意:

ts文件的切割还与两个帧之间的时间间隔有关,任何一个ts分片的第一帧必须是1帧,否则无法进行播放。因此有时候并不会按照指定的时间进行分割

解决

既然知道要1秒产生一个ts分片,那就必须产生切片的过程中,强制一秒中产生一个关键帧。设置关键帧间隔,设置间隔为 2 秒的参数如下:-force_key_frames "expr:gte(t,n_forced*2)"

 ffmpeg -i video1.mp4 -force_key_frames "expr:gte(t,n_forced*2)" -profile:v  baseline -level 3.0 -start_number 0 -hls_time 1 -hls_list_size 0 -f hls demo.m3u8

视频合并

将视频合并成一个完整的mp4可以执行以下命令

ffmpeg -i demo.m3u8 -c copy abc.mp4

注意:demo.m3u8里必须完整记录的这个视频的信息

例如:

m3u8视频流,视频切片处理,音视频,webpack,vue,前端

前端播放m3u8视频流(vue3示例)

安装依赖

npm install --save video.js
npm install --save videojs-contrib-hls

在需要的组件中引入

import 'video.js/dist/video-js.css';
import videojs from 'video.js';
import 'videojs-contrib-hls';

使用demo

// html部分
<video controls autoplay preload="auto" :fluid="true"  ref="videoPlayer" class="video-js video" />

// js部分
const videoPlayer = ref(null) // video标签
const myPlayer = ref<any>(null)
const setVideoUrl = (url: string)=>{
    nextTick(() => {
        myPlayer.value = videojs(videoPlayer.value, {
            sources: [
                {
                    src: url,//视频地址
                    type: 'application/x-mpegURL'
                }
            ],
            controlBar: {
                timeDivider: false,//当前时间和持续时间的分隔符
                durationDisplay: false,//显示持续时间
                remainingTimeDisplay: true,//是否显示剩余时间功能
                currentTimeDisplay: false,//当前时间
                volumeControl: false,//音量控制键
                playToggle: true,//播放按钮
                progressControl: true,//进度条
                fullscreenToggle: true,//全屏按钮
            },
        })
    })
}

问题

服务器上的m3u8视频在播放时会有跨域错误,详细可以查我的m3u8解决跨域这片文章,针对IIS和Nginx都有相关解决方案。文章来源地址https://www.toymoban.com/news/detail-783186.html

到了这里,关于m3u8视频流,视频切片处理的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 小X通m3u8视频流AES加密分析

    最近有空研究了下小X通的视频协议,下面记录下研究过程 首先我们要了解下m3u8是什么 首先我们需要了解什么时HLS,所谓HLS(HTTP Live Streaming)是一个由苹果公司提出的基于 HTTP 的流媒体网络传输协议。而m3u8是HLS协议的一部分,但是在直播,视频网站等用处很广泛。 HLS协议规定

    2024年02月05日
    浏览(29)
  • 关于vue播放flv,m3u8视频流(监控)的方法

    前文: 随着前端大屏页面的逐渐壮大,客户的需求也越来越多,大屏上面展示的事物也越来越丰     富。其中实时播放监控的需求逐步增加,视频流格式也是有很多种,用到最多的.flv、.m3u8。 一、 JessibucaPlayer插件用来播放flv流 1.首先是先把文件放在vue项目的public下面 2.在

    2023年04月15日
    浏览(73)
  • ffmpeg + nginx 实现rtsp视频流转m3u8视频流,转码推流(linux)

    FFmpeg即是一款音视频编解码工具,同时也是一组音视频编码开发套件,作为编码开发套件,它为开发者提供了丰富的音视频处理的调用接口。 FFmpeg提供了多种媒体格式的封装和解封装,包括多种音视频编码、多种协议的流媒体、多种多彩格式转换、多种采样率转换、多种码率

    2024年02月09日
    浏览(51)
  • 「Python|音视频处理|场景案例」如何使用ffmpeg下载m3u8视频到本地并保存成mp4

    本文主要介绍如何使用ffmpeg批量下载视频到本地并保存成指定格式。 当我们希望将网页上的视频下载到本地的时候,我们可能获取到的视频地址是指向 .m3u8 格式的,当视频多的时候,手动下载并使用工具转换格式就显得工作量过大。 ffmpeg 是一个强大的音视频处理工具,具体

    2024年02月16日
    浏览(54)
  • Windows上搭建rtsp-simple-server流媒体服务器实现rtsp、rtmp等推流以及转流、前端html与Vue中播放hls(m3u8)视频流

    Nginx-http-flv-module流媒体服务器搭建+模拟推流+flv.js在前端html和Vue中播放HTTP-FLV视频流: Nginx-http-flv-module流媒体服务器搭建+模拟推流+flv.js在前端html和Vue中播放HTTP-FLV视频流_霸道流氓气质的博客-CSDN博客 上面讲了Nginx-http-flv-module+flv.js进行流媒体服务器搭建和前端播放视频流的过

    2024年02月01日
    浏览(40)
  • 视频防盗链下载,ffmpeg转m3u8,ts实现视频切片

    最近公司有个需求,要求付费的大视频防止下载,不卡顿功能。 优先使用的是阿里的视频点播,自己琢磨没事干,网上很多电影视频网站是如何做到的呢,然后就是各种搜,得到了一下结果 这个video标签的src地址是下载不了的,这下和电影网站的一样了

    2023年04月26日
    浏览(31)
  • 处理前端访问m3u8视频文件出现跨越问题

    一、后端模板渲染的方式,不需要处理,不会存在跨域问题 二、如果是前后端分离项目在 nginx 中配置跨域 1、 m3u8 文件存放在服务器地址为`/home/video-api/public/uploads/video 2、修改 nginx 的配置 3、客户端在 js 代码里面输入视频地址 http://【ip或者域名】/uploads/video/1686034066126185.m3u

    2024年02月09日
    浏览(40)
  • 爬取A站视频,涉及m3u8格式的处理

    1.进入A站进行抓包分析 进入一个页面,右点击鼠标按钮,点击检查  接着点击network,点击Fetxh/XHR,然后刷新网页,得到下面的页面   发现其中有许多d595开头的文件,它们是ts文件,点击其中一个。在General中复制其requests URL在浏览器打开,会自动下载一个文件,保存为ts,用视

    2024年01月23日
    浏览(33)
  • 抓取m3u8视频

    视频url:https://www.9meiju.cc/mohuankehuan/shandianxiadibaji/1-1.html 打开网址分析当前视频是由多个片段组成还是单独一个视频 如果是一个单独视频,则找到网址,直接下载即可,如果为多个片段的视频,则需要找到片段的文件进行处理,本案例以m3u8为例 找到m3u8文件后进行下载,下载

    2024年02月11日
    浏览(35)
  • Scrapy 爬取m3u8视频

    爬取ts文件样式 合成的MP4文件 视频地址: [在线播放我独自升级 第03集 - 高清资源](https://www.physkan.com/ph/175552-8-3.html) 这里任务目标很明确 就是找m3u8文件 打开浏览器 进入开发者模式F12 搜索m3u8文件 查看 响应内容含有ts文件 的m3u8文件 再次查看 标头地址 即可 https://leshiyuncdn

    2024年04月15日
    浏览(22)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包