비디오 파일을 녹화할 때 배경색에 따라 ffmpeg를 사용할 때 워터마크 텍스트 색상을 동적으로 변경하는 방법이 있습니까?

비디오 파일을 녹화할 때 배경색에 따라 ffmpeg를 사용할 때 워터마크 텍스트 색상을 동적으로 변경하는 방법이 있습니까?

명령 프롬프트 창의 다음 명령은 제대로 작동하며 전체 화면을 기록합니다.

ffmpeg -f gdigrab -framerate 24 -i desktop -preset ultrafast -pix_fmt yuv420p out.mp4

이 명령 프롬프트는 화면 중앙에 흰색으로 워터마크 텍스트를 추가합니다.

ffmpeg -f gdigrab -framerate 24 -i desktop -vf "drawtext=fontfile=path/to/arial.ttf:text='All rights reserved to ...':fontsize=24:fontcolor=white:x=(w-text_w)/2:y=(h-text_h)/2" -preset ultrafast -pix_fmt yuv420p out.mp4

문제는 워터마크 텍스트가 흰색이고 배경 창 색상이 검은색인 경우에만 볼 수 있다는 것입니다. 예를 들어 ffmpeg 콘솔 창을 앞으로 가져올 때:

워터마크 텍스트

하지만 흰색 배경의 창을 녹화할 때는 텍스트가 흰색이기 때문에 볼 수 없습니다.

어떻게든 동적으로 만들기 위해 ffmpeg의 명령 프롬프트를 업데이트하고 싶습니다. 따라서 배경 창이 검은색이면 워터마크 텍스트를 흰색으로 표시한 다음 배경이 흰색인 창을 불러오면 워터마크 텍스트를 자동으로 검은색으로 변경합니다.

이것은 동적 효과를 위해 시도한 명령이지만 작동하지 않았습니다. 오류가 발생하고 많은 버전의 명령줄을 시도했지만 도움이 되거나 작동하지 않았습니다.

ffmpeg -f gdigrab -framerate 24 -i desktop -filter_complex "[0:v]drawtext=text='Watermark Text':x=(w-text_w)/2:y=(h-text_h)/2:fontfile=arial.ttf:fontsize=24,format=rgba [txt];[txt]split=2 [bw][wc];[bw]lut=r=val*2 [b];[wc]lut=r=val*0.5+0.5:g=val*0.5+0.5:b=val*0.5+0.5 [wc];[wc][b]alphamerge [wm];[wm][0:v]overlay=10:10[outv]" -c:v libx264 -preset ultrafast -map "[outv]" out.mp4

그리고 이것도 시도했다

ffmpeg -f gdigrab -framerate 24 -i desktop -filter_complex "[0:v]drawtext=text='Watermark Text':x=(w-text_w)/2:y=(h-text_h)/2:fontfile=Arial.ttf:fontsize=24,format=rgba [txt];[txt]split=2 [bw][wm];[bw][1:v]split=3 [b][g][r];[b]geq=r=0:g=0.5:b=0 [b];[g]geq=r=0:g=0:b=0.5 [g];[r]geq=r=0.5:g=0:b=0 [r];[wm][b][g][r]merge=3,format=rgba [watermark];[0:v][watermark]overlay=x=(W-w)/2:y=(H-h)/2" -map "[watermark]" -map 0:a? -c:v libx264 -c:a copy -preset ultrafast out.mp4

관련 정보