FFmpeg 是迄今为止视频和音频处理领域最重要的视频、图像和音频处理和操作工具。这款功能强大的开源软件套件可以完成媒体行业所需的基本任务,无论多么复杂或简单。其中一项任务就是循环播放视频,这是一项看似简单却又必要的操作,在各种情况下都能派上用场。
从创建重复的 GIF 到为网站制作扩展的视频背景,或为视频压缩或流媒体设置测试向量,了解如何循环播放视频在当今的数字环境中至关重要。
本教程将逐步向你展示如何使用 FFmpeg 循环播放视频!
安装 FFmpeg
在深入研究从视频创建 GIF 之前,必须在系统上安装 FFmpeg。以下是在不同操作系统上安装 FFmpeg 的分步指南:
- Windows:从官方网站下载最新版本的 FFmpeg 或使用 Chocolatey 或 Scoop 等包管理器。或者,按照文章 在 Windows 上安装和使用 FFmpeg 6.0 教程 进行操作。
- macOS:通过 Homebrew 或 MacPorts 包管理器安装 FFmpeg。
- Linux:使用发行版的包管理器安装 FFmpeg 或 从源代码编译它。
安装 FFmpeg 后,通过打开命令提示符或终端并键入ffmpeg -version
以确保显示正确的版本来验证其安装。
使用 FFmpeg 的命令行循环视频
使用 FFmpeg 循环播放视频非常简单,下面是命令行:
ffmpeg -stream_loop <loop_count> -i input.mp4 -c copy output.mp4
这是参数的解释:
-stream_loop
:此选项指定要循环输入视频的次数。要无限循环视频,请用作-1
循环计数。如果您想要将视频循环特定次数(例如,三遍),请使用3
。<loop_count>
:将其替换为您想要循环播放视频的次数。如果您想无限循环播放视频,请使用-1
。-i input.mp4
:这是输入文件路径。替换input.mp4
为您要循环的视频文件的路径。-c copy
:此选项启用流复制模式,这意味着 FFmpeg 在循环期间不会重新编码视频。它只是按原样复制视频和音频流,确保不损失质量。output.mp4
:这是输出文件路径。替换output.mp4
为循环视频文件所需的名称和格式。
如何使用这个?
如果想循环播放一次,请将-stream_loop
参数设置为1。或者,如果您想循环播放五次,请将-stream_loop
参数设置为5。
如果你设置-stream_loop
为-1
,那么它将无限循环!请小心,因为它会迅速变成一个巨大的文件并填满存储磁盘!
FFmpeg 循环播放视频例子
为了测试使用 FFmpeg 循环播放视频的命令行,我有一个时长 23.42 秒的视频文件。可以使用 ffprobe 找出答案,如下所示。如果您想了解有关 ffprobe 的更多信息,请查看我们对 ffprobe 的深入研究,了解它可以分析什么。
(base) krishna@Krishnas-MacBook-Pro ffmpeg % ffprobe input.mp4 -hide_banner
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'input.mp4':
Metadata:
major_brand : mp42
minor_version : 0
compatible_brands: isommp42
creation_time : 2023-04-11T04:56:51.000000Z
Duration: 00:00:23.42, start: 0.000000, bitrate: 1459 kb/s
Stream #0:0[0x1](und): Audio: aac (LC) (mp4a / 0x6134706D), 32000 Hz, mono, fltp, 126 kb/s (default)
Metadata:
creation_time : 2023-04-11T04:56:51.000000Z
handler_name : AAC audio
vendor_id : [0][0][0][0]
Stream #0:1[0x2](und): Video: h264 (Baseline) (avc1 / 0x31637661), yuv420p(progressive), 1280x720, 1331 kb/s, 25 fps, 25 tbr, 30k tbn (default)
Metadata:
creation_time : 2023-04-11T04:56:51.000000Z
handler_name : H.264/AVC video
vendor_id : [0][0][0][0]
encoder : AVC Coding
现在,我将循环两次,这样创建的文件长度将是原来的三倍。以下是我的命令行:
ffmpeg -stream_loop 2 -i input.mp4 -c copy outputlooped.mp4
现在,让我们再次使用 ffprobe 来检查输出视频的大小:
(base) krishna@Krishnas-MacBook-Pro ffmpeg % ffprobe outputlooped.mp4 -hide_banner
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'outputlooped.mp4':
Metadata:
major_brand : isom
minor_version : 512
compatible_brands: isomiso2avc1mp41
encoder : Lavf60.3.100
Duration: 00:01:10.22, start: 0.000000, bitrate: 1462 kb/s
Stream #0:0[0x1](und): Video: h264 (Baseline) (avc1 / 0x31637661), yuv420p(progressive), 1280x720, 1331 kb/s, 25 fps, 25 tbr, 30k tbn (default)
Metadata:
handler_name : H.264/AVC video
vendor_id : [0][0][0][0]
encoder : AVC Coding
Stream #0:1[0x2](und): Audio: aac (LC) (mp4a / 0x6134706D), 32000 Hz, mono, fltp, 126 kb/s (default)
Metadata:
handler_name : AAC audio
vendor_id : [0][0][0][0]
ffprobe 显示输出视频的长度为 1:10:22 分钟,相当于 3 x 23.42 秒。成功!我们测试并使用 FFmpeg 创建了一个视频循环。
常见的 FFmpeg 循环问题
我在循环视频时遇到了一些问题。以下是我的尝试和错误中的一些预防措施。
保持视频质量
循环播放视频不应导致质量下降。不过,如果你发现循环播放后视频质量下降,请确保在命令中使用 -c copy 选项。这样可以保持输出视频的编解码器不变,从而保持视频质量。
正在创建无限循环
如果输出视频未在您指定的持续时间或次数内循环,请仔细检查您的循环参数。确保您正确使用-stream_loop
选项。
音频同步
在循环播放视频时,音频有时会不同步。如果出现这种情况,您可能需要将音频流和视频流分开,分别循环播放,然后再合并。我再重复一遍,在循环播放视频时,请始终使用 -c copy选项,以保持原始视频质量。更改视频编解码器可能会导致质量下降。
本文为原创稿件,版权归作者所有,如需转载,请注明出处:https://www.nxrte.com/jishu/30111.html