|
星级打分
平均分:NAN 参与人数:0 我的评分:未评
他就是fmpeg切割视频为图序列, 这么简单的,
你看他代码啊
打开 你的那个 extract images from video data_src.bat
@echo off
call _internal\setenv.bat
mkdir "%WORKSPACE%\data_src" 2>nul
"%PYTHON_EXECUTABLE%" "%DFL_ROOT%\main.py" videoed extract-video ^
--input-file "%WORKSPACE%\data_src.*" ^
--output-dir "%WORKSPACE%\data_src"
pause
找到 main.py extract-video 看他 from mainscripts import VideoEd
你打开 [size=13.0667px]mainscripts 就是你 这个切割视频为帧图的
[size=13.0667px]
[size=13.0667px]
[size=13.0667px]
[size=13.0667px]
[size=13.0667px]
首先 ffmpeg.probe获取视频信息,找到总帧数, 然后python 假如用 for
executor = ThreadPoolExecutor(max_workers=10) 假设你10个并行,
他切割视频的就是这个函数
extract_video(input_file, output_dir, output_ext=None, fps=None):
把里面的 信息重新给我定义一个函数
注意是 job. 这个部分的, 为了 并行,比方定义个函数 extract_videos
比方说
def extract_videos ():
job = ffmpeg.input(str(input_file_path))
kwargs = {'pix_fmt': 'rgb24'}
if fps != 0:
kwargs.update ({'r':str(fps)})
if output_ext == 'jpg':
kwargs.update ({'q:v':'2'}) #highest quality for jpg
job = job.output( str (output_path / ('%5d.'+output_ext)), **kwargs )
try:
job = job.run()
except:
io.log_err ("ffmpeg fail, job commandline:" + str(job.compile()) )
for t in range(总帧数):
executor.submit(main, extract_videos )
executor.shutdown()
这样就多线程了。。。
[size=13.0667px]这么简单的 我不晓得 有撒子好说的。 我上面只是简单的 说下 多线程的 方法, 当然 为了 防止异常 我们都不会那么写并行代码。 我就是举个简单例子哈。
|
|