BtbN / FFmpeg-Builds

MIT License
7.43k stars 1.03k forks source link

Add "--enable-libharfbuzz" to default build to re-enable drawtext #297

Closed Black-Platypus closed 1 year ago

Black-Platypus commented 1 year ago

drawtext is currently not working anymore under the current build args without libharfbuzz https://trac.ffmpeg.org/ticket/10570#comment:2

JonnyTech commented 1 year ago

I noticed that too today, do you know when was the last working version with drawtext?

BtbN commented 1 year ago

The library should probably be autodetected by FFmpeg, it's not nonfree or anything.

JonnyTech commented 1 year ago

Confirmed - build N-112119-gda1d56776c works as expected. Thanks for the quick fix.

sebmasterid commented 1 year ago

drawtext is currently not working anymore in version 6 again.

BtbN commented 1 year ago

I see no reason why that would be the case. 6.0 configure does not even know about libharfbuzz: https://git.videolan.org/?p=ffmpeg.git;a=blob;f=configure;hb=refs/heads/release/6.0 6.0 should still work fine without it being explicitly enabled. In fact, trying to enable it would break the build.

sebmasterid commented 1 year ago

Maybe it is not the good place to post this issue. I use the latest static build in a docker container (wget, extract and cp your latest ffmpeg build). I can use anymore the drawtext filter after a rebuild of my container. I can encode mp4 without drawtext filter.

Drawtext filter works again when I revert to a previous version, ffmpeg-5.1.1-amd64-static.tar.xz for instance.

PS : not a docker relative issue.

BtbN commented 1 year ago
$ ./ffmpeg-n6.0-latest-win64-gpl-6.0/bin/ffmpeg.exe -filters |& grep drawtext
 T.C drawtext          V->V       Draw text on top of video frames using libfreetype library.
$ ./ffmpeg-n5.1-latest-win64-gpl-5.1/bin/ffmpeg.exe -filters |& grep drawtext
 T.C drawtext          V->V       Draw text on top of video frames using libfreetype library.
$ ./ffmpeg-master-latest-win64-gpl/bin/ffmpeg.exe -filters |& grep drawtext
 T.C drawtext          V->V       Draw text on top of video frames using libfreetype library.

All versions got the drawtext filter enabled just fine. It was only an issue for a few days with the master builds, cause of the new libharfbuzz dependency. Nothing changed on all release branches. None of that got backported there. So your issue must be something else. You will need to be more specific than "does not work".

sebmasterid commented 1 year ago

With 5.1.1 : /var/www/ktt # ffmpeg ffmpeg version 5.1.1-static https://johnvansickle.com/ffmpeg/ Copyright (c) 2000-2022 the FFmpeg developers ffmpeg -i /var/www/ktt/var/upload/sharedMovie/192_movie.mp4 -filter_complex "[0]scale=1920:1080:force_original_aspect_ratio=decrease,pad=1920:1080:(ow-iw)/2 :(oh-ih)/2[b];[b]drawtext=fontfile=/var/www/ktt/web/fonts:text= : timecode='00\:00\:00\:00': r='30': x=10: y=10: fontcolor=white: fontsize=50: box=1: boxcolor=0x00000000@1 " -f mp4 -vcodec libx264 -b:v 3M -preset medium /var/www/ktt/var/upload/sharedMovie/192ffmpeg -i /var/www/ktt/var/upload/sharedMovie/192_movie.mp4 -filter_complex "[0]scal e=1920:1080:force_original_aspect_ratio=decrease,pad=1920:1080:(ow-iw)/2:(oh-ih)/2[b];[b]drawtext=fontfile=/var/www/ktt/web/fonts:text= : timecode='00\:00\:00\:00': r='30' : x=10: y=10: fontcolor=white: fontsize=50: box=1: boxcolor=0x00000000@1" -f mp4 -vcodec libx264 -b:v 3M -preset medium /var/www/ktt/var/upload/sharedMovie/192_movie_1.mp4 It runs flawless

Same with version 6 (wget https://johnvansickle.com/ffmpeg/builds/ffmpeg-git-amd64-static.tar.xz) /var/www/ktt # ffmpeg ffmpeg version N-67181-g984d0b6e6f-static https://johnvansickle.com/ffmpeg/ Copyright (c) 2000-2023 the FFmpeg developers built with gcc 8 (Debian 8.3.0-6) /var/www/ktt # ffmpeg -i /var/www/ktt/var/upload/sharedMovie/192_movie.mp4 -filter_complex "[0]scale=1920:1080:force_original_aspect_ratio=decrease,pad=1920:1080:(ow-iw)/2 :(oh-ih)/2[b];[b]drawtext=fontfile=/var/www/ktt/web/fonts:text= : timecode='00\:00\:00\:00': r='30': x=10: y=10: fontcolor=white: fontsize=50: box=1: boxcolor=0x00000000@1 " -f mp4 -vcodec libx264 -b:v 3M -preset medium /var/www/ktt/var/upload/sharedMovie/192ffmpeg -i /var/www/ktt/var/upload/sharedMovie/192_movie.mp4 -filter_complex "[0]scal e=1920:1080:force_original_aspect_ratio=decrease,pad=1920:1080:(ow-iw)/2:(oh-ih)/2[b];[b]drawtext=fontfile=/var/www/ktt/web/fonts:text= : timecode='00\:00\:00\:00': r='30' : x=10: y=10: fontcolor=white: fontsize=50: box=1: boxcolor=0x00000000@1" -f mp4 -vcodec libx264 -b:v 3M -preset medium /var/www/ktt/var/upload/sharedMovie/192_movie_1.mp4 -hide_banner [AVFilterGraph @ 0x6832b80] No such filter: 'drawtext' Failed to set value '[0]scale=1920:1080:force_original_aspect_ratio=decrease,pad=1920:1080:(ow-iw)/2:(oh-ih)/2[b];[b]drawtext=fontfile=/var/www/ktt/web/fonts:text= : timecode='00\:00\:00\:00': r='30': x=10: y=10: fontcolor=white: fontsize=50: box=1: boxcolor=0x00000000@1' for option 'filter_complex': Filter not found Error parsing global options: Filter not found

BtbN commented 1 year ago

Both of those builds are not from here.

sebmasterid commented 1 year ago

Sorry. :-( I will try your build. Many thanks for all your help.