首页 > 其他分享 >使用fluent-ffmpeg将完整视频文件转码切片为.ts .m3u8文件以实现hls流媒体传输

使用fluent-ffmpeg将完整视频文件转码切片为.ts .m3u8文件以实现hls流媒体传输

时间:2023-10-13 09:25:33浏览次数:45  
标签:文件 ffmpeg m3u8 转码 hls 切片 command 视频文件

使用fluent-ffmpeg将完整视频文件转码切片为.ts .m3u8文件以实现hls流媒体传输

安装

项目内安装:

npm i ffmpeg
npm i fluent-ffmpeg

外部环境安装:

官网下载ffmpeg,将文件bin目录添加为Path系统环境变量
C:\Users\lenovo\Desktop\ffmpeg-6.0-essentials_build\ffmpeg-6.0-essentials_build\bin

编写JS脚本

/**
 * 依赖库/包:   ffmpeg     fluent-ffmpeg。
 * 功     能:   实现hls流媒体播放,视频切片为大量.ts文件(视频)和单个.m3u8(列表描述文件)。
 * 服务器中存储大量切片文件,客户端请求.m3u8列表文件实现对切片的加载 。
 * test、testhls 目录和该hll.js文件为该功能的模块。
 * 
 * @time 23/10/11
 */
const ffmpeg = require('fluent-ffmpeg')

const inputFile = './assets/videosource/1001.mp4' // 输入文件目录

const outputPath = './assets/videosource/1001' // 输出文件目录

function hlsSlice(inputFile, outputPath) {  
    const command = ffmpeg(inputFile) 
    // command.videoCodec('libx264') // 设置视频编解码器
    command.outputFormat('hls') // 输出视频格式  
    command.outputOptions('-hls_list_size 0') // -hls_list_size n:设置播放列表保存的最多条目,设置为0会保存有所片信息,默认值为5
    command.outputOption('-hls_time 5') // -hls_time n: 设置每片的长度,默认值为2。单位为秒
    command.output(outputPath + '/playlist.m3u8')  // 输出文件
    command.on('progress', (progress) => { // 监听切片进度
      let number = Number(progress.percent).toFixed(2)
      console.log(`Processing: ${number}%`)
    })
    command.on('end', () => {  // 监听结束
      console.clear()
      console.log(`${inputFile}:视频切片已完成`) 
    })  
    command.run() // 执行
}
 
hlsSlice(inputFile, outputPath)

客户端请求

注意:服务端.ts .m3u8文件应当在同一目录下
客户端请求对应视频文件的.m3u8文件即可实现hls加载ts分片

标签:文件,ffmpeg,m3u8,转码,hls,切片,command,视频文件
From: https://www.cnblogs.com/yuanjiejie/p/17761107.html

相关文章

  • ffmpeg
    参考:https://zhuanlan.zhihu.com/p/455572544ffmpeg介绍ffmpeg是一个处理媒体文件的命令行工具(commandlinebased)。它是一个拥有非常多功能的框架,并且因为他是开源的,很多知名的工具如VLC,YouTube,iTunes等等,都是再其之上开发出来的。ffmpeg最吸引我的地方就是它可以用非......
  • FFMPEG+SDL简单视频播放器——视频快进
    之前写过一篇关于视频播放器的文章。播放器只简单实现了视频播放的功能,在此功能的基础上,给它加上一个视频快进的功能。实现添加参数//videoplaycontrolbooldo_seek=false;//播放状态int64_tseek_length=5;//快进秒数int64_tseek_pos;//视频跳转......
  • 2023年网页内嵌VLC直接播放RTSP视频流,无需服务器转码,支持硬件解码,支持高版本Chome!
    2015年之前还可以用VLC原生播放器在Chrome、Firefox等浏览器中直接播放,延迟比较低,效果也还不错。可惜好景不长,从2015年Chrome、Firefox等浏览器取消了对NPAPI插件的支持,海康威视官方提供的web3.0开发包也只能在低版本浏览器播放。而猿大师播放器是目前来说最成熟的、延迟最低......
  • Qt+FFmpeg播放mp4文件视频
    关键词:QtFFmpegC++MP4视频源码下载在系列原文地址。先看效果。这是一个很简单的mp4文件播放demo,为了简化,没有加入音频数据解析,即只有图像没有声音。音视频源的播放可以概括为以下步骤:mp4文件也是源数据的一种,用FFmpeg解析mp4文件也遵循这个的过程,在函数层面的解析过程......
  • ffmpeg
    1.下载http://ffmpeg.org/download.html安装略,ubuntu直接apt即可2.播放视频ffplayvideo.mp43.播放音频ffplaymusic.mp34.查看视频/音频属性ffprobevideo.mp45.视频后缀格式转换ffmpeg-ivideo.mp4output.mov6.音频转换格式ffmpeg-imusic_flac.flac-aco......
  • 视频融合/监控汇聚平台EasyCVR如何推送本地录像视频文件进行AI视频智能分析?
    安防视频监控平台EasyCVR是一个具有强大拓展性、灵活的视频能力和轻便部署的平台。它支持多种主流标准协议,包括国标GB28181、RTSP/Onvif、RTMP等,还可以支持厂家的私有协议和SDK接入,例如海康Ehome、海大宇等设备的SDK。该平台不仅拥有传统安防视频监控的功能,还具备接入AI智能分析的......
  • ubuntu_ffmpeg最速安装
    ffmpeg部署环境准备pkg_list=(\autoconf\automake\build-essential\cmake\git-core\libass-dev\libfreetype6-dev\libsdl2-dev\libtool\libva-dev\libvdpau-dev\libvorbis-dev\libxcb1-dev\libxcb-shm0-dev\libxcb-xfixes0-dev\p......
  • ffmpeg
    FFmpegFFmpeg是一个开源的多媒体处理工具,可以用于处理音频、视频和多媒体文件。它提供了一组强大的库和命令行工具,允许你执行各种多媒体处理任务。音视频转换:FFmpeg可以将一个多媒体文件从一种格式转换为另一种格式,比如AVI文件转换为MP4格式,或者将WAV音频转换为MP3剪......
  • ffmpeg音频滤镜
    分离声道1转码(源文件没问题可以省略)ffmpeg-ijy.ts -vcodech264 -acodecaacjy1.ts2取一个声道ffmpeg-ijy1.ts -af"pan=stereo|c0=FL|c1=FL"-c:vcopy1.ts  3取另一个声道 ffmpeg-ijy1.ts -af"pan=stereo|c0=FR|c1=FR"-c:vcopy2.ts单音轨变双音......
  • Linux系统使用ffmpeg将大量的图片合成.gif
    ubuntu系统可以使用ffmpeg命令对图像的格式和大小等进行转换,也可以对视频进行处理。安装ffmpegsudoapt-getupdatesudoapt-getupgradesudoaptinstallffmpeg使用ffmpeg将大量的图片合成.gif动图,比如,图片的命名格式为animation-cohesion.0001.tif、animation-cohesion.......