
방송하기 전에 하드 디스크에 있는 비디오에 명령을 사용하여 텍스트를 추가할 수 있습니다.
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
있는 것 같습니다 ( 귀하의 예에서와 같이 매개변수를 설정하는 것과는 대조적입니다). 파일 경로를 로 전달 하고 비디오 출력을 보면서 파일을 업데이트하여 실험해 볼 수 있습니다 .textfile
text
textfile
파일을 업데이트하기 위해 병렬로 실행되는 다른 프로그램/데몬도 필요하지만(표시할 현재 텍스트만 포함) 이 프로그램은 시스템 시계와 동기화할 수 있다고 가정하면 상당히 간단합니다.
또는 drawtext
필터 자체를 수정하여 현재 시간 코드를 기반으로 특정 문자열을 표시할 수 있습니다(~이다FFmpeg 필터에 사용 가능). 이를 위해서는 필터의 소스 코드를 수정하고 처음부터 다시 컴파일해야 하지만 병렬로 실행되는 별도의 프로그램/데몬을 사용하지 않아도 됩니다(FFmpeg가 문자열을 그리려고 할 때마다 자체 코드가 호출되므로).
그러나 textfile
매개변수가 작동한다고 가정하면(읽기:는 매 프레임마다 업데이트됨) 텍스트 파일을 업데이트하는 간단한 데몬을 Python과 같은 스크립팅 언어로 작성할 수 있으므로 아마도 더 나은 방법일 것입니다.