ass字幕导入Premiere的另一种思路 用ffmpeg把ass转换成颜色通道和透明度通道两个视频

突发奇想,为什么不能用这种方式导出视频呢。

转成视频,支持透明的视频只有avi(RGBA)和mov。但是前者显然不现实,因为太大了;后者速度太慢了。

然后就想到,为什么不能把alpha通道导出成另一个视频呢。得,要学complex filter了。

看了一番文档,这东西也挺容易理解的,基本语法是:

-filter_complex [输入1]滤镜1[输出1];[输入2]滤镜2[输出2];...

于是就有了下面的程序:

ffmpeg -f lavfi -i color=black@0:1920x1080:30:10,format=rgba,subtitles=test.ass:alpha=1 -filter_complex split[v1][v2];[v2]alphaextract[o2];[v1]format=yuv420p[o1] -map [o1] 1.mp4 -map [o2] 2.mp4

注释:

给透明的视频加上透明的字幕,结果复制两份,取名v1v2(注意这里他们两个都是rgba格式,便于取出透明度);取v2的透明度通道命名为o2,并作为最后的输出;把v1转回视频应取的yuv420格式然后命名为o1,并作为最后的输出。

于是,命令执行之后就可以得到两个视频了,把两个视频导入pr里面就可以为所欲为了。

修改版

ffmpeg -filter_complex color=black@0:1920x1080:30:10,format=rgba,subtitles=0.ass:alpha=1,split[v1][v2];[v2]alphaextract[o2];[v1]format=yuv420p[o1] -map [o1] 1.mp4 -map [o2] 2.mp4
你可以使用FFmpeg工具来完成这个任务。FFmpeg是一个强大的多媒体处理库和命令行工具,它支持多种文件格式转换、流编辑等操作。下面是基本步骤: 1. **安装FFmpeg**:如果你还没有安装FFmpeg,可以从其官方网站下载适用于你的系统的版本并安装。 2. **提取图片**: - 首先,你需要分别从两个视频中提取帧。对于每个视频,使用`ffmpeg`的`-ss`选项指定开始时间,然后用`-frames:v`指定帧的数量。例如: ``` ffmpeg -i video1.mp4 -vf "select=eq(pict_type\,I)" -vsync vfr frame1_%d.jpg ffmpeg -i video2.mp4 -vf "select=eq(pict_type\,I)" -vsync vfr frame2_%d.jpg ``` 这将每秒一帧地提取I型图片(关键帧)到`.jpg`格式。 3. **合并图片生成视频**: 使用FFmpeg的`-loop`选项将图片读入循环,并用`image2`滤镜组合图片成视频。假设你有从上一步得到的`frame1_*.jpg`和`frame2_*.jpg`: ``` ffmpeg -framerate 25 -i frame1_%d.jpg -i frame2_%d.jpg -filter_complex "[0:v][1:v]overlay[out]" -map "[out]" -c:v libx264 -crf 23 -preset veryfast -pix_fmt yuv420p output_video.mp4 ``` 这里 `-framerate` 设置了帧率,`overlay` 滤镜用于将两帧叠加,最后选择`yuv420p`编码。 4. **保存为YUV420P**: 如果需要YUV420P格式,上面的命令已经包含了这种编码。如果输出不是YUV420P,可以修改`-pix_fmt`为`yuv420p`。 **相关问题--:** 1. FFmpeg如何设置输出视频的质量? 2. 如何指定不同图片文件夹中的帧作为输入? 3. 如何调整视频的输出分辨率?
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值