📜  使用 ffmpeg 按大小分割视频文件 - Shell-Bash (1)

📅  最后修改于: 2023-12-03 15:36:27.775000             🧑  作者: Mango

使用 ffmpeg 按大小分割视频文件 - Shell/Bash

当需要把一个大视频文件分割成多个 smaller chunks 时,可以使用 ffmpeg 进行分割。ffmpeg 可以在音视频处理的领域中发挥重要的作用,同时也是 Shell/Bash 编程语言中不可或缺的工具。

ffmpeg 简介

FFmpeg 是一组开源的音频和视频处理库。它支持包括 MOV、AVI、MP4 和 FLV 在内的各种视频格式。使用 FFmpeg,可以进行音视频转码、转封装、音视频裁剪、合并等操作。

在本文中,我们将使用 FFmpeg 的命令行工具进行视频分割。

环境准备

为了使用 ffmpeg 进行视频分割,需要在本地系统安装 FFmpeg。可参考以下步骤进行安装:

Ubuntu 系统
sudo apt update
sudo apt install ffmpeg
macOS 系统
brew update
brew install ffmpeg
视频分割

下面以将 big_video.mp4 文件分割成每个 1GB 的 smaller chunks 为例进行介绍。

基本命令 Syntax
ffmpeg -i <input_file> -c copy -map 0 -segment_time <segment_time> -f segment <output_file_prefix>_<segment_number>.<output_file_extension>

该命令行将输入文件输入到容器中以提取出所有帧,并将每个片段的持续时间指定为 <segment_time>,并将每个片段保存到文件系统上的文件中,文件名包括 <output_file_prefix>,数字和文件扩展名 <output_file_extension>,例如:out_001.mp4

其中:

  • <input_file>:要分割的视频文件名;
  • <output_file_prefix>:输出文件名的前缀;
  • <output_file_extension>:输出文件名的扩展名;
  • <segment_time>:每个小分片的时长。
实际操作

假设我们的大视频文件为 big_video.mp4,这个文件太大了,我们需要把它分割成若干小文件。以下是我们将视频文件分割成每个为 1GB 的小文件的指令:

ffmpeg -i big_video.mp4 -c copy -map 0 -segment_time 01:00:00 -f segment big_video_part_%03d.mp4

命令解析:

  • -i big_video.mp4:表示需要被分割的视频文件;
  • -c copy:将不需要重新编码,直接从原始视频文件复制给新的分割视频文件;
  • -map 0:将原始文件中的所有源流映射到输出文件;
  • -segment_time 01:00:00:每个小分片的时长为 1 个小时,也可以使用秒作为单位,如 -segment_time 3600
  • -f segment:分割输入文件并输出到文件系统中;
  • big_video_part_%03d.mp4:表示输出文件的命名格式, %03d 表示输出文件名的三位数字编号。

当完成命令行操作后,将会在同一目录下看到 big_video_part_001.mp4, big_video_part_002.mp4, ...等分割出来的视频文件。

总结

本文向大家介绍了如何使用 ffmpeg 按大小分割大视频文件。FFmpeg 可以进行音视频处理,分割视频文件只是它多项工具的其中一项。本文提供了在 Ubuntu 和 macOS 上安装 FFmpeg 的步骤以及详细的视频分割工具使用方法。