FFmpeg를 사용하여 라이브 비디오에 티커/다양한 텍스트를 추가하려면 어떻게 해야 합니까?

FFmpeg를 사용하여 라이브 비디오에 티커/다양한 텍스트를 추가하려면 어떻게 해야 합니까?

방송하기 전에 하드 디스크에 있는 비디오에 명령을 사용하여 텍스트를 추가할 수 있습니다.

ffmpeg -y -i IMG_0696.MOV -acodec libmp3lame -vcodec msmpeg4 \
-b:a 192k -b:v 1000k -ar 44100 \
-vf "drawtext=text=string1 string2 string3 string4 string5 string6 string7 :expansion=normal:fontfile=/Windows/Fonts/cambriai.ttf: y=0:x=h-(2*lh)-n: fontcolor=white: fontsize=40: box=1: boxcolor=0x00000000@1" \
-an IMG_0696.avi

이제 다양한 시점에 다양한 텍스트를 추가하고 싶습니다. 형식이 다음과 같은 파일에서 읽어야 합니다. 예를 들어

00:00:10 : 구글
00:00:20 : 야후
00:00:30 : msft
.
.
.
00:00:60 : 오전
.
.
.
00:05:30 : 자바

ffmpeg가 파일을 읽고 지정된 시간에 텍스트를 추가하도록 하는 방법이 있습니까? 결국 동영상을 방송하기 전에 동영상에 라이브 티커 기호를 추가하고 싶습니다.

답변1

에서drawtext필터 의 소스 코드( 소스 트리에서) 그릴 문자열이 포함된 파일의 경로를 지정할 수 있는 매개변수가 libavfilter/vf_drawtext.c있는 것 같습니다 ( 귀하의 예에서와 같이 매개변수를 설정하는 것과는 대조적입니다). 파일 경로를 로 전달 하고 비디오 출력을 보면서 파일을 업데이트하여 실험해 볼 수 있습니다 .textfiletexttextfile

파일을 업데이트하기 위해 병렬로 실행되는 다른 프로그램/데몬도 필요하지만(표시할 현재 텍스트만 포함) 이 프로그램은 시스템 시계와 동기화할 수 있다고 가정하면 상당히 간단합니다.


또는 drawtext필터 자체를 수정하여 현재 시간 코드를 기반으로 특정 문자열을 표시할 수 있습니다(~이다FFmpeg 필터에 사용 가능). 이를 위해서는 필터의 소스 코드를 수정하고 처음부터 다시 컴파일해야 하지만 병렬로 실행되는 별도의 프로그램/데몬을 사용하지 않아도 됩니다(FFmpeg가 문자열을 그리려고 할 때마다 자체 코드가 호출되므로).

그러나 textfile매개변수가 작동한다고 가정하면(읽기:는 매 프레임마다 업데이트됨) 텍스트 파일을 업데이트하는 간단한 데몬을 Python과 같은 스크립팅 언어로 작성할 수 있으므로 아마도 더 나은 방법일 것입니다.

관련 정보