이미지 크기에 관계없이 크기가 조정된 비디오 위에 Ffmpeg 그리기 텍스트 표시

이미지 크기에 관계없이 크기가 조정된 비디오 위에 Ffmpeg 그리기 텍스트 표시

ffmpeg를 사용하여 단일 이미지로 비디오를 만들고 비디오 위에 텍스트를 그립니다.

drawtext이미지 크기 대신 크기가 조정된 비디오 크기 위에 오버레이하려면 어떻게 해야 합니까 ?

지금은 텍스트를 추가할 때 X와 Y가 크기가 조정된 비디오 자체가 아닌 이미지의 왼쪽 상단에서 시작됩니다. 이미지는 비디오 스케일보다 크기가 작기 때문에 이미지 크기에 관계없이 텍스트를 그려야 합니다. 텍스트가 이미지 크기를 벗어나면 잘립니다. 하지만 크기가 조정된 나머지 비디오의 채워지지 않은 검은색 테두리는 그대로 남아 있습니다.

이것이 내가 사용하는 명령입니다.

ffmpeg -loop 1 -r 1 -i image.jpg -b:v 1M -vf "scale=320:240, drawtext=fontfile=/usr/share/fonts/truetype/dejavu/DejaVuSerif-Bold.ttf: text='Test Text': x=200: y=100: fontsize=30: [email protected]: box=1: [email protected]" -t 20 output.mp4

답변1

이미지가 유일한 비디오 소스인 경우 비디오그냥이미지와 "비디오의 왼쪽 상단에서 오버레이"는 "와 같은 뜻이다.이미지의 왼쪽 상단부터 오버레이". 그래서 당신은 올바르게하고 있습니다.

말씀하신 검은색 테두리는~ 아니다영상의 일부. 에 의해 삽입됩니다.일부미디어 플레이어 제어판이 비디오보다 넓기 때문에 매우 좁은 비디오를 열 때 미디어 플레이어. 예를 들어 VLC 미디어 플레이어는 컨트롤/메뉴 막대가 상당히 넓으며 비디오에 큰 테두리를 추가합니다. 그러나 Windows Media Player의 컨트롤은 320p 비디오 너비에 맞기 때문에 검은색 테두리가 표시되지 않습니다.

답변2

아래 명령으로 작업했습니다.

ffmpeg -loop 1 -i image.jpg -r 29.970 -c:v libx264 -t 15 -pix_fmt yuv420p -profile:v high -level 4.2 -vf "scale=1920:1080, drawtext = text='Resumes in %{eif\:15-t\:d}': x=200: y=100: fontsize=30: [email protected]: box=1: [email protected]" out.mp4

관련 정보