OBJUI

Python使用FFmpeg切片视频生成m3u8文件

2025-03-26 19:42:44 677
在 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 脚本,等待切片过程完成。
更多精彩,请关注公众号

微信公众号

评论:
热门文章: