用数据恢复恢复大量下载的视频,数量是对的,但能不能播放是另一回事了,为了方便快捷查看视频是否播放,就让ChatGpt写了一个扫描磁盘上的视频是否能播放的脚本,并把不能播放路径的保存为video_unplayable.csv
这个需要安装FFmpeg,如何安装可以自行百度。
[rihide]
import
os
import
ffmpeg
import
csv
VIDEO_EXTENSIONS
=
[
'.mp4'
,
'.mkv'
,
'.avi'
,
'.mov'
,
'.flv'
]
def
check_video_file(filepath):
try
:
# 使用FFmpeg打开视频文件
stream
=
ffmpeg.
input
(filepath)
# 提取一个帧作为缩略图
thumbnail
=
ffmpeg.
filter
(stream,
'select'
,
'gte(n,1)'
).output(
'pipe:'
, vframes
=
1
,
format
=
'image2'
, vcodec
=
'png'
).run(capture_stdout
=
True
)
if
thumbnail:
return
True
else
:
return
False
except
ffmpeg.Error as e:
(f
"视频文件 {filepath} 无法播放"
)
return
False
def
check_all_videos_in_folder(folder_path):
# 创建 CSV 文件
with
open
(
'video_unplayable.csv'
, mode
=
'w'
, newline
=
'') as csv_file:
writer
=
csv.writer(csv_file)
writer.writerow([
'文件路径'
])
# 遍历文件夹中的所有文件和子文件夹
for
root, dirs, files
in
os.walk(folder_path):
for
filename
in
files:
# 获取文件路径
file_path
=
os.path.join(root, filename)
# 检查文件后缀名是否为视频文件
_, extension
=
os.path.splitext(filename)
if
extension.lower()
in
VIDEO_EXTENSIONS:
if
not
check_video_file(file_path):
writer.writerow([file_path])
for
foldername
in
dirs:
# 递归调用函数检查子文件夹
check_all_videos_in_folder(os.path.join(root, foldername))
folder_path
=
r
'F:\video'
#需要扫描的视频路径
check_all_videos_in_folder(folder_path)
[/rihide]
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END
暂无评论内容