filters zoompan and crop

classic Classic list List threaded Threaded
8 messages Options
Reply | Threaded
Open this post in threaded view
|

filters zoompan and crop

S Andreason
Hi,
Does zoompan not work outside the range 1 .. 8?
I want to generate an overlay to zoom in, have the input png start
small, and grow to half the video size, like from 20 to 320 in width.
Starting the zoompan at z=0.1 does not seem to work.
Also if the first filter was successful, I need to crop it so that it
grows over time. I am having trouble getting crop to adjust based on the
frame number. From my testing it seems n in this case starts at 0 when
the enable between starts, instead of the output video frame number like
the other filters I have been using.
Is there a manual or wiki with more information then at
https://ffmpeg.org/ffmpeg-filters.html ?
Thank you

$ ffmpeg -loglevel verbose -i
20181025_SHS_RBP3000-freezerOFF-2filters-zoom.png -i
20181024_RBP3000-1212_measuring-GS-filters-h640x360e.mp4 -c:v h264
-filter_complex
"[0]zoompan=z='if(lte(on,157),0.1,min(zoom+0.033,1))':d=180:fps=30 [0z];
[0z]crop=w='if(lte(n,0),32,n/23*320)':h='if(lte(n,0),23,n/23*234)'
[0zc];
[1][0zc]overlay=x='495-((n-156)*175/24)':y='256-((n-156)*126/24)':enable='between(t,5.2,6)'"
-s 640x360 -c:a copy testzoompan.mp4
ffmpeg version 3.2.12-1~deb9u1 Copyright (c) 2000-2018 the FFmpeg developers
   built with gcc 6.3.0 (Debian 6.3.0-18+deb9u1) 20170516
   configuration: --prefix=/usr --extra-version='1~deb9u1'
--toolchain=hardened --libdir=/usr/lib/i386-linux-gnu
--incdir=/usr/include/i386-linux-gnu --enable-gpl --disable-stripping
--enable-avresample --enable-avisynth --enable-gnutls --enable-ladspa
--enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca
--enable-libcdio --enable-libebur128 --enable-libflite
--enable-libfontconfig --enable-libfreetype --enable-libfribidi
--enable-libgme --enable-libgsm --enable-libmp3lame --enable-libopenjpeg
--enable-libopenmpt --enable-libopus --enable-libpulse
--enable-librubberband --enable-libshine --enable-libsnappy
--enable-libsoxr --enable-libspeex --enable-libssh --enable-libtheora
--enable-libtwolame --enable-libvorbis --enable-libvpx
--enable-libwavpack --enable-libwebp --enable-libx265 --enable-libxvid
--enable-libzmq --enable-libzvbi --enable-omx --enable-openal
--enable-opengl --enable-sdl2 --enable-libdc1394 --enable-libiec61883
--enable-chromaprint --enable-frei0r --enable-libopencv --enable-libx264
--enable-shared
   libavutil      55. 34.101 / 55. 34.101
   libavcodec     57. 64.101 / 57. 64.101
   libavformat    57. 56.101 / 57. 56.101
   libavdevice    57.  1.100 / 57.  1.100
   libavfilter     6. 65.100 /  6. 65.100
   libavresample   3.  1.  0 /  3.  1.  0
   libswscale      4.  2.100 /  4.  2.100
   libswresample   2.  3.100 /  2.  3.100
   libpostproc    54.  1.100 / 54.  1.100
Input #0, png_pipe, from
'20181025_SHS_RBP3000-freezerOFF-2filters-zoom.png':
   Duration: N/A, bitrate: N/A
     Stream #0:0: Video: png, 1 reference frame, pal8(pc), 320x234, 25
tbr, 25 tbn, 25 tbc
[h264 @ 0x184d0e0] Reinit context to 640x368, pix_fmt: yuv420p
Input #1, mov,mp4,m4a,3gp,3g2,mj2, from
'20181024_RBP3000-1212_measuring-GS-filters-h640x360e.mp4':
   Metadata:
     major_brand     : isom
     minor_version   : 512
     compatible_brands: isomiso2avc1mp41
     encoder         : Lavf57.56.101
   Duration: 00:00:50.02, start: 0.000000, bitrate: 827 kb/s
     Stream #1:0(und): Video: h264 (High), 1 reference frame (avc1 /
0x31637661), yuv420p(left), 640x360 (640x368), 562 kb/s, 29.97 fps,
29.97 tbr, 30k tbn, 59.94 tbc (default)
     Metadata:
       handler_name    : VideoHandler
     Stream #1:1(eng): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz,
stereo, fltp, 255 kb/s (default)
     Metadata:
       handler_name    : SoundHandler
Matched encoder 'libx264' for codec 'h264'.
[graph 0 input from stream 0:0 @ 0x1860ae0] w:320 h:234 pixfmt:pal8
tb:1/25 fr:25/1 sar:0/1 sws_param:flags=2
[graph 0 input from stream 1:0 @ 0x18604a0] w:640 h:360 pixfmt:yuv420p
tb:1/30000 fr:30000/1001 sar:0/1 sws_param:flags=2
[scaler for output stream 0:0 @ 0x18723e0] w:640 h:360 flags:'bicubic'
interl:0
[Parsed_zoompan_0 @ 0x1851020] auto-inserting filter 'auto-inserted fifo
0' between the filter 'graph 0 input from stream 0:0' and the filter
'Parsed_zoompan_0'
[auto-inserted scaler 0 @ 0x192fa60] w:iw h:ih flags:'bilinear' interl:0
[auto-inserted fifo 0 @ 0x1860e80] auto-inserting filter 'auto-inserted
scaler 0' between the filter 'graph 0 input from stream 0:0' and the
filter 'auto-inserted fifo 0'
[auto-inserted scaler 0 @ 0x192fa60] w:320 h:234 fmt:pal8 sar:0/1 ->
w:320 h:234 fmt:yuva420p sar:0/1 flags:0x2
[Parsed_crop_1 @ 0x18728e0] w:1280 h:720 sar:0/1 -> w:32 h:22 sar:0/1
[Parsed_overlay_2 @ 0x18605a0] main w:640 h:360 fmt:yuv420p overlay w:32
h:22 fmt:yuva420p eof_action:repeat
[Parsed_overlay_2 @ 0x18605a0] [framesync @ 0x1860644] Selected 1/30000
time base
[Parsed_overlay_2 @ 0x18605a0] [framesync @ 0x1860644] Sync level 2
[scaler for output stream 0:0 @ 0x18723e0] w:640 h:360 fmt:yuv420p
sar:0/1 -> w:640 h:360 fmt:yuv420p sar:0/1 flags:0x4
[libx264 @ 0x185efa0] using cpu capabilities: MMX2 SSE2Fast SSSE3 SSE4.2
AVX LZCNT BMI1 SlowPshufb
[libx264 @ 0x185efa0] profile High, level 3.0
[libx264 @ 0x185efa0] 264 - core 148 r2748 97eaef2 - H.264/MPEG-4 AVC
codec - Copyleft 2003-2016 - http://www.videolan.org/x264.html -
options: cabac=1 ref=3 deblock=1:0:0 analyse=0x3:0x113 me=hex subme=7
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=6
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=2 keyint=250
keyint_min=25 scenecut=40 intra_refresh=0 rc_lookahead=40 rc=crf
mbtree=1 crf=23.0 qcomp=0.60 qpmin=0 qpmax=69 qpstep=4 ip_ratio=1.40
aq=1:1.00
Output #0, mp4, to 'testzoompan.mp4':
   Metadata:
     encoder         : Lavf57.56.101
     Stream #0:0: Video: h264 (libx264), 1 reference frame
([33][0][0][0] / 0x0021), yuv420p, 640x360, q=-1--1, 29.97 fps, 30k tbn,
29.97 tbc (default)
     Metadata:
       encoder         : Lavc57.64.101 libx264
     Side data:
       cpb: bitrate max/min/avg: 0/0/0 buffer size: 0 vbv_delay: -1
     Stream #0:1(eng): Audio: aac (LC) ([64][0][0][0] / 0x0040), 48000
Hz, stereo, 255 kb/s (default)
     Metadata:
       handler_name    : SoundHandler
Stream mapping:
   Stream #0:0 (png) -> zoompan
   Stream #1:0 (h264) -> overlay:main
   overlay -> Stream #0:0 (libx264)
   Stream #1:1 -> #0:1 (copy)
Press [q] to stop, [?] for help
[h264 @ 0x18cf1e0] Reinit context to 640x368, pix_fmt: yuv420p
[Parsed_overlay_2 @ 0x18605a0] [framesync @ 0x1860644] Sync level 0=
754.5kbits/s speed=2.12x
No more output streams to write to, finishing.
frame= 1499 fps= 62 q=-1.0 Lsize=    4831kB time=00:00:49.99 bitrate=
791.7kbits/s speed=2.06x
video:3214kB audio:1563kB subtitle:0kB other streams:0kB global
headers:0kB muxing overhead: 1.141019%
Input file #0 (20181025_SHS_RBP3000-freezerOFF-2filters-zoom.png):
   Input stream #0:0 (video): 1 packets read (2282 bytes); 1 frames
decoded;
   Total: 1 packets (2282 bytes) demuxed
Input file #1 (20181024_RBP3000-1212_measuring-GS-filters-h640x360e.mp4):
   Input stream #1:0 (video): 1499 packets read (3517232 bytes); 1499
frames decoded;
   Input stream #1:1 (audio): 2344 packets read (1600092 bytes);
   Total: 3843 packets (5117324 bytes) demuxed
Output file #0 (testzoompan.mp4):
   Output stream #0:0 (video): 1499 frames encoded; 1499 packets muxed
(3291236 bytes);
   Output stream #0:1 (audio): 2344 packets muxed (1600092 bytes);
   Total: 3843 packets (4891328 bytes) muxed
[libx264 @ 0x185efa0] frame I:9     Avg QP:21.50  size: 21285
[libx264 @ 0x185efa0] frame P:456   Avg QP:24.18  size:  4438
[libx264 @ 0x185efa0] frame B:1034  Avg QP:28.03  size:  1040
[libx264 @ 0x185efa0] consecutive B-frames:  4.7%  8.8%  3.8% 82.7%
[libx264 @ 0x185efa0] mb I  I16..4: 11.1% 63.7% 25.1%
[libx264 @ 0x185efa0] mb P  I16..4:  4.2% 11.8%  1.7%  P16..4: 39.7%
12.1%  5.1%  0.0%  0.0%    skip:25.4%
[libx264 @ 0x185efa0] mb B  I16..4:  0.4%  1.1%  0.1%  B16..8: 36.8% 
3.7%  0.5%  direct: 1.2%  skip:56.2%  L0:44.9% L1:50.5% BI: 4.5%
[libx264 @ 0x185efa0] 8x8 transform intra:66.5% inter:77.5%
[libx264 @ 0x185efa0] coded y,uvDC,uvAC intra: 46.9% 56.8% 11.1% inter:
9.4% 11.8% 0.6%
[libx264 @ 0x185efa0] i16 v,h,dc,p: 28% 29%  9% 34%
[libx264 @ 0x185efa0] i8 v,h,dc,ddl,ddr,vr,hd,vl,hu: 28% 20% 20% 4%  5% 
5%  8%  5%  6%
[libx264 @ 0x185efa0] i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 35% 25% 13% 3%  5% 
5%  7%  3%  4%
[libx264 @ 0x185efa0] i8c dc,h,v,p: 47% 24% 23%  6%
[libx264 @ 0x185efa0] Weighted P-Frames: Y:8.6% UV:1.3%
[libx264 @ 0x185efa0] ref P L0: 60.9% 17.2% 13.9%  7.5%  0.5%
[libx264 @ 0x185efa0] ref B L0: 84.5% 11.7%  3.8%
[libx264 @ 0x185efa0] ref B L1: 95.1%  4.9%
[libx264 @ 0x185efa0] kb/s:526.31


_______________________________________________
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
|

Re: filters zoompan and crop

Jim DeLaHunt-2
On 2018-10-26 11:57, S Andreason wrote:
> Hi,
>
> Does zoompan not work outside the range 1 .. 8?
>
Nearly correct. The zoompan filter accepts values for the zoom parameter
between 1 and 10. Any values below 1.0 are set to 1; any values greater
than 10.0 are set to 10.

Also, it's helpful to be very clear about the conceptual model the
zoompan filter uses. The filter starts with an input image (or frame of
an input video). It sets up a coordinate system based on this image:
origin at top-left, with +x to the right and +y downwards.  A zoom
argument of /k/ is interpreted as if the input image was drawn /k /times
its original size, or equivalently, that the output image is 1//k/ the
size of the input image. The x and y arguments to the zoompan filter are
interpreted in this coordinate system, but clipped so that the output
image (after zoom adjustment) will stay completely within the input image.

The core motivation for the filter seems to be implementing what some
call the "Ken Burns effect", making a video image which pans over an
input image, and zooms in to only show part of the image at a time. It
is not well-suited to general transformations, given its limitations on
zoom level, its refusal to pan beyond the boundary of the input image,
and the absence of a rotation capability or generalised affine
coordinate transformations.

> I want to generate an overlay to zoom in, have the input png start
> small, and grow to half the video size, like from 20 to 320 in width.
> Starting the zoompan at z=0.1 does not seem to work.
Take a look at the *pad* filter <http://ffmpeg.org/ffmpeg-all.html#pad>.
That generates an output frame which consists of an input frame with
padding around it.
> Also if the first filter was successful, I need to crop it so that it
> grows over time. I am having trouble getting crop to adjust based on
> the frame number. From my testing it seems n in this case starts at 0
> when the enable between starts, instead of the output video frame
> number like the other filters I have been using.
I'm not sure I follow what you mean by "when the enable between starts".
My experience with the *zoompan* filter is that the /in/ parameter
(input frame number) is 2 for the first frame, rather than 0 as is usual
for ffmpeg. I think that this is partly a bug (see
<https://trac.ffmpeg.org/ticket/7242>). Partly this appears to be a
design decision by the original developer, to use cardinal numbers
instead of ordinal numbers.
> Is there a manual or wiki with more information then at
> https://ffmpeg.org/ffmpeg-filters.html ?
If you want to do serious work with the zoompan filter, my experience is
that the documentation isn't adequate, and you need to read the source
code in ffmpeg/libavfilter/vf_zoompan.c, lines 153-250, function
output_single_frame().
> Thank you
>
I hope this is helpful for you.
       —Jim DeLaHunt, Vancouver, Canada

--
     --Jim DeLaHunt, [hidden email]     http://blog.jdlh.com/ (http://jdlh.com/)
       multilingual websites consultant

       355-1027 Davie St, Vancouver BC V6E 4L2, Canada
          Canada mobile +1-604-376-8953

_______________________________________________
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
|

Re: filters zoompan and crop

Gyan Doshi
On Mon, Oct 29, 2018 at 11:38 AM Jim DeLaHunt <[hidden email]>
wrote:

>
>   A zoom
> argument of /k/ is interpreted as if the input image was drawn /k /times
> its original size, or equivalently, that the output image is 1//k/ the
> size of the input image.
>

That should be k^2. A zoom value of 2 crops a window of one-half width and
height, so one-fourth area.

Gyan
_______________________________________________
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
|

Re: filters zoompan and crop

Paul B Mahol
In reply to this post by Jim DeLaHunt-2
On 10/29/18, Jim DeLaHunt <[hidden email]> wrote:

> On 2018-10-26 11:57, S Andreason wrote:
>> Hi,
>>
>> Does zoompan not work outside the range 1 .. 8?
>>
> Nearly correct. The zoompan filter accepts values for the zoom parameter
> between 1 and 10. Any values below 1.0 are set to 1; any values greater
> than 10.0 are set to 10.
>
> Also, it's helpful to be very clear about the conceptual model the
> zoompan filter uses. The filter starts with an input image (or frame of
> an input video). It sets up a coordinate system based on this image:
> origin at top-left, with +x to the right and +y downwards.  A zoom
> argument of /k/ is interpreted as if the input image was drawn /k /times
> its original size, or equivalently, that the output image is 1//k/ the
> size of the input image. The x and y arguments to the zoompan filter are
> interpreted in this coordinate system, but clipped so that the output
> image (after zoom adjustment) will stay completely within the input image.
>
> The core motivation for the filter seems to be implementing what some
> call the "Ken Burns effect", making a video image which pans over an
> input image, and zooms in to only show part of the image at a time. It
> is not well-suited to general transformations, given its limitations on
> zoom level, its refusal to pan beyond the boundary of the input image,
> and the absence of a rotation capability or generalised affine
> coordinate transformations.
>
>> I want to generate an overlay to zoom in, have the input png start
>> small, and grow to half the video size, like from 20 to 320 in width.
>> Starting the zoompan at z=0.1 does not seem to work.
> Take a look at the *pad* filter <http://ffmpeg.org/ffmpeg-all.html#pad>.
> That generates an output frame which consists of an input frame with
> padding around it.
>> Also if the first filter was successful, I need to crop it so that it
>> grows over time. I am having trouble getting crop to adjust based on
>> the frame number. From my testing it seems n in this case starts at 0
>> when the enable between starts, instead of the output video frame
>> number like the other filters I have been using.
> I'm not sure I follow what you mean by "when the enable between starts".
> My experience with the *zoompan* filter is that the /in/ parameter
> (input frame number) is 2 for the first frame, rather than 0 as is usual
> for ffmpeg. I think that this is partly a bug (see
> <https://trac.ffmpeg.org/ticket/7242>). Partly this appears to be a
> design decision by the original developer, to use cardinal numbers
> instead of ordinal numbers.

That bug have long be fixed in master branch. I just closed it.

>> Is there a manual or wiki with more information then at
>> https://ffmpeg.org/ffmpeg-filters.html ?
> If you want to do serious work with the zoompan filter, my experience is
> that the documentation isn't adequate, and you need to read the source
> code in ffmpeg/libavfilter/vf_zoompan.c, lines 153-250, function
> output_single_frame().
>> Thank you
>>
> I hope this is helpful for you.
>        —Jim DeLaHunt, Vancouver, Canada
>
> --
>      --Jim DeLaHunt, [hidden email]     http://blog.jdlh.com/
> (http://jdlh.com/)
>        multilingual websites consultant
>
>        355-1027 Davie St, Vancouver BC V6E 4L2, Canada
>           Canada mobile +1-604-376-8953
>
> _______________________________________________
> 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
|

Re: filters zoompan and crop

Jim DeLaHunt-2
In reply to this post by Gyan Doshi
On 2018-10-28 23:15, Gyan wrote:

> On Mon, Oct 29, 2018 at 11:38 AM Jim DeLaHunt <[hidden email]>
> wrote:
>
>>    A zoom
>> argument of /k/ is interpreted as if the input image was drawn /k /times
>> its original size, or equivalently, that the output image is 1//k/ the
>> size of the input image.
>>
> That should be k^2. A zoom value of 2 crops a window of one-half width and
> height, so one-fourth area.
Agreed. By "size" I meant linear dimension, not area or pixel count.

So I think Gyan and I are both saying, interpret the "zoom" argument in
terms of linear dimension, which means the resulting pixel count or area
changes in terms of 1 divided by the square of the "zoom" argument.

--
     --Jim DeLaHunt, [hidden email]     http://blog.jdlh.com/ (http://jdlh.com/)
       multilingual websites consultant

       355-1027 Davie St, Vancouver BC V6E 4L2, Canada
          Canada mobile +1-604-376-8953

_______________________________________________
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
|

Re: filters zoompan and crop

Jim DeLaHunt-2
In reply to this post by Paul B Mahol
On 2018-10-29 01:38, Paul B Mahol wrote:
> On 10/29/18, Jim DeLaHunt <[hidden email]> wrote:
>> My experience with the *zoompan* filter is that the /in/ parameter
>> (input frame number) is 2 for the first frame, rather than 0 as is
>> usual for ffmpeg. I think that this is partly a bug (see
>> <https://trac.ffmpeg.org/ticket/7242>). Partly this appears to be a
>> design decision by the original developer, to use cardinal numbers
>> instead of ordinal numbers.
> That bug have long be fixed in master branch. I just closed it.

Yay! That's great to hear!  I see it was fixed in June 2018.

I'm glad the bug report is now marked as closed also. That should help
spread the word about the fix.

I am in favour of the documentation changing to better describe the
current behaviour. I may submit a patch if no-one beats me to it.

--
     --Jim DeLaHunt, [hidden email]     http://blog.jdlh.com/ (http://jdlh.com/)
       multilingual websites consultant

       355-1027 Davie St, Vancouver BC V6E 4L2, Canada
          Canada mobile +1-604-376-8953

_______________________________________________
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
|

Re: filters zoompan and crop

S Andreason
In reply to this post by Jim DeLaHunt-2
Jim DeLaHunt wrote:
> .
>> I want to generate an overlay to zoom in, have the input png start
>> small, and grow to half the video size, like from 20 to 320 in width.
>> Starting the zoompan at z=0.1 does not seem to work.
> Take a look at the *pad* filter
> <http://ffmpeg.org/ffmpeg-all.html#pad>. That generates an output
> frame which consists of an input frame with padding around it.
I suppose that could work, if it would accept the frame number as a
variable, so that the x,y,w,h could change over time, and allow the
padding color to be transparent.

So, I still see no filters to start small, without disturbing the rest
of the frame, and have it grow over time to full size, replacing the
video on the lower layer.
You have confirmed zoompan won't shrink less than 1.0 in size factor.
For example zoom value of 0.1 should enlarge the input stream x10 and
with x and y I could select where in the stream[0] to place the
(growing/shrinking) stream[1].


>> Also if the first filter was successful, I need to crop it so that it
>> grows over time. I am having trouble getting crop to adjust based on
>> the frame number. From my testing it seems n in this case starts at 0
>> when the enable between starts, instead of the output video frame
>> number like the other filters I have been using.
> I'm not sure I follow what you mean by "when the enable between starts".
Sorry, I'll re-word it;
when the "enable='between(t,#,#)'" begins
I was experiencing something more than just 0 to 2 frames offset. I'll
work up another example once I have a moment to re-create it.

Stewart

_______________________________________________
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
|

Re: filters zoompan and crop

Jim DeLaHunt-2
On 2018-11-01 15:02, S Andreason wrote:

> Jim DeLaHunt wrote:
>> .
>>> I want to generate an overlay to zoom in, have the input png start
>>> small, and grow to half the video size, like from 20 to 320 in
>>> width. Starting the zoompan at z=0.1 does not seem to work.
>> Take a look at the *pad* filter
>> <http://ffmpeg.org/ffmpeg-all.html#pad>. That generates an output
>> frame which consists of an input frame with padding around it.
> I suppose that could work, if it would accept the frame number as a
> variable, so that the x,y,w,h could change over time, and allow the
> padding color to be transparent.
>
> So, I still see no filters to start small, without disturbing the rest
> of the frame, and have it grow over time to full size, replacing the
> video on the lower layer.
I see the problem. The *pad* filter doesn't let you use the frame number
/n/ as a parameter for expressions defining /width/, /height/, /x/, and
/y/. In contrast, the *zoompan* filter does give you both an input frame
number and output frame number to use in expressions. I have used
*zoompan* to animate a video by writing ridiculously complex expressions
for /x/ and /y/ and /zoom/ based on frame number.
> You have confirmed zoompan won't shrink less than 1.0 in size factor.
> For example zoom value of 0.1 should enlarge the input stream x10 and
> with x and y I could select where in the stream[0] to place the
> (growing/shrinking) stream[1].

I have the impression that *zoompan* was designed with one use in mind,
panning over a large still image, and so they missed the chance to make
a more flexible and useful tool. I would love it if someone would make
an "animate" filter, which could do arbitrary affine coordinate
transforms on frames of an incoming video, based on a set of key frames,
with bézier interpolation between the keyframes.

That tool would sure serve my needs better. Maybe it would serve yours
also. Should we raise money for a bounty to write it?


>>> Also if the first filter was successful, I need to crop it so that
>>> it grows over time. I am having trouble getting crop to adjust based
>>> on the frame number. From my testing it seems n in this case starts
>>> at 0 when the enable between starts, instead of the output video
>>> frame number like the other filters I have been using.
>> I'm not sure I follow what you mean by "when the enable between starts".
> Sorry, I'll re-word it;
> when the "enable='between(t,#,#)'" begins
> I was experiencing something more than just 0 to 2 frames offset. I'll
> work up another example once I have a moment to re-create it.

Thank you. That phrase is much clearer when accompanied by punctuation.
Sorry, I've never used the /enable/ parameter, so I don't know what
effect it has on other parameters.

Best regards,
       —Jim DeLaHunt, software engineer, Vancouver, Canada

> _______________________________________________
> 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".

--
     --Jim DeLaHunt, [hidden email]     http://blog.jdlh.com/ (http://jdlh.com/)
       multilingual websites consultant

       355-1027 Davie St, Vancouver BC V6E 4L2, Canada
          Canada mobile +1-604-376-8953

_______________________________________________
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".