admin管理员组文章数量:1794759
ffmpeg
ffmpeg-concat
拼接 一组视频.,通过使用 ffmpeg和 性感的 OpenGL 过渡 (动画效果)
9个视频 与 独特过渡 连接在一起的示例
请注意,由于GIF预览,质量和fps很差;这个是源文件
介绍
FFmpeg是命令行视频编辑中的事实标准,但使用 非平凡过渡 将视频连接在一起真的很困难. 这里有一些错综复杂 的例子两个视频之间的简单交叉淡入淡出. FFmpeg过滤图非常强大,但是为了实现过渡动画,它们太复杂且容易出错.
另一方面,GL Transitions,是一个伟大的开源由Gaëtan Renaudeau倡议,旨在使用 GLSL 建立一个普遍的过渡集合,它非常简单的规范使得定制现有过渡或编写自己的过渡非常容易,而不是使用复杂的ffmpeg过滤图.
使用 gl-transitions 这个模块和CLI轻松地将视频连接在一起.
附github资源
ffmpeg-concat拼接一组视频。,通过使用ffmpeg和性感的OpenGL过渡(动画效果)
FFmpeg过滤器,用于在视频流之间应用GLSL过渡。
.zh.md 使用带有性感OpenGL过渡的ffmpeg将视频列表汇总在一起。
NPM位置:
安装
先安装ffmpeg
可通过PPA进行安装
sudo add-apt-repository ppa:kirillshkrogalev/ffmpeg-next
sudo apt-get update
sudo apt-get install ffmpeg
查看是否安装成功:
ffmpeg -version
这个模块需要ffmpeg要安装.
npm install --save ffmpeg-concat# 或者 想使用 cli
npm install -g ffmpeg-concat
CLI
Usage: ffmpeg-concat [options] <videos...>Options:-V, --version 输出版本号-o, --output <output> 要写入的mp4文件的路径(默认值:out.mp4)-t, --transition-name <name> 要使用的gl-transition名称(默认值:淡入淡出)-d, --transition-duration <duration> 转换持续时间以毫秒为单位(默认值:500)-T, --transitions <file> json文件加载转换-f, --frame-format <format> 用于临时帧图像的格式(默认值:raw)-c, --concurrency <number> 要并行处理的视频数量(默认值:4)-C, --no-cleanup-frames 禁用清除临时帧图像-O, --temp-dir <dir> 用于存储帧数据的临时工作目录-h, --help 输出使用信息Example:ffmpeg-concat -t circleopen -d 750 -o huzzah.mp4 0.mp4 1.mp4 2.mp4
注意使用过程中出错解决方案
解决地址如下:
具体是:
apt-get update
apt install xvfb
xvfb-run -s "-ac -screen 0 1280x1024x24" node p.txt (p.txt 自己的node执行文件)
这样就可以了
用法
const concat = require('ffmpeg-concat')// 拼接 3 个 mp4s 使用 2 个 500ms directionalWipe 过渡
await concat({output: 'test.mp4',videos: ['media/0.mp4','media/1.mp4','media/2.mp4'],transition: {name: 'directionalWipe',duration: 500}
})
// 拼接 5 个 mp4 使用 4种不同的过渡
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,// 将自定义参数传递给转换params: { direction: [ 1, -1 ] }},{name: 'squaresWire',duration: 2000}]
})
更多动画取上面的名称就行地址如下:
=6
API
concat(options)
将 视频文件 与 OpenGL过渡 连接在一起. 返回一个Promise
用于输出视频的时间.
请注意,您必须指定videos
,output
,或者transition
要么transitions
.
请注意,输出视频的大小 和 fps 由 第一个输入视频决定.
options
videos
类型: Array<String>
必需
要连接的视频数组,其中每个 item 都是视频文件的路径或URL.
output
类型: String
必需
输出的mp4
视频文件路径.
注意: 我们目前只支持输出到mp4;如果您希望获得更多格式的支持,请打开一个问题.
transition
类型: Object
指定在每个视频之间使用的默认过渡.
请注意,您必须指定其中一个transition
要么transitions
,取决于您对每次过渡的控制程度. 如果同时指定,transitions
优先.
// 例
const transition = {duration: 1000, // msname: 'directionalwipe', // 要使用的 gl-transition名称(小写匹配)params: { direction: [1, -1] } // 可选地覆盖默认参数
}
transitions
类型: Array<Object>
指定每个视频之间的 (可能唯一的) 过渡. 如果有N个视频,则应该有N-1个过渡.
请注意,您必须指定其中一个transition
要么transitions
,取决于您对每次过渡的控制程度. 如果同时指定,transitions
优先.
// 例
const transitions = [{duration: 1000,name: 'fade'},{duration: 500,name: 'swap'}
]
audio
类型: String
必需
音频文件的路径或URL,用作 输出视频 的音轨.
frameFormat
类型: string
默认: raw
临时帧图像的格式. 例如,您可以使用png
要么jpg
.
注意: 出于性能原因默认为raw
,写入和读取 原始二进制像素数据 比 编码和解码png
帧快得多. 原始格式很难预览和调试,在另一种情况下,您可能想要更改frameFormat
至png
.
concurrency
类型: Number
默认: 4
要并行处理的最大视频数量.
log
类型: Function
默认: noop
用于记录进度和底层ffmpeg命令的可选功能. 例如,您可以使用console.log
cleanupFrames
类型: boolean
默认: true
默认情况下,我们清理临时帧图像. 如果你需要调试中间结果,将此设置为false
.
tempDir
类型: string
默认值: /tmp
下的随机目录
用于存储中间帧数据的临时工作目录. 这是cleanupFrames
时,帧被保存的位置.
过渡
这里有一些gl-transitions我发现对高质量的视频过渡 特别有用:
- fade
- fadegrayscale
- circleopen
- directionalwarp
- directionalwipe
- crosswarp
- crosszoom
- dreamy
- squareswire
- angular
- radial
- cube
- swap
有关
- ffmpeg-gl-transition- 用于在视频流之间 应用GLSL过渡 的 低级ffmpeg过滤器 (gl-transitions) . 它允许使用更高级和可自定义的过滤器图形,但它需要您构建自定义版本的ffmpeg.
- gl-transitions- GLSL过渡的集合.
- fluent-ffmpeg- 底层ffmpeg包装库.
- awesome-ffmpeg- ffmpeg资源的精选列表,重点关注JavaScript.
本文标签: ffmpeg
版权声明:本文标题:ffmpeg 内容由林淑君副主任自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.xiehuijuan.com/baike/1692790876a200255.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论