[FFmpeg-user] drawtext so that it cover whole page
anshul
anshul.ffmpeg at gmail.com
Mon Jan 27 12:38:49 CET 2014
On 01/27/2014 04:04 PM, anshul wrote:
> On 01/27/2014 03:52 PM, Carl Eugen Hoyos wrote:
>> anshul <anshul.ffmpeg <at> gmail.com> writes:
>>
>>> I want to use drawtext filter of ffmpeg so that my
>>> fontsize is automatically increased in such a way,
>>> so that it cover whole frame.
>> What happens if you set the video height as fontsize?
>>
>> Carl Eugen
>>
>> _______________________________________________
>> ffmpeg-user mailing list
>> ffmpeg-user at ffmpeg.org
>> http://ffmpeg.org/mailman/listinfo/ffmpeg-user
> If i set fontsize as some percentage of video height, then it would
> work only for single word not for paragraphs
>
> I am looking for solution for paragraphs, just now my code is too
> dirty it works some time but
> also fails many time, since I have not consider actual rndered height
> but it I am considering max_glyph_w max_glyph_h
> for a particular font on basis of font size
>
> If anyone interested, this is some part of my code in python
>
> //arialbd character have 4/3 w/h ratio
> font_size = int(math.sqrt( (w*h*4)/ (len(istr) *3) ))
>
> if mlen > (w/font_size):
> font_size = w/mlen
>
> line_split = 2*(w/font_size)
> font_size = str(font_size)
> out_word = ""
> sword = ""
> num_lines = 1
> for word in istr.split(" "):
> if len(sword + word) > line_split:
> out_word = out_word + sword + "\f"
> sword = word
> num_lines += 1
> else:
> sword = sword + " " + word
> out_word = out_word + sword
>
>
>
>
> Thanks
> Anshul
Hi
I have generated the code to wrap all the text according aspect ratio in C++
std::string test_str = "String geometry\n\nThis is a long string
meant to display in a"
"in One Frame. Some lines are very long, and then again
there are paragraph"
"breaks.\n\nThe text widget shall wrap words, but be
neither too big nor too"
"small, and have a pleasing aspect ratio (say, in pixels,
4:3 or 8:3).";
int nl_count = 0;
double test_len = (double)test_str.length();
double w0 = 0;
double h0 = 0;
for(unsigned int i =0;i<test_str.length();i++)
{
if(test_str.at(i) == '\n')
nl_count++;
}
w0 = round(8.0/3.0 * sqrt(test_len));
h0 = round(3.0/8.0 * sqrt(test_len)) + nl_count;
std::cout <<w0<<"\t"<<h0<<std::endl;
if any one think that it would be good idea to add one more flag of
autofit text on image in draw text filter
I could change this code to fit the need of convention of ffmpeg.
any way if some one else want to use the drawtext in autofit way he can
use this code, and ratio of h0 and videoheight
Thanks
Anshul
More information about the ffmpeg-user
mailing list