I'm trying to change filter arguments (text value) during runtime with sendcmd commands but I'm having trouble sendcmd and drawtext understanding sent input. Same thing works when sent from zmq filter.
ffmpeg is started as: ``` ffmpeg -stdin -dumpgraph 1 -y -fflags nobuffer -f lavfi -re \ -i "testsrc=size=1280x720:rate=25[x];[x]drawtext=fontsize=30:text=hello:x=(w-text_w)/2:y=(h-text_h)/2" \ -an -c:v libx264 -r 25 -crf 30 -preset fast -pix_fmt yuv420p -flags +cgop -g 50 \ -f hls -segment_list_flags live \ -hls_flags delete_segments+append_list \ -hls_time 2 \ -hls_list_size 5 \ -hls_delete_threshold 5 \ -hls_wrap 5 \ -hls_segment_filename /var/www/html/stream/%d.ts \ /var/www/html/stream/index.m3u8 ``` Filter that I want to change during runtime is `Parsed_drawtext_1` So I press ```C``` and copy/paste into window ```Parsed_drawtext_1 -1 reinit text='test'``` and it instead of changing text displayed I see ``` Enter command: <target>|all <time>|-1 <command>[ <argument>] Parsed_drawtext_1 -1 reinit text='test'^M Command reply for stream 0: ret:-38 res: ``` So far looking at code I assume sendcmd finds filter and sends to drawtext filter, but drawtext returns exit code 38 (not implemented) What I'm doing wrong? This filter can be changed when I send with ZeroMq `Parsed_drawtext_1 reinit text='test'` and ZeroMq filter uses pretty much same code as sendcmd. ffmpeg executable stdin handling: https://github.com/FFmpeg/FFmpeg/blob/b577968cabae4a0927adcf5d7c24fca5a7a8385d/fftools/ffmpeg.c#L3942 sendcmd code: 1. find matching filter https://github.com/FFmpeg/FFmpeg/blob/b577968cabae4a0927adcf5d7c24fca5a7a8385d/libavfilter/avfiltergraph.c#L1297 2. calls 'process_command' on filter https://github.com/FFmpeg/FFmpeg/blob/b577968cabae4a0927adcf5d7c24fca5a7a8385d/libavfilter/avfilter.c#L555 3. drawtext command https://github.com/FFmpeg/FFmpeg/blob/b577968cabae4a0927adcf5d7c24fca5a7a8385d/libavfilter/vf_drawtext.c#L877 vs zmq filter code: https://github.com/FFmpeg/FFmpeg/blob/master/libavfilter/f_zmq.c#L177 Full Program output: ``` user@user:~/$ ffmpeg -stdin -dumpgraph 1 -y -fflags nobuffer -f lavfi -re -i "testsrc=size=1280x720:rate=25[x];[x]drawtext=fontsize=30:text=hello:x=(w-text_w)/2:y=(h-text_h)/2" -an -c:v libx264 -r 25 -crf 30 -preset fast -pix_fmt yuv420p -flags +cgop -g 50 -f hls -segment_list_flags live -hls_flags delete_segments+append_list -hls_time 2 -hls_list_size 5 -hls_delete_threshold 5 -hls_wrap 5 -hls_segment_filename /var/www/html/stream/%d.ts /var/www/html/stream/index.m3u8 ffmpeg version 4.1.4-1build2 Copyright (c) 2000-2019 the FFmpeg developers built with gcc 9 (Ubuntu 9.2.1-4ubuntu1) configuration: --prefix=/usr --extra-version=1build2 --toolchain=hardened --libdir=/usr/lib/x86_64-linux-gnu --incdir=/usr/include/x86_64-linux-gnu --arch=amd64 --enable-gpl --disable-stripping --enable-avresample --disable-filter=resample --enable-avisynth --enable-gnutls --enable-ladspa --enable-libaom --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libcodec2 --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libgme --enable-libgsm --enable-libjack --enable-libmp3lame --enable-libmysofa --enable-libopenjpeg --enable-libopenmpt --enable-libopus --enable-libpulse --enable-librsvg --enable-librubberband --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libssh --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx265 --enable-libxml2 --enable-libxvid --enable-libzmq --enable-libzvbi --enable-lv2 --enable-omx --enable-openal --enable-opengl --enable-sdl2 --enable-libdc1394 --enable-libdrm --enable-libiec61883 --enable-chromaprint --enable-frei0r --enable-libx264 --enable-shared libavutil 56. 22.100 / 56. 22.100 libavcodec 58. 35.100 / 58. 35.100 libavformat 58. 20.100 / 58. 20.100 libavdevice 58. 5.100 / 58. 5.100 libavfilter 7. 40.101 / 7. 40.101 libavresample 4. 0. 0 / 4. 0. 0 libswscale 5. 3.100 / 5. 3.100 libswresample 3. 3.100 / 3. 3.100 libpostproc 55. 3.100 / 55. 3.100 [Parsed_drawtext_1 @ 0x55e4e3337e40] Using "/usr/share/fonts/truetype/noto/NotoSans-Regular.ttf" +------------------+ | Parsed_testsrc_0 |default--[1280x720 1:1 rgb24]--Parsed_drawtext_1:default | (testsrc) | +------------------+ +-------------------+ Parsed_testsrc_0:default--[1280x720 1:1 rgb24]--default| Parsed_drawtext_1 |default--[1280x720 1:1 rgb24]--out:default | (drawtext) | +-------------------+ +--------------+ Parsed_drawtext_1:default--[1280x720 1:1 rgb24]--default| out | | (buffersink) | +--------------+ Input #0, lavfi, from 'testsrc=size=1280x720:rate=25[x];[x]drawtext=fontsize=30:text=hello:x=(w-text_w)/2:y=(h-text_h)/2': Duration: N/A, start: 0.000000, bitrate: N/A Stream #0:0: Video: rawvideo (RGB[24] / 0x18424752), rgb24, 1280x720 [SAR 1:1 DAR 16:9], 25 tbr, 25 tbn, 25 tbc Stream mapping: Stream #0:0 -> #0:0 (rawvideo (native) -> h264 (libx264)) Press [q] to stop, [?] for help [libx264 @ 0x55e4e33947c0] using SAR=1/1 [libx264 @ 0x55e4e33947c0] using cpu capabilities: MMX2 SSE2Fast SSSE3 SSE4.2 AVX FMA3 BMI2 AVX2 [libx264 @ 0x55e4e33947c0] profile High, level 3.1 [libx264 @ 0x55e4e33947c0] 264 - core 155 r2917 0a84d98 - H.264/MPEG-4 AVC codec - Copyleft 2003-2018 - http://www.videolan.org/x264.html - options: cabac=1 ref=2 deblock=1:0:0 analyse=0x3:0x113 me=hex subme=6 psy=1 psy_rd=1.00:0.00 mixed_ref=1 me_range=16 chroma_me=1 trellis=1 8x8dct=1 cqm=0 deadzone=21,11 fast_pskip=1 chroma_qp_offset=-2 threads=9 lookahead_threads=1 sliced_threads=0 nr=0 decimate=1 interlaced=0 bluray_compat=0 constrained_intra=0 bframes=3 b_pyramid=2 b_adapt=1 b_bias=0 direct=1 weightb=1 open_gop=0 weightp=1 keyint=50 keyint_min=5 scenecut=40 intra_refresh=0 rc_lookahead=30 rc=crf mbtree=1 crf=30.0 qcomp=0.60 qpmin=0 qpmax=69 qpstep=4 ip_ratio=1.40 aq=1:1.00 [hls @ 0x55e4e333d040] Opening '/var/www/html/stream/1.ts' for writing Output #0, hls, to '/var/www/html/stream/index.m3u8': Metadata: encoder : Lavf58.20.100 Stream #0:0: Video: h264 (libx264), yuv420p, 1280x720 [SAR 1:1 DAR 16:9], q=-1--1, 25 fps, 90k tbn, 25 tbc Metadata: encoder : Lavc58.35.100 libx264 Side data: cpb: bitrate max/min/avg: 0/0/0 buffer size: 0 vbv_delay: -1 frame= 63 fps= 25 q=35.0 size=N/A time=00:00:00.76 bitrate=N/A speed=0.301x Enter command: <target>|all <time>|-1 <command>[ <argument>] Parsed_drawtext_1 -1 reinit text='test'^M Command reply for stream 0: ret:-38 res: [hls muxer @ 0x55e4e3399800] Duplicated segment filename detected: 1.ts0.204x [hls @ 0x55e4e333d040] Opening '/var/www/html/stream/2.ts' for writing [hls @ 0x55e4e333d040] Cannot use rename on non file protocol, this may lead to races and temporary partial files [hls muxer @ 0x55e4e3399800] Duplicated segment filename detected: 2.ts [hls @ 0x55e4e333d040] Opening '/var/www/html/stream/3.ts' for writing [hls muxer @ 0x55e4e3399800] Duplicated segment filename detected: 3.ts0.768x [hls @ 0x55e4e333d040] Opening '/var/www/html/stream/4.ts' for writing [hls muxer @ 0x55e4e3399800] Duplicated segment filename detected: 4.ts0.78x [hls @ 0x55e4e333d040] Opening '/var/www/html/stream/0.ts' for writing [hls muxer @ 0x55e4e3399800] Duplicated segment filename detected: 0.ts frame= 209 fps= 25 q=-1.0 Lsize=N/A time=00:00:08.32 bitrate=N/A speed=0.982x video:106kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: unknown [libx264 @ 0x55e4e33947c0] frame I:5 Avg QP:17.10 size: 6972 [libx264 @ 0x55e4e33947c0] frame P:54 Avg QP:21.75 size: 656 [libx264 @ 0x55e4e33947c0] frame B:150 Avg QP:22.64 size: 252 [libx264 @ 0x55e4e33947c0] consecutive B-frames: 4.3% 0.0% 0.0% 95.7% [libx264 @ 0x55e4e33947c0] mb I I16..4: 77.5% 18.6% 3.8% [libx264 @ 0x55e4e33947c0] mb P I16..4: 2.7% 0.3% 0.1% P16..4: 5.5% 0.2% 0.0% 0.0% 0.0% skip:91.2% [libx264 @ 0x55e4e33947c0] mb B I16..4: 1.3% 0.2% 0.0% B16..8: 1.1% 0.0% 0.0% direct: 0.8% skip:96.7% L0:49.6% L1:43.8% BI: 6.5% [libx264 @ 0x55e4e33947c0] 8x8 transform intra:15.0% inter:77.8% [libx264 @ 0x55e4e33947c0] coded y,uvDC,uvAC intra: 2.2% 18.6% 7.3% inter: 0.0% 1.0% 0.0% [libx264 @ 0x55e4e33947c0] i16 v,h,dc,p: 84% 11% 2% 2% [libx264 @ 0x55e4e33947c0] i8 v,h,dc,ddl,ddr,vr,hd,vl,hu: 54% 13% 32% 0% 0% 0% 0% 0% 0% [libx264 @ 0x55e4e33947c0] i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 30% 30% 28% 3% 2% 3% 0% 3% 0% [libx264 @ 0x55e4e33947c0] i8c dc,h,v,p: 45% 12% 37% 6% [libx264 @ 0x55e4e33947c0] Weighted P-Frames: Y:0.0% UV:0.0% [libx264 @ 0x55e4e33947c0] ref P L0: 47.7% 52.3% [libx264 @ 0x55e4e33947c0] ref B L0: 60.3% 39.7% [libx264 @ 0x55e4e33947c0] ref B L1: 90.8% 9.2% [libx264 @ 0x55e4e33947c0] kb/s:103.41 Exiting normally, received signal 2. ```
_______________________________________________ Libav-user mailing list [email protected] https://ffmpeg.org/mailman/listinfo/libav-user To unsubscribe, visit link above, or email [email protected] with subject "unsubscribe".
