如何解决FFMPEG 从文件目录中对每个视频文件进行 1 秒剪辑,直到达到总播放时间
我正在为一首歌制作音乐艺术视频项目。
- 不同的长度(短至 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
根据上述文件和时间,这里将是输出视频前 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.mp4
和 top-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 举报,一经查实,本站将立刻删除。