[FFmpeg-user] text overlay will not work on rtmp stream

Anthony Griffiths neuronetv at gmail.com
Thu Sep 20 17:25:16 EEST 2018


On Thu, Sep 20, 2018 at 12:27 PM, Moritz Barsnick <barsnick at gmx.net> wrote:
> On Thu, Sep 20, 2018 at 10:24:55 +0100, Anthony Griffiths wrote:
>> On Thu, Sep 20, 2018 at 9:59 AM, Carl Eugen Hoyos <ceffmpeg at gmail.com> wrote:
>> > 2018-09-20 10:46 GMT+02:00, Anthony Griffiths <neuronetv at gmail.com>:
>> >
>> > The problem was not that you used "-f flv -vcodec libx264" but
>> > "-f flv -vcodec flv -vcodec libx264"
>>
>> now I'm really puzzled, because in the command I just gave there's -f
>> flv and -codec:v libx264, there is no -vcodec flv or -vcodec libx264
>
> It was an error in your second command given, where you had written:
> "whats strange is this command does work with text overlay".
>
> I'm now assuming this is the command you wish to get working:
>> dvgrab -format dv1 - | \
>> /home/<me>/Downloads/ffmpeg-git-20180920-64bit-static/ffmpeg \
>> -deinterlace -f dv -i - -f flv -y \
>> -vf [in]drawtext="fontfile=/home/<me>/packages/Fonts/verdana.ttf:textfile=/home/<me>/screentext.txt:fontcolor=white:fontsize=20:x=30:y=30:reload=1"[out] \
>> -codec:v libx264 -preset slow -aspect 16:9 -s 320x180 -b:v 1500k -maxrate 500k -bufsize 1000k -vf scale=-1:240 -threads 0
>> -framerate 15 -qscale:v 20 -codec:a aac -b:a 64k -af aformat=s16:44100 rtmp://<ip-address>/<name-nginx>"
>
> Correct?
>
> One thing to always first do when debugging is to e.g. change the
> output to a file, such as output.mkv or output.mp4, and see whether the
> desired effect is missing there as well.
>
> Your issue is likely:
> You're passing "-vf" twice. Only one of them is taken into
> consideration! (Perhaps ffmpeg should warn, but it isn't implemented to
> do so right now.) That's why your drawfile is probably ignored. "ffmpeg
> -loglevel debug" would show the actually used filter chains. (Even
> without the loglevel, it should be obvious what is missing.)
>
> If you want several filters, you need to combine them to a chain:
> $ -vf "drawtext=...,scale=..."
>
> I don't think "-vf" actually handles "[in]" and "[out]" - you're not
> even telling it what "[in]" is, so this "-vf" option is obviously just
> being ignored.
>
> Additional remarks:
>
> "-deinterlace" inserts a deinterlace filter somewhere. I'm not sure
> about the cross-effect on "-vf", so better to explicitly insert a
> particular deinterlace filter in your chain.
>
> I don't know what the effect of "-vf scale=-1:240 -s 320x180" is. I
> believe the latter argument inserts (another) scale filter at the end.
> Why not just "-vf scale=-1:180" and drop "-s ..."?? You need to think
> about what you are trying to achieve, and best put all into one filter
> chain, e.g.:
>
> $ ffmpeg -i input -vf "yadif=...,drawtext=fontfile=/home/<me>/packages/Fonts/verdana.ttf:textfile=/home/<me>/screentext.txt:fontcolor=white:fontsize=20:x=30:y=30:reload=1,scale=-1:180" [...]
>
> Cheers,
> Moritz

moritz thankyou very much you cracked it for me. I now have text
overlay working. The thing that did it (I think) was removing '-vf
scale=-1:240' as you said. I also removed -deinterlace and also
removed '[in][out]' and the command still worked. (shows I didn't need
them).and the stream still works on a smartphone which is great.
thanks again.


More information about the ffmpeg-user mailing list