ffmpeg-concat:实践指南
准备试用ffmpeg-concat之前,先别急着安装;这个项目提供的是使用 ffmpeg 将视频列表与性感的 OpenGL 过渡连接在一起。一旦进入视频制作环节,素材、节奏、编码和最终画面容易不一致会直接影响交付,这也是我最关心的风险。我的评估方法是拿一组已有素材完成一段短样片,然后检查素材路径、渲染结果、音画同步和导出格式是否与文档一致。它更像给有真实素材并需要稳定视频产出的创作者准备的可审查方案,是否长期使用应由试跑数据决定。
ffmpeg 连接
使用 ffmpeg 将视频列表与性感的 OpenGL 过渡连接在一起。
(通过独特的过渡连接在一起的 9 个视频的示例)
(请注意,由于 GIF 预览,质量和 fps 很差;这里的 here 是原始版本)
- 中文/中文
简介
FFmpeg 是命令行视频编辑的事实上的标准,但使用非平凡的过渡将视频连接在一起确实很困难。以下是一些 复杂的 示例 两个视频之间的简单交叉淡入淡出。 FFmpeg 过滤图非常强大,但对于实现转换来说,它们太复杂且容易出错。
另一方面,GL Transitions 是由 Gaëtan Renaudeau 牵头的一项伟大的开源计划,旨在使用 GLSL 建立一个通用的过渡集合。其极其简单的规范使得自定义现有转换或编写自己的转换变得非常容易,而不是与复杂的 ffmpeg 过滤器图作斗争。
此模块和 CLI 可以轻松使用 gl-transitions 将视频连接在一起。
安装
该模块需要安装 ffmpeg。
npm install --save ffmpeg-concat
# or if you want to use the CLI
npm install -g ffmpeg-concat
该软件包在 Linux、macOS 和 Windows 上运行。
支持 Node.js 版本 10.13.0 及更高版本。注意(仅限 macOS):由于 libuv 进程处理代码中无意的低级重大更改,在运行 Node.js 版本 12.13.1 到 13.6.0 时,不支持 OpenGL 不支持 macOS。 Node.js 版本 13.7.0 中已发布修复程序。 12.x 的修复正在等待中。其他平台不受影响。
CLI
Usage: ffmpeg-concat [options] <videos...>
Options:
-V, --version output the version number
-o, --output <output> path to mp4 file to write (default: out.mp4)
-t, --transition-name <name> name of gl-transition to use (default: fade)
-d, --transition-duration <duration> duration of transition to use in ms (default: 500)
-T, --transitions <file> json file to load transitions from
-f, --frame-format <format> format to use for temp frame images (default: raw)
-c, --concurrency <number> number of videos to process in parallel (default: 4)
-C, --no-cleanup-frames disables cleaning up temp frame images
-O, --temp-dir <dir> temporary working directory to store frame data
-v, --verbose enable verbose logging from FFmpeg
-h, --help output usage information
Example:
ffmpeg-concat -t circleopen -d 750 -o huzzah.mp4 0.mp4 1.mp4 2.mp4
用途
const concat = require('ffmpeg-concat')
// concat 3 mp4s together using 2 500ms directionalWipe transitions
await concat({
output: 'test.mp4',
videos: [
'media/0.mp4',
'media/1.mp4',
'media/2.mp4'
],
transition: {
name: 'directionalWipe',
duration: 500
}
})
// concat 5 mp4s together using 4 different transitions
await concat({
output: 'test.mp4',
videos: [
'media/0.mp4',
'media/1.mp4',
'media/2.mp4',
'media/0.mp4',
'media/1.mp4'
],
transitions: [
{
name: 'circleOpen',
duration: 1000
},
{
name: 'crossWarp',
duration: 800
},
{
name: 'directionalWarp',
duration: 500,
// pass custom params to a transition
params: { direction: [ 1, -1 ] }
},
{
name: 'squaresWire',
duration: 2000
}
]
})
API
连接(选项)
将视频文件与 OpenGL 过渡连接在一起。当输出视频已写入时,返回 Promise。
请注意,您必须指定 videos、output 以及 transition 或 transitions。
请注意,输出视频的大小和 fps 由第一个输入视频决定。
选项
视频
类型:Array<String>
必填
要连接的视频数组,其中每个项目都是视频文件的路径或 URL。
输出
类型:String
必填
要写入的 mp4 视频文件的路径。
注意:我们目前仅支持输出为mp4;如果您希望看到对更多格式的支持,请打开一个问题。
过渡
类型:Object
指定每个视频之间使用的默认过渡。
请注意,您必须指定 transition 或 transitions,具体取决于您想要对每个转换进行多少控制。如果同时指定两者,则 transitions 优先。
// example
const transition = {
duration: 1000, // ms
name: 'directivewipe', // 要使用的 gl-transition 名称(将与小写字母匹配)
params: { direction: [1, -1] } // optionally override default parameters
}
过渡
类型:Array<Object>
指定每个视频之间的(可能是唯一的)过渡。如果有 N 个视频,则应该有 N - 1 个过渡。
请注意,您必须指定 transition 或 transitions,具体取决于您想要对每个转换进行多少控制。如果同时指定两者,则 transitions 优先。
// example
const transitions = [
{
duration: 1000,
name: 'fade'
},
{
duration: 500,
name: 'swap'
}
]
音频
类型:String
可选
用作输出视频音轨的音频文件的路径或 URL。
如果未提供参数 - 假设用户想要连接源场景音频。
参数
类型:Array<String>
可选
默认值:['-c:v', 'libx264', '-profile:v', 'main', '-preset', 'medium', '-crf 20', '-movflags', 'faststart']
最终视频的仅输出 ffmpeg 命令行参数数组。
frameFormat
类型:string
默认值:raw
临时帧图像的格式。例如,您可以使用 png 或 jpg。
注意:出于性能原因,默认值为 raw,因为写入和读取原始二进制像素数据比编码和解码 png 帧快得多。然而,原始格式很难预览和调试,在这种情况下,您可能需要将 frameFormat 更改为 png。
并发性
类型:Number
默认值:4
并行处理的最大视频数。
日志
类型:Function
默认值:noop
用于记录进度和底层 ffmpeg 命令的可选函数。例如,您可以使用 console.log
cleanupFrames
类型:boolean
默认值:true
默认情况下,我们清理临时帧图像。如果需要调试中间结果,请将其设置为 false。
tempDir
类型:string
默认:/tmp中的随机目录
存储中间帧数据的临时工作目录。这是 cleanupFrames 中帧的保存位置。
过渡
以下是一些我发现对于高质量视频过渡特别有用的 gl 过渡:
- 褪色
- 淡化灰度
- 圆开
- 定向扭曲
- 定向擦拭
- 交叉变形
- 交叉缩放
- 梦幻
- 方线
- 角形
- 径向
- 立方体
- 兑换
相关
- ffmpeg-gl-transition - 用于在视频流之间应用 GLSL 转换的低级 ffmpeg 过滤器(gl-transitions)。它允许使用更高级和可自定义的过滤器图,但它要求您构建 ffmpeg 的自定义版本。
- gl-transitions - GLSL 过渡的集合。
- fluence-ffmpeg - 底层 ffmpeg 包装器库。
- Awesome-ffmpeg - 精选的 ffmpeg 资源列表,重点关注 JavaScript.
-
09.11
WorkflowEngine.NET:实践指南
-
09.11
DartTutorial:实践指南
-
09.11
PseudoMakeMeKeyCapProfiles:实践指南
-
09.11
BlogEngine.NET:实践指南
-
09.11
kazoo:实践指南
-
09.11
moodleapp:实践指南
-
- vssh:实践指南
- 09.11
-
- ffmpeg-concat:实践指南
- 09.11
-
- webtransport:实践指南
- 09.11
-
- docker-pytorch:实践指南
- 09.11
-
-
-
下载
- |
-
-
下载
- 《行尸走肉第一章》免安装中文汉化硬盘版下载
- 单机|436 MB
- 一款以动作冒险为主题的游戏
-
-
下载
- 《街头霸王X铁拳》免安装中文汉化硬盘版下载
- 单机|111MB
- 一款非常好玩的格斗游戏
-
-
下载
- |
-
-
下载
- 《暗黑破坏神3》免安装繁体中文正式版下载
- 单机|7630 MB
- 一款以角色扮演为主题的游戏
-
-
下载
- 《马克思佩恩3》免安装硬盘版下载
- 单机|27033 MB
- 一款以第三人称射击为主题的游戏