Python使用FFmpeg切片视频生成m3u8文件
在 Python 中可以借助 `subprocess` 模块调用 FFmpeg 命令来对视频进行切片并生成 `m3u8` 文件。
### 1. 安装 FFmpeg
要保证系统已经安装了 FFmpeg,并且其可执行文件的路径已添加到系统的环境变量中。你可以通过以下命令来验证 FFmpeg 是否安装成功:
```bash
ffmpeg -version
```
若能正常输出版本信息,就表明安装成功。如果未安装去官网下载安装:https://ffmpeg.org/
### 2. 编写 Python 代码
下面是一个简单的 Python 示例,它使用 `subprocess` 模块调用 FFmpeg 命令来切片视频并生成 `m3u8` 文件:
```python
import subprocess
def slice_video(input_file, output_dir, segment_time=10):
"""
对视频进行切片并生成 m3u8 文件
:param input_file: 输入视频文件的路径
:param output_dir: 输出目录的路径
:param segment_time: 每个切片的时长(秒),默认为 10 秒
"""
try:
# FFmpeg 命令
command = [
'ffmpeg',
'-i', input_file,
'-c:v', 'libx264',
'-c:a', 'aac',
'-hls_time', str(segment_time),
'-hls_list_size', '0',
'-f', 'hls',
f'{output_dir}/output.m3u8'
]
# 执行 FFmpeg 命令
subprocess.run(command, check=True)
print("视频切片完成,m3u8 文件已生成。")
except subprocess.CalledProcessError as e:
print(f"切片过程中出现错误: {e}")
except Exception as e:
print(f"发生未知错误: {e}")
if __name__ == "__main__":
input_video = "input.mp4" # 替换为你的输入视频文件路径
output_directory = "output" # 替换为你的输出目录路径
slice_video(input_video, output_directory)
```
### 3. 代码解释
* **`slice_video` 函数**:该函数接收三个参数,分别是输入视频文件的路径、输出目录的路径以及每个切片的时长(默认为 10 秒)。
* **FFmpeg 命令**:
* `-i`:指定输入视频文件。
* `-c:v libx264`:使用 H.264 视频编码器。
* `-c:a aac`:使用 AAC 音频编码器。
* `-hls_time`:指定每个切片的时长。
* `-hls_list_size 0`:指定 m3u8 文件中保存的切片数量为无限。
* `-f hls`:指定输出格式为 HLS(HTTP Live Streaming)。
* `{output_dir}/output.m3u8`:指定输出的 m3u8 文件路径。
* **`subprocess.run` 函数**:用于执行 FFmpeg 命令,并通过 `check=True` 参数确保命令执行成功。
### 4. 使用方法
* 把 `input_video` 替换为你要切片的视频文件的实际路径。
* 把 `output_directory` 替换为你想要保存切片文件和 m3u8 文件的目录的实际路径。
* 运行 Python 脚本,等待切片过程完成。
评论: