微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

FFMPEG 从文件目录中对每个视频文件进行 1 秒剪辑,直到达到总播放时间

如何解决FFMPEG 从文件目录中对每个视频文件进行 1 秒剪辑,直到达到总播放时间

我正在为一首歌制作音乐艺术视频项目。

我有一个包含大约 400 个单独视频的目录

  • 不同的长度(短至 3 秒,长至 31 分钟)
  • 不同的文件类型(mp4 和 webm)
  • 不同的分辨率/帧率/比特率

输出视频应包括

  • 每个视频的 1 秒块
  • 以循环方式
  • 直到所有视频播放完毕或输出的总视频长度达到一定限制(例如,20 分钟)。
  • 输出视频应为 1280×720 24fps,不偏向于比特率。
  • 较大的视频应按比例缩小并加黑(垂直或水平)。
  • 音频根本不重要。视频可以静音。我可以单独叠加音频。

我不想循环播放短视频。在下面的示例中,您可以看到,对于 top-left-view-take-1.mp4,所拍摄的每个“剪辑”都逐渐深入视频。换句话说,它不应该从一开始就使用相同的 1 秒剪辑。目标是随着输出视频的进展进一步了解每个单独的视频。

例如,假设我的目录包含如下文件(并且,对于此处的示例,我们将说这是目录中的所有文件):

overhead-view-take-1.mp4 (3 seconds,for the sake of the question)
top-right-view-take-1.mp4 (3 seconds,for the sake of the question)
top-right-view-take-2.mp4 (5 seconds,for the sake of the question)
outside-kaleidoscope-1.mp4
yellow-kaleidoscope-1.mp4
red-kaleidoscope-1.mp4
brake-lights-slow-1.mp4
soft-city-lights.webm

假设任何未标记视频时长的内容至少有 5 秒长。

根据上述文件和时间,这里将是输出视频前 30 秒内每个剪辑的顺序和时间码:

根据每个视频的总时长,输出视频应包括来自目录中所有视频的 1 秒剪辑。

输出时间 剪辑时间 剪辑文件
00:00-00:01 00:00-00:01 overhead-view-take-1.mp4
00:01-00:02 00:00-00:01 右上角视图-take-1.mp4
00:02-00:03 00:00-00:01 右上角视图-take-2.mp4
00:03-00:04 00:00-00:01 outside-kaleidoscope-1.mp4
00:04-00:05 00:00-00:01 yellow-kaleidoscope-1.mp4
00:05-00:06 00:00-00:01 red-kaleidoscope-1.mp4
00:06-00:07 00:00-00:01 brake-lights-slow-1.mp4
00:07-00:08 00:00-00:01 soft-city-lights.webm
00:08-00:09 00:01-00:02 overhead-view-take-1.mp4
00:09-00:10 00:01-00:02 右上角视图-take-1.mp4
00:10-00:11 00:01-00:02 右上角视图-take-2.mp4
00:11-00:12 00:01-00:02 outside-kaleidoscope-1.mp4
00:12-00:13 00:01-00:02 yellow-kaleidoscope-1.mp4
00:13-00:14 00:01-00:02 red-kaleidoscope-1.mp4
00:14-00:15 00:01-00:02 brake-lights-slow-1.mp4
00:15-00:16 00:01-00:02 soft-city-lights.webm
00:16-00:17 00:02-00:03 overhead-view-take-1.mp4
00:17-00:18 00:02-00:03 右上角视图-take-1.mp4
00:18-00:19 00:02-00:03 右上角视图-take-2.mp4
00:19-00:20 00:02-00:03 outside-kaleidoscope-1.mp4
00:20-00:21 00:02-00:03 yellow-kaleidoscope-1.mp4
00:21-00:22 00:02-00:03 red-kaleidoscope-1.mp4
00:22-00:23 00:02-00:03 brake-lights-slow-1.mp4
00:23-00:24 00:02-00:03 soft-city-lights.webm

现在,输出视频应仅包含来自仍有剩余时间的视频的 1 秒剪辑。没有剩余时间的视频,例如 overhead-view-take-1.mp4top-right-view-take-1.mp4,不在此处显示

输出时间 剪辑时间 剪辑文件
00:24-00:25 00:03-00:04 右上角视图-take-2.mp4
00:25-00:26 00:03-00:04 outside-kaleidoscope-1.mp4
00:26-00:27 00:03-00:04 yellow-kaleidoscope-1.mp4
00:27-00:28 00:03-00:04 red-kaleidoscope-1.mp4
00:28-00:29 00:03-00:04 brake-lights-slow-1.mp4
00:29-00:30 00:03-00:04 soft-city-lights.webm

我的尝试

  • 我已经阅读了文档并拼凑了一些产生输出代码,但它似乎只适用于图像;我无法用同样的方式处理视频(特别是增量块)。
  • 我曾尝试操纵旨在“每 x 秒/帧创建一个快照”的命令,但我在那里遇到了死胡同。
  • 我也开始尝试创建一个文本文件来运行输入。这就是我认为在这里提问是有意义的。

我的主要问题是挑选单个视频的增量块,并按顺序播放。

想法?

环境详情 我可以访问 Win、Mac 和 Linux 机器。所以,那个环境对我来说并不重要。这是 ffmpeg 的输出

ffmpeg version 4.3.1-0york0~16.04 copyright (c) 2000-2020 the FFmpeg developers
  built with gcc 5.4.0 (Ubuntu 5.4.0-6ubuntu1~16.04.12) 20160609
  configuration: --prefix=/usr --extra-version='0york0~16.04' --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-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-librabbitmq --enable-librsvg --enable-librubberband --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libsrt --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-opencl --enable-opengl --enable-sdl2 --enable-libzimg --enable-pocketsphinx --enable-libdc1394 --enable-libdrm --enable-libiec61883 --enable-chromaprint --enable-frei0r --enable-libx264 --enable-shared
  libavutil      56. 51.100 / 56. 51.100
  libavcodec     58. 91.100 / 58. 91.100
  libavformat    58. 45.100 / 58. 45.100
  libavdevice    58. 10.100 / 58. 10.100
  libavfilter     7. 85.100 /  7. 85.100
  libavresample   4.  0.  0 /  4.  0.  0
  libswscale      5.  7.100 /  5.  7.100
  libswresample   3.  7.100 /  3.  7.100
  libpostproc    55.  7.100 / 55.  7.100
Hyper fast Audio and Video encoder

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。