displaying real time text on output

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
4 messages Options
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

displaying real time text on output

tasos
Hello.
I know that this may be a stupid question but is it possible while
encoding to apply a filter that displays text for example?
I mean ffmpeg is already running and produces output.
I don't want to take that output and apply the text filter there.I want
to apply it on the already
running ffmpeg process.
Thanks!
_______________________________________________
ffmpeg-user mailing list
[hidden email]
http://ffmpeg.org/mailman/listinfo/ffmpeg-user

To unsubscribe, visit link above, or email
[hidden email] with subject "unsubscribe".
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: displaying real time text on output

DopeLabs
you can use the drawtext filter.

i have several drawtext filters i run, displaying audio track titles, site name, original air date (or 'LIVE' if live).

the trick to having the text update mid stream or mid encode is to specify textfile="/path/file.txt":reload=1

reload=1 will cause ffmpeg to check the file every frame.

you need to update the file atomically or ffmpeg may partially read the file, or even fail.

you can achieve this by not editing the file with an editor or even using echo "text" > file.txt...

but instead save a new temp file, then mv tempfile.txt file.txt

here is an example of one that i use:

______

"drawtext=fontfile=/path/font.ttf:fontsize=28:fix_bounds=true:fontcolor=gray:alpha=.5:textfile=/path/file.txt:reload=1:y=(h-text_h)-5:x=(w-text_w)/2"
______


this creates semi transparent gray text at the top center of the frame, will auto scale if the amount of text exceeds the width of the frame so text wont get truncated.

if you are using this in a livestream scenario, you can see the text updates in real time.



i have not tried this when the input or output are not live streams...

i would suspect it would be kind of hard to get the timing right since the input/output can be read/written faster than real time.  


on a side note:
im currently trying to figure out if its possible to use text expansion to pull metadata values from within the stream, and use in drawtext output.

an example would be an mp3 audio live stream such as icecast or shoutcast, when song titles change in the stream, to display that value in drawtext output which updates mid-stream.

it looks like it could be done but im just struggling a bit trying to figure out the correct syntax, metadata keys, etc.

so if anyone has any insight on that. im all ears.

-DL

> On Aug 6, 2017, at 11:39 43AM, tasos <[hidden email]> wrote:
>
> Hello.
> I know that this may be a stupid question but is it possible while encoding to apply a filter that displays text for example?
> I mean ffmpeg is already running and produces output.
> I don't want to take that output and apply the text filter there.I want to apply it on the already
> running ffmpeg process.
> Thanks!
> _______________________________________________
> ffmpeg-user mailing list
> [hidden email]
> http://ffmpeg.org/mailman/listinfo/ffmpeg-user
>
> To unsubscribe, visit link above, or email
> [hidden email] with subject "unsubscribe".

_______________________________________________
ffmpeg-user mailing list
[hidden email]
http://ffmpeg.org/mailman/listinfo/ffmpeg-user

To unsubscribe, visit link above, or email
[hidden email] with subject "unsubscribe".
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: displaying real time text on output

tasos
Hello.
Thank you very much i will try give it a try!
Well you could use an external program that would read the metadata and
write to your txt file.
But i suppose there's another solution by using ffmpeg and not an
external program.
I hope someone will tell you how to do it.
Thanks again!


On 8/7/2017 12:43 AM, DopeLabs wrote:

> you can use the drawtext filter.
>
> i have several drawtext filters i run, displaying audio track titles, site name, original air date (or 'LIVE' if live).
>
> the trick to having the text update mid stream or mid encode is to specify textfile="/path/file.txt":reload=1
>
> reload=1 will cause ffmpeg to check the file every frame.
>
> you need to update the file atomically or ffmpeg may partially read the file, or even fail.
>
> you can achieve this by not editing the file with an editor or even using echo "text" > file.txt...
>
> but instead save a new temp file, then mv tempfile.txt file.txt
>
> here is an example of one that i use:
>
> ______
>
> "drawtext=fontfile=/path/font.ttf:fontsize=28:fix_bounds=true:fontcolor=gray:alpha=.5:textfile=/path/file.txt:reload=1:y=(h-text_h)-5:x=(w-text_w)/2"
> ______
>
>
> this creates semi transparent gray text at the top center of the frame, will auto scale if the amount of text exceeds the width of the frame so text wont get truncated.
>
> if you are using this in a livestream scenario, you can see the text updates in real time.
>
>
>
> i have not tried this when the input or output are not live streams...
>
> i would suspect it would be kind of hard to get the timing right since the input/output can be read/written faster than real time.
>
>
> on a side note:
> im currently trying to figure out if its possible to use text expansion to pull metadata values from within the stream, and use in drawtext output.
>
> an example would be an mp3 audio live stream such as icecast or shoutcast, when song titles change in the stream, to display that value in drawtext output which updates mid-stream.
>
> it looks like it could be done but im just struggling a bit trying to figure out the correct syntax, metadata keys, etc.
>
> so if anyone has any insight on that. im all ears.
>
> -DL
>
>> On Aug 6, 2017, at 11:39 43AM, tasos <[hidden email]> wrote:
>>
>> Hello.
>> I know that this may be a stupid question but is it possible while encoding to apply a filter that displays text for example?
>> I mean ffmpeg is already running and produces output.
>> I don't want to take that output and apply the text filter there.I want to apply it on the already
>> running ffmpeg process.
>> Thanks!
>> _______________________________________________
>> ffmpeg-user mailing list
>> [hidden email]
>> http://ffmpeg.org/mailman/listinfo/ffmpeg-user
>>
>> To unsubscribe, visit link above, or email
>> [hidden email] with subject "unsubscribe".
> _______________________________________________
> ffmpeg-user mailing list
> [hidden email]
> http://ffmpeg.org/mailman/listinfo/ffmpeg-user
>
> To unsubscribe, visit link above, or email
> [hidden email] with subject "unsubscribe".


_______________________________________________
ffmpeg-user mailing list
[hidden email]
http://ffmpeg.org/mailman/listinfo/ffmpeg-user

To unsubscribe, visit link above, or email
[hidden email] with subject "unsubscribe".
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: displaying real time text on output

DopeLabs
yea right now i have a cron fired script that will query the audio streaming server for the title, and if its different from the title thats in the txt file, atomically updates it.

it works just fine, but if i can get it all natively within ffmpeg that would be preferred . =]

oh.. and the code example i provided should place the text at the bottom center, not the top. sorry for the typo...


> On Aug 6, 2017, at 2:50 19PM, tasos <[hidden email]> wrote:
>
> Hello.
> Thank you very much i will try give it a try!
> Well you could use an external program that would read the metadata and write to your txt file.
> But i suppose there's another solution by using ffmpeg and not an external program.
> I hope someone will tell you how to do it.
> Thanks again!
>
>
> On 8/7/2017 12:43 AM, DopeLabs wrote:
>> you can use the drawtext filter.
>>
>> i have several drawtext filters i run, displaying audio track titles, site name, original air date (or 'LIVE' if live).
>>
>> the trick to having the text update mid stream or mid encode is to specify textfile="/path/file.txt":reload=1
>>
>> reload=1 will cause ffmpeg to check the file every frame.
>>
>> you need to update the file atomically or ffmpeg may partially read the file, or even fail.
>>
>> you can achieve this by not editing the file with an editor or even using echo "text" > file.txt...
>>
>> but instead save a new temp file, then mv tempfile.txt file.txt
>>
>> here is an example of one that i use:
>>
>> ______
>>
>> "drawtext=fontfile=/path/font.ttf:fontsize=28:fix_bounds=true:fontcolor=gray:alpha=.5:textfile=/path/file.txt:reload=1:y=(h-text_h)-5:x=(w-text_w)/2"
>> ______
>>
>>
>> this creates semi transparent gray text at the top center of the frame, will auto scale if the amount of text exceeds the width of the frame so text wont get truncated.
>>
>> if you are using this in a livestream scenario, you can see the text updates in real time.
>>
>>
>>
>> i have not tried this when the input or output are not live streams...
>>
>> i would suspect it would be kind of hard to get the timing right since the input/output can be read/written faster than real time.
>>
>>
>> on a side note:
>> im currently trying to figure out if its possible to use text expansion to pull metadata values from within the stream, and use in drawtext output.
>>
>> an example would be an mp3 audio live stream such as icecast or shoutcast, when song titles change in the stream, to display that value in drawtext output which updates mid-stream.
>>
>> it looks like it could be done but im just struggling a bit trying to figure out the correct syntax, metadata keys, etc.
>>
>> so if anyone has any insight on that. im all ears.
>>
>> -DL
>>
>>> On Aug 6, 2017, at 11:39 43AM, tasos <[hidden email]> wrote:
>>>
>>> Hello.
>>> I know that this may be a stupid question but is it possible while encoding to apply a filter that displays text for example?
>>> I mean ffmpeg is already running and produces output.
>>> I don't want to take that output and apply the text filter there.I want to apply it on the already
>>> running ffmpeg process.
>>> Thanks!
>>> _______________________________________________
>>> ffmpeg-user mailing list
>>> [hidden email]
>>> http://ffmpeg.org/mailman/listinfo/ffmpeg-user
>>>
>>> To unsubscribe, visit link above, or email
>>> [hidden email] with subject "unsubscribe".
>> _______________________________________________
>> ffmpeg-user mailing list
>> [hidden email]
>> http://ffmpeg.org/mailman/listinfo/ffmpeg-user
>>
>> To unsubscribe, visit link above, or email
>> [hidden email] with subject "unsubscribe".
>
>
> _______________________________________________
> ffmpeg-user mailing list
> [hidden email]
> http://ffmpeg.org/mailman/listinfo/ffmpeg-user
>
> To unsubscribe, visit link above, or email
> [hidden email] with subject "unsubscribe".

_______________________________________________
ffmpeg-user mailing list
[hidden email]
http://ffmpeg.org/mailman/listinfo/ffmpeg-user

To unsubscribe, visit link above, or email
[hidden email] with subject "unsubscribe".
Loading...