我已经搜索了各种方法让 zoompan 滤镜在视频上工作,但在图像上没有遇到问题:
ffmpeg -loop 1 -i thumbnail_56138ba980d73.png -vf "zoompan=z='min(zoom+0.0015,10)':d=125" -c:v mpeg2video -t 5 -s "796x450" test2.mpeg
效果很好,图片放大效果很好。但是当我尝试在输入为视频的情况下执行相同操作时:
ffmpeg -i tmpFile_149712.mp4 -vf "zoompan=z='min(zoom+0.0015,10)':d=150" -c:v mpeg2video -t 5 -s "796x450" test2.mpeg
然后它给了我以下输出,最后由于核心中止而没有视频。所以这让我想到这个过滤器是否适用于视频?
特别是当我阅读 zoompan 参数 -D 的文档时“这设置了效果持续的帧数单个输入图像“”。
$ ffmpeg -i tmpFile_149712.mp4 -vf "zoompan=z='min(zoom+0.0015,10)':d=150" -c:v mpeg2video -t 5 -s "796x450" test2.mpeg
ffmpeg version N-73887-g99ad832 Copyright (c) 2000-2015 the FFmpeg developers
built with gcc 4.8 (Ubuntu 4.8.2-19ubuntu1)
configuration: --prefix=/home/vagrant/ffmpeg_build --pkg-config-flags=--static --extra-cflags=-I/home/vagrant/ffmpeg_build /include --extra-ldflags=-L/home/vagrant/ffmpeg_build/lib --bindir=/home/vagrant/bin --enable-gpl --enable-libass --enable -libfreetype --enable-libmp3lame --enable-libtheora --enable-libvorbis --enable-libx264
libavutil 54. 28.100 / 54. 28.100
libavcodec 56. 50.101 / 56. 50.101
libavformat 56. 40.101 / 56. 40.101
libavdevice 56. 4.100 / 56. 4.100
libavfilter 5. 25.100 / 5. 25.100
libswscale 3. 1.101 / 3. 1.101
libswresample 1. 2.101 / 1. 2.101
libpostproc 53. 3.100 / 53. 3.100
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'tmpFile_149712.mp4':
Metadata:
major_brand : isom
minor_version : 512
compatible_brands: isomiso2avc1mp41
encoder : Lavf56.40.101
Duration: 00:00:12.10, start: 0.000000, bitrate: 359 kb/s
Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p, 1280x720, 356 kb/s, 30 fps, 30 tbr, 15360 tbn, 60 tbc (default)
Metadata:
handler_name : VideoHandler
[mpeg @ 0x2c17020] VBV buffer size not set, using default size of 130KB
If you want the mpeg file to be compliant to some specification
Like DVD, VCD or others, make sure you set the correct buffer size
Output #0, mpeg, to 'test2.mpeg':
Metadata:
major_brand : isom
minor_version : 512
compatible_brands: isomiso2avc1mp41
encoder : Lavf56.40.101
Stream #0:0(und): Video: mpeg2video, yuv420p, 796x450, q=2-31, 200 kb/s, 30 fps, 90k tbn, 30 tbc (default)
Metadata:
handler_name : VideoHandler
encoder : Lavc56.50.101 mpeg2video
Stream mapping:
Stream #0:0 -> #0:0 (h264 (native) -> mpeg2video (native))
Press [q] to stop, [?] for help
[output stream 0:0 @ 0x2c12000] 100 buffers queued in output stream 0:0, something may be wrong.
Past duration 0.998039 too large
*** Error in `ffmpeg': corrupted double-linked list: 0x00000000030af400 ***bits/s dup=0 drop=17100
Aborted (core dumped)
答案1
通过更新到最新版本即可工作。已尝试使用 3.0.2
答案2
这似乎是您使用的 FFMpeg 版本中的一个错误。较新的版本似乎可以工作,但还有另一个问题。当您将视频作为 zoompan 的输入传递时,它首先将其拆分为单独的帧,然后分别对每个帧应用缩放/平移效果。因此,您每输入一个视频帧就会获得 125 个(默认情况下 d=125)输出帧。我找不到解决这个问题的方法