jifengg / ffmpeg-script

A script set that uses ffmpeg to implement various functions
GNU General Public License v3.0
101 stars 10 forks source link

ffmpeg.watermark.js的-fontfile疑似不生效 #1

Closed nankaine closed 5 days ago

nankaine commented 2 months ago
Rocky Linux release 9.2 (Blue Onyx)
Node.js v18.20.4.
ffmpeg version 5.1.4
node ffmpeg.watermark.js -i /root/bitestc/images/1test/output1.mp4 -fontsize 40 -fontcolor blue -left 0 -top 0 -text "左上角蓝色的40号文字" -fontfile yunfengfeiyunti.ttf 
开始处理。
输入文件(夹):/root/bitestc/images/1test/output1.mp4
待处理文件数量:1
开始处理:[ 1 / 1 ] /root/bitestc/images/1test/output1.mp4
字体文件不存在 /root/bitestc/ffmpeg-script/c:/Windows/Fonts/msyh.ttc
全部处理完成。即将退出脚本。
total 7876
drwxr-xr-x 3 root root    4096 Aug 27 12:17 docs
-rw-r--r-- 1 root root   13701 Aug 27 12:17 ffmpeg.images.rolling.js
-rw-r--r-- 1 root root   23452 Aug 27 12:17 ffmpeg.img2video.js
-rw-r--r-- 1 root root    8105 Aug 27 12:17 ffmpeg.subtitle.stack.js
-rw-r--r-- 1 root root   11772 Aug 27 12:17 ffmpeg.video2bookmark.js
-rw-r--r-- 1 root root   23804 Aug 27 12:17 ffmpeg.watermark.js
-rw-r--r-- 1 root root   35149 Aug 27 12:17 LICENSE
drwxr-xr-x 3 root root      79 Aug 27 12:17 preset
-rw-r--r-- 1 root root    5239 Aug 27 12:17 readme.md
-rw-r--r-- 1 root root 7928516 Aug 27 14:11 yunfengfeiyunti.ttf

你好,不管yunfengfeiyunti.ttf用相对和绝对地址,都不行。

nankaine commented 2 months ago

用实例测试了一下,我修改了ffmpeg.watermark.js中,默认的字体文件。 运行后,图片中没有看到水印效果。

jifengg commented 2 months ago

在文档docs/ffmpeg.watermark.help.md#多个水印信息的配置中有提到,-text之前的配置才对这个text生效。所以你的-fontfile需要放在-text前面。

第二个问题,没有水印效果的,可以加一个 -debug,看看输出的ffmpeg命令,手动执行看看。

脚本暂时未在linux上测试过。

nankaine commented 2 months ago

在文档docs/ffmpeg.watermark.help.md#多个水印信息的配置中有提到,-text之前的配置才对这个text生效。所以你的-fontfile需要放在-text前面。

第二个问题,没有水印效果的,可以加一个 -debug,看看输出的ffmpeg命令,手动执行看看。

脚本暂时未在linux上测试过。

尝试了一下,提示以下内容,看着有点像ffmpeg版本的问题。

[test-server]# node ffmpeg.watermark.js -i /root/picdir/images/1test/output1.mp4 -fontsize 40 -fontfile yunfengfeiyunti.ttf -text "左上角蓝色的40号文字" -debug
开始处理。
输入文件(夹):/root/picdir/images/1test/output1.mp4
待处理文件数量:1
开始处理:[ 1 / 1 ] /root/picdir/images/1test/output1.mp4
ffmpeg -y -hide_banner -i /root/picdir/images/1test/output1.mp4 -filter_complex [0:v]drawtext=text='左上角蓝色的40号文字':fontsize=40:fontcolor=white@1:x='w-tw-20':y='20':fontfile='/root/picdir/ffmpeg-script/yunfengfeiyunti.ttf':borderw=0:bordercolor=black@1:text_align=center+middle -shortest -crf 23 /root/picdir/images/1test/output1_watermark.mp4
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '/root/picdir/images/1test/output1.mp4':
  Metadata:
    major_brand     : isom
    minor_version   : 512
    compatible_brands: isomiso2avc1mp41
    encoder         : Lavf59.27.100
  Duration: 00:02:40.00, start: 0.000000, bitrate: 624 kb/s
  Stream #0:0[0x1](und): Video: h264 (High) (avc1 / 0x31637661), yuv420p(progressive), 1920x1080 [SAR 1:1 DAR 16:9], 622 kb/s, 25 fps, 25 tbr, 12800 tbn (default)
    Metadata:
      handler_name    : VideoHandler
      vendor_id       : [0][0][0][0]
      encoder         : Lavc59.37.100 libx264
[Parsed_drawtext_0 @ 0x55e89f9eb1c0] Option 'text_align' not found
[AVFilterGraph @ 0x55e89f9e4940] Error initializing filter 'drawtext' with args 'text=左上角蓝色的40号文字:fontsize=40:fontcolor=white@1:x=w-tw-20:y=20:fontfile=/root/picdir/ffmpeg-script/yunfengfeiyunti.ttf:borderw=0:bordercolor=black@1:text_align=center+middle'
Error initializing complex filters.
Option not found

1
[test-server]#

在windows行不方便运行,所以目前我也只有在linux上测试以下。 我先自己尝试一下,看下能否解决。

nankaine commented 2 months ago

在文档docs/ffmpeg.watermark.help.md#多个水印信息的配置中有提到,-text之前的配置才对这个text生效。所以你的-fontfile需要放在-text前面。

第二个问题,没有水印效果的,可以加一个 -debug,看看输出的ffmpeg命令,手动执行看看。

脚本暂时未在linux上测试过。

[AVFilterGraph @ 0x555aaf7c4cc0] No such filter: 'drawtext'
Failed to set value '[0:v]drawtext=text='左上角蓝色的40号文字':fontsize=40:fontcolor=blue@1:x='(w-tw)*0':y='(h-th)*0':fontfile='/root/ffmpeg-script/SIMYOU.TTF':borderw=0:bordercolor=black@1:text_align=center+middle' for option 'filter_complex': Filter not found
Error parsing global options: Filter not found

感觉linux的ffmpeg 有些特殊啊。

你好,能否提供一下您使用的win的ffmpeg的版本呢,我这边找了一个Ubuntu测试也不行。

希望能使用您所使用的ffmpeg尝试一下。

jifengg commented 2 months ago

在文档docs/ffmpeg.watermark.help.md#多个水印信息的配置中有提到,-text之前的配置才对这个text生效。所以你的-fontfile需要放在-text前面。 第二个问题,没有水印效果的,可以加一个 -debug,看看输出的ffmpeg命令,手动执行看看。 脚本暂时未在linux上测试过。

[AVFilterGraph @ 0x555aaf7c4cc0] No such filter: 'drawtext'
Failed to set value '[0:v]drawtext=text='左上角蓝色的40号文字':fontsize=40:fontcolor=blue@1:x='(w-tw)*0':y='(h-th)*0':fontfile='/root/ffmpeg-script/SIMYOU.TTF':borderw=0:bordercolor=black@1:text_align=center+middle' for option 'filter_complex': Filter not found
Error parsing global options: Filter not found

感觉linux的ffmpeg 有些特殊啊。

你好,能否提供一下您使用的win的ffmpeg的版本呢,我这边找了一个Ubuntu测试也不行。

希望能使用您所使用的ffmpeg尝试一下。

https://ffmpeg.org/download.html#build-linux

win和linux的ffmpeg我都是从这里下载,linux用 static build 的版本。