使用Python批量剪辑视频
本帖最后由 loveme 于 2023-4-27 03:54 编辑发错了,请版主帮忙移到编程语言区,谢谢
1、使用Python批量修改视频剪切掉第一秒
2、自动遍历当前目录下子目录内的视频文件
3、使用tqdm库用于显示进度条和处理视频文件的估计剩余时间
1000多个视频,处理速度非常快,可以看下图。
```
import os
import subprocess
import time
from tqdm import tqdm
# 设置输入和输出文件夹
input_folder = "D:\\Download\\源码V 1.91 程序\\video_download"
output_folder = "D:\\hm\\DEMO\\output"
# 获取输入文件夹中所有的视频文件
videos = []
for root, dirs, files in os.walk(input_folder):
for file in files:
if file.endswith(".mp4"):
videos.append(os.path.join(root, file))
# 循环处理每个视频文件
total_time = 0
with tqdm(total=len(videos)) as pbar:
for video in videos:
# 构建输入和输出文件路径
input_path = video
output_path = os.path.join(output_folder, os.path.relpath(input_path, input_folder))
# 创建输出文件夹
os.makedirs(os.path.dirname(output_path), exist_ok=True)
# 使用FFmpeg剪切第一秒并保存到输出文件
start_time = time.time()
subprocess.run(["ffmpeg", "-i", input_path, "-ss", "00:00:01.000", "-c", "copy", "-loglevel", "quiet", output_path])
end_time = time.time()
# 更新进度条和时间
total_time += end_time - start_time
pbar.update(1)
pbar.set_description(f"Total time taken: {total_time:.2f} seconds")
``` 高手{:1_921:},请教如果想切最后一秒怎么改 只能删除特点时间点么? 只能删除第一秒的吗? 强迫症看不得这路径写法,直接用/也可以啊,用\还得转义 这段 Python 脚本的功能是从指定的文件夹中提取 mp4 视频的第一秒,并将其保存到指定的输出文件夹中,同时计算整个过程的时间并输出。脚本中用到了 tqdm 和 subprocess 库。
脚本中有一个小问题需要修正:在使用FFmpeg剪切视频时,应当强制覆盖输出文件,因为输出文件可能已经存在。可以添加 `-y` 参数来实现。
修改后的代码如下:
```python
import os
import subprocess
import time
from tqdm import tqdm
# 设置输入和输出文件夹
input_folder = "D:\\Download\\源码V 1.91 程序\\video_download"
output_folder = "D:\\hm\\DEMO\\output"
# 获取输入文件夹中所有的视频文件
videos = []
for root, dirs, files in os.walk(input_folder):
for file in files:
if file.endswith(".mp4"):
videos.append(os.path.join(root, file))
# 循环处理每个视频文件
total_time = 0
with tqdm(total=len(videos)) as pbar:
for video in videos:
# 构建输入和输出文件路径
input_path = video
output_path = os.path.join(output_folder, os.path.relpath(input_path, input_folder))
# 创建输出文件夹
os.makedirs(os.path.dirname(output_path), exist_ok=True)
# 使用FFmpeg剪切第一秒并保存到输出文件
start_time = time.time()
subprocess.run(["ffmpeg", "-y", "-i", input_path, "-ss", "00:00:01.000", "-c", "copy", "-loglevel", "quiet", output_path])
end_time = time.time()
# 更新进度条和时间
total_time += end_time - start_time
pbar.update(1)
pbar.set_description(f"Total time taken: {total_time:.2f} seconds")
```
希望这个回答能够帮助到您! beidou957 发表于 2023-4-27 13:01
只能删除第一秒的吗?
```
# 创建输出文件夹
os.makedirs(os.path.dirname(output_path), exist_ok=True)
# 使用FFmpeg剪切最后一秒并保存到输出文件
duration = subprocess.check_output(['ffprobe', '-i', input_path, '-show_entries', 'format=duration', '-v', 'quiet', '-of', 'csv=%s' % ("p=0")])
start_time = time.time()
subprocess.run(["ffmpeg", "-i", input_path, "-ss", f"{float(duration)-1:.3f}", "-c", "copy", "-loglevel", "quiet", output_path])
end_time = time.time()
```
修改这一段代码就可以了 gc588 发表于 2023-4-27 13:54
这段 Python 脚本的功能是从指定的文件夹中提取 mp4 视频的第一秒,并将其保存到指定的输出文件夹中,同时 ...
{:1_893:}对的还是你考虑得比较周全
页:
[1]