node.js - FFmpeg节点js将视频文件(.mp4)转换为m3u8:输出格式m3u8不可用
问题描述
我想在 nodeJs 中将视频文件(如 .mp4 或 .avi)转换为 .m3u8。我尝试使用 ffmpeg 和 node-js 来做到这一点,但这不起作用:'输出格式 m3u8 不可用'。
这是我的nodeJs代码:
const ffmpegInstaller = require('@ffmpeg-installer/ffmpeg');
const ffmpeg = require('fluent-ffmpeg');
var cmd = ffmpeg('./flir_20191202T174341.mp4')
.setFfmpegPath(ffmpegInstaller.path)
.videoBitrate(1024)
.videoCodec('divx')
.format('m3u8')
.on('end', () => {
// ...
})
.on('error', err => {
console.error(err);
})
.save('./file-out.m3u8');
console.log('Hello !');
console.log(cmd);
你知道我该怎么做吗?
提前致谢。
杰里米。
解决方案
我找到了解决方案:
var fs = require('fs');
var ffmpeg = require('fluent-ffmpeg');
// open input stream
var infs = new ffmpeg
infs.addInput('video.mp4').outputOptions([
'-map 0:0',
'-map 0:1',
'-map 0:0',
'-map 0:1',
'-s:v:0 2160x3840',
'-c:v:0 libx264',
'-b:v:0 2000k',
'-s:v:1 960x540',
'-c:v:1 libx264',
'-b:v:1 365k',
// '-var_stream_map', '"v:0,a:0 v:1,a:1"',
'-master_pl_name master.m3u8',
'-f hls',
'-max_muxing_queue_size 1024',
'-hls_time 1',
'-hls_list_size 0',
'-hls_segment_filename', 'v%v/fileSequence%d.ts'
]).output('./video.m3u8')
.on('start', function (commandLine) {
console.log('Spawned Ffmpeg with command: ' + commandLine);
})
.on('error', function (err, stdout, stderr) {
console.log('An error occurred: ' + err.message, err, stderr);
})
.on('progress', function (progress) {
console.log('Processing: ' + progress.percent + '% done')
})
.on('end', function (err, stdout, stderr) {
console.log('Finished processing!' /*, err, stdout, stderr*/)
})
.run()
推荐阅读
- ios - Gluon:SettingsService 在 iOS 上崩溃
- c# - 重命名jqGrid中的列,格式为MMYYYY
- c# - 使用 if 语句更改面板颜色
- angular - 将字符串放入主题数组中
- azure-devops - 是否可以用纯 html 编写 VSTS 仪表板
- c++ - 执行 nodejs 脚本作为子进程(不是来自其他脚本)
- java - 如何在mac中降级java版本
- vue.js - v-select (vuetify) 不能显示选中的元素
- rdf - jena 的 fuseki 不能与 tdb2.tdbloader 压缩吗?
- java - UnsatisfiedLinkError:未找到本机库“wcepeer”(Mysaifu)