用FFmpeg内嵌ASS字幕时出现这种错误提示该怎么解决?
dwing吧
全部回复
仅看楼主
level 1
北河二_2 楼主
我知道用AVS很简单,但就是想试试用FFmpeg内嵌字幕= =
参数如下:
ffmpeg -i "%~1" -vf scale=1024:-1,ass=%~dpn1.ass -codec:v libx264 -level 4.1 -preset slower -tune film -crf 19 -codec:a libfdk_aac -profile:a aac_he "%~dpn1_v.mp4"
去掉“,ass=%~dpn1.ass”之后一切正常。
2016年04月06日 10点04分 1
level 8
好像是得整个 fonts.conf
2016年04月07日 02点04分 3
应该不是的,缺fonts.conf和这个是不一样的。ffmpeg现在应该是把fonts.conf编译进去了
2016年04月07日 05点04分
@北河二_2 和这个提示是不一样的
2016年04月07日 05点04分
level 1
北河二_2 楼主
找到原因了= =
字幕文件只能指定文件名,不能指定路径,把字幕放到FFmpeg所在的文件夹就行了
2016年04月07日 05点04分 4
所以网上关于win下设置fonts.conf的教程不用看了,包括官方的wiki,是有多么的坑人。
2017年01月06日 06点01分
level 1
我感觉啊,-vf 后的无论字幕还是图片,都得是在目录下。
-vf "movie=无标题.png [logo];[in][logo] overlay=0:0 [out]"
上面那个movie后的也是放在目录下,搞个绝对路径也是报错的。
把后面那个[out]去掉也没问题,但是-vf后面的双引号不能去掉,不然也报错……
反而楼主的-vf后面不用加双引号,我是不懂,为什么?
2016年04月10日 01点04分 5
双引号是为了让ffmpeg正确的识别一个整体.. 比如说你没有双引号的时候文件名中存在一个空格.. 那么就会被当成两个东西拆开解读..
2016年04月10日 17点04分
@376389237 你是对的,哎呀,编程语言、脚本、命令行之间的东西都是可以互通的,但是码字的格式不同。于明白程序员为何上多少万的代码多了个空格的引发的BUG那种痛苦了。
2016年04月11日 05点04分
%~这个是什么意思?
2016年04月11日 05点04分
level 1
-vf 后用ass滤镜的话很容易报错,你根本不知道什么原因。用subtitles的话就没问题,看了下FFMPEG的文档,两个滤镜都是调用了libass。但wiki文档说ass滤镜在win环境下要搞什么font.conf才不出问题。
2016年04月28日 09点04分 6
level 13
ffmpeg处理subtitles的时候有转义字符的陷阱,非常难搞,需要将整个字幕文件路径用单引号引起来,然后特殊字符再加\转义之后传递进去才可以。具体的解释参见ffmpeg的官方文档:
https://ffmpeg.org/ffmpeg-utils.html#Quoting-and-escaping
如果你的文件路径没有任何特殊字符,也没有空格,那么恭喜你,不用怎么折腾,否则你得自己写脚本去处理。比如我在linux下写的ffmpeg转码的脚本,在字幕文件路径处理这里专门写了个函数去搞,调试了快一天。大体的思路是人工对特殊字符加上\\,然后在人工加上'',拼接成完整的参数传递给subtitle这个filter: https://github.com/abcfy2/simple_video_compress_build/blob/master/convert.sh#L97
2017年01月07日 03点01分 7
1