Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenDocCN
it-ebooks-blog
提交
1b14311e
I
it-ebooks-blog
项目概览
OpenDocCN
/
it-ebooks-blog
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
I
it-ebooks-blog
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
1b14311e
编写于
5月 13, 2020
作者:
W
wizardforcel
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
2020-05-13 15:46:42
上级
dbffb7cc
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
68 addition
and
0 deletion
+68
-0
util/audiosplit.py
util/audiosplit.py
+68
-0
未找到文件。
util/audiosplit.py
0 → 100644
浏览文件 @
1b14311e
from
os
import
path
import
subprocess
as
subp
import
argparse
import
re
def
fmt_tm
(
tm
):
return
f
'
{
tm
//
3600
:
02
d
}
:
{
tm
//
60
%
60
:
02
d
}
:
{
tm
%
60
:
02
d
}
'
def
split
(
fname
,
st
,
ed
,
ofname
=
None
):
if
not
ofname
:
ofname
=
fname
subp
.
Popen
(
[
'ffmpeg'
,
'-i'
,
fname
,
'-ss'
,
fmt_tm
(
st
),
'-to'
,
fmt_tm
(
ed
),
'-acodec'
,
'copy'
,
ofname
,
],
stdout
=
subp
.
PIPE
,
stderr
=
subp
.
PIPE
,
).
communicate
()
def
extname
(
fname
):
m
=
re
.
search
(
r
'\.([^\.]+)$'
,
fname
)
if
not
m
:
return
''
else
:
return
m
.
group
(
1
)
def
get_total
(
fname
):
res
=
subp
.
Popen
(
[
'ffmpeg'
,
'-i'
,
fname
],
stdout
=
subp
.
PIPE
,
stderr
=
subp
.
PIPE
,
).
communicate
()[
1
].
decode
(
'latin1'
)
m
=
re
.
search
(
r
'Duration: (\d+):(\d+):(\d+)'
,
res
)
if
not
m
:
return
None
return
[
int
(
m
.
group
(
1
)),
int
(
m
.
group
(
2
)),
int
(
m
.
group
(
3
))]
def
main
():
parser
=
argparse
.
ArgumentParser
()
parser
.
add_argument
(
'fname'
,
help
=
'file name'
)
parser
.
add_argument
(
'--num'
,
'-n'
,
help
=
'number to split'
,
type
=
int
,
required
=
True
)
args
=
parser
.
parse_args
()
if
not
path
.
exists
(
args
.
fname
):
print
(
'未找到文件'
)
return
ofname_temp
=
re
.
sub
(
r
'\.[^\.]+$'
,
''
,
args
.
fname
)
+
\
'-{st}-{ed}.mp3'
total
=
get_total
(
args
.
fname
)
if
not
total
:
print
(
'视频信息读取失败'
)
return
total
=
total
[
0
]
*
3600
+
total
[
1
]
*
60
+
total
[
2
]
each
=
total
//
args
.
num
delims
=
[
each
*
i
for
i
in
range
(
args
.
num
)]
delims
.
append
(
total
)
for
st
,
ed
in
zip
(
delims
[:
-
1
],
delims
[
1
:]):
ofname
=
ofname_temp
.
replace
(
'{st}'
,
str
(
st
))
\
.
replace
(
'{ed}'
,
str
(
ed
))
print
(
ofname
)
split
(
args
.
fname
,
st
,
ed
,
ofname
)
if
__name__
==
'__main__'
:
main
()
\ No newline at end of file
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录