使用ffmpeg压制硬字幕与logo
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用ffmpeg压制硬字幕与logo相关的知识,希望对你有一定的参考价值。
参考技术A 2018.9.17更新命令改成这样,不然将会压制出来两条视频轨道,一条有字幕一条没有 = =
btw, [1]scale=100:100[logo]; 这一句顾名思义是缩放的意思
%pos% 可以选下面这几种
这个需求其实挺变态的
我之前压制硬字幕的命令是
ffmpeg -i input.mp4 -vf "ass=input.ass" output.mp4
压制logo的命令是
ffmpeg -i input.mp4 -i logo.ico -filter_complex overlay output.mp4
于是我想当然地把这两条语句结合
ffmpeg -i input.mp4 -i logo.ico -filter_complex overlay -vf "ass=input.ass" output.mp4
结果出现了报错
大致意思就是 -vf 选项不能和 -filter_complex 滤镜一起使用
头大
然后一番搜索之后,照着 这篇 的解释和 这篇 ,拼凑出了下面这条命令
我说一下自己的理解
首先看到命令中有两个输入,一个是视频文件,为 input0,一个是 logo 图像,为 input1.
filter_complex 滤镜的参数里面 [0:v] 的 0 是 input0, v 代表处理的是视频而不是音频,处理音频的待会儿再讲
整体来看, [0:v][1:v]overlay[logo] 是一个2输入1输出的管子,管子把 input1 的视频流(此处为一张图)叠加到 input0 的上面,出来的产品叫做 [logo]
然后下一句 [logo]ass=source.ass[sub] 中,可以把中间那个ass滤镜当做一个1输入1输出的管子,这个管子对每个视频流进行处理,在视频上打上字幕,出来的产品叫做 [sub]
最终把这个 [sub] 映射到 output.final.mp4 上面
这样处理出来的视频logo和字幕都有了,但还有一个问题:音频流全部丢失,处理出来的是无声视频,大致猜测是由于我们只处理了视频流,导致音频流丢失。
又是一番搜索,终于在 这里 看到了一点蛛丝马迹
也就是把第一个输入(input0)的第一个音轨(stream0)映射到输出中
手残的我在命令里加入了一句 -map 0,0
误打误撞居然有声音了
我也不知道为什么,难道说是我的版本把这个命令的用法改了??有人知道吗
附上我的环境
FFmpeg 硬编码字幕 fontconfig 错误
【中文标题】FFmpeg 硬编码字幕 fontconfig 错误【英文标题】:FFmpeg hardcoding subtitles fontconfig error 【发布时间】:2017-09-14 06:43:49 【问题描述】:我试图在虚拟机上运行命令:ffmpeg -i vid1.mp4 -vf "ass=subtitle.ass" vidOut.mp4
并遇到错误:
Fontconfig error: Cannot load default config file
No usable fontconfig configuration file found, using fallback.
Fontconfig error: cannot load default config file
ffmpeg
然后完成了命令运行,但它生成的视频没有字幕。我尝试添加一个 fonts.conf 文件,并设置FC_CONFIG_FILE= C:\ffmpeg\fonts.conf and FC_CONFIG_DIR= C:\ffmpeg\
,但我仍然遇到同样的错误。
我在我的普通机器上使用相同的 ASS 和 mp4 文件运行相同的代码,并且代码运行良好。对我的问题的任何建议将不胜感激。
编辑:我正在使用 FFmpeg 版本 3.3.3 的静态构建
【问题讨论】:
【参考方案1】:事实证明,在使用命令时直接指定 ffmpeg 的路径可以解决问题。 C:\ffmpeg\bin\ffmpeg -i vid1.mp4 -vf "ass=subtitle.ass" vidOut.mp4
完美运行
【讨论】:
以上是关于使用ffmpeg压制硬字幕与logo的主要内容,如果未能解决你的问题,请参考以下文章