Toggle navigation
Toggle navigation
此项目
正在载入...
Sign in
胡斌
/
merge_av
转到一个项目
Toggle navigation
项目
群组
代码片段
帮助
Toggle navigation pinning
Project
Activity
Repository
Pipelines
Graphs
Issues
0
Merge Requests
0
Wiki
Network
Create a new issue
Builds
Commits
Authored by
胡斌
2018-04-17 18:23:06 +0800
Browse Files
Options
Browse Files
Download
Email Patches
Plain Diff
Commit
76d91c90e94901ac8e846fb6f1956d8f7edccd1b
76d91c90
1 parent
3499b851
for mp4 file, convert to ts,and then to mkv to get the correct duration
显示空白字符变更
内嵌
并排对比
正在显示
2 个修改的文件
包含
96 行增加
和
2 行删除
merge_av/merge_av.cpp
pip/merge_pip.cpp
merge_av/merge_av.cpp
查看文件 @
76d91c9
...
...
@@ -299,9 +299,56 @@ float parse_ffmpeg_duration(const char * file)
return
hour
*
3600
+
minute
*
60
+
sec
;
}
float
get_mp4_duration
(
const
char
*
mediafile
,
bool
bVideo
)
{
char
buf
[
2048
];
if
(
bVideo
){
sprintf
(
buf
,
"ffmpeg -y -i %s -vcodec copy -an %s.ts"
,
mediafile
,
mediafile
);
}
else
{
sprintf
(
buf
,
"ffmpeg -y -i %s -acodec copy -vn %s.ts"
,
mediafile
,
mediafile
);
}
run_shell_cmd
(
buf
);
if
(
bVideo
){
sprintf
(
buf
,
"ffmpeg -y -i %s.ts -vcodec copy -an %s.mkv"
,
mediafile
,
mediafile
);
}
else
{
sprintf
(
buf
,
"ffmpeg -y -i %s.ts -acodec copy -vn %s.mkv"
,
mediafile
,
mediafile
);
}
run_shell_cmd
(
buf
);
#ifdef WIN32
sprintf
(
buf
,
"ffmpeg -i %s.mkv > %s.txt 2>&1"
,
mediafile
,
mediafile
);
#else
sprintf
(
buf
,
"ffmpeg -i %s.mkv &> %s.txt"
,
mediafile
,
mediafile
);
#endif
run_shell_cmd
(
buf
);
if
(
!
keep_tmp_files
)
{
char
buf
[
2048
];
sprintf
(
buf
,
"%s.ts"
,
mediafile
);
remove_file
(
buf
);
sprintf
(
buf
,
"%s.mkv"
,
mediafile
);
remove_file
(
buf
);
}
sprintf
(
buf
,
"%s.txt"
,
mediafile
);
return
parse_ffmpeg_duration
(
buf
);
}
float
get_file_duration
(
const
char
*
mediafile
,
bool
bVideo
)
{
char
buf
[
2048
];
int
len
=
strlen
(
mediafile
);
if
(
len
>
3
)
{
if
(
!
_stricmp
(
mediafile
+
len
-
4
,
".mp4"
))
{
return
get_mp4_duration
(
mediafile
,
bVideo
);
}
}
if
(
bVideo
){
sprintf
(
buf
,
"ffmpeg -y -i %s -vcodec copy -an %s.mkv"
,
mediafile
,
mediafile
);
}
...
...
@@ -1007,7 +1054,7 @@ void get_outinfo_file_name(char * input)
int
main
(
int
argc
,
char
*
argv
[])
{
if
(
argc
<
2
)
{
printf
(
" merge_av 1.0.
8
\n
"
);
printf
(
" merge_av 1.0.
9
\n
"
);
printf
(
" run ffmpeg to merge audio and video files according to the record info file,
\n
usage:"
);
printf
(
"
\n
%s record_info_filename [-p] [-k]"
,
argv
[
0
]);
printf
(
"
\n
-p :only print the command,don't run ffmpeg"
);
...
...
pip/merge_pip.cpp
查看文件 @
76d91c9
...
...
@@ -343,9 +343,56 @@ float parse_ffmpeg_duration(const char * file)
return
hour
*
3600
+
minute
*
60
+
sec
;
}
float
get_mp4_duration
(
const
char
*
mediafile
,
bool
bVideo
)
{
char
buf
[
2048
];
if
(
bVideo
){
sprintf
(
buf
,
"ffmpeg -y -i %s -vcodec copy -an %s.ts"
,
mediafile
,
mediafile
);
}
else
{
sprintf
(
buf
,
"ffmpeg -y -i %s -acodec copy -vn %s.ts"
,
mediafile
,
mediafile
);
}
run_shell_cmd
(
buf
);
if
(
bVideo
){
sprintf
(
buf
,
"ffmpeg -y -i %s.ts -vcodec copy -an %s.mkv"
,
mediafile
,
mediafile
);
}
else
{
sprintf
(
buf
,
"ffmpeg -y -i %s.ts -acodec copy -vn %s.mkv"
,
mediafile
,
mediafile
);
}
run_shell_cmd
(
buf
);
#ifdef WIN32
sprintf
(
buf
,
"ffmpeg -i %s.mkv > %s.txt 2>&1"
,
mediafile
,
mediafile
);
#else
sprintf
(
buf
,
"ffmpeg -i %s.mkv &> %s.txt"
,
mediafile
,
mediafile
);
#endif
run_shell_cmd
(
buf
);
if
(
!
keep_tmp_files
)
{
char
buf
[
2048
];
sprintf
(
buf
,
"%s.ts"
,
mediafile
);
remove_file
(
buf
);
sprintf
(
buf
,
"%s.mkv"
,
mediafile
);
remove_file
(
buf
);
}
sprintf
(
buf
,
"%s.txt"
,
mediafile
);
return
parse_ffmpeg_duration
(
buf
);
}
float
get_file_duration
(
const
char
*
mediafile
,
bool
bVideo
)
{
char
buf
[
2048
];
int
len
=
strlen
(
mediafile
);
if
(
len
>
3
)
{
if
(
!
_stricmp
(
mediafile
+
len
-
4
,
".mp4"
))
{
return
get_mp4_duration
(
mediafile
,
bVideo
);
}
}
if
(
bVideo
){
sprintf
(
buf
,
"ffmpeg -y -i %s -vcodec copy -an %s.mkv"
,
mediafile
,
mediafile
);
}
...
...
@@ -1440,7 +1487,7 @@ void get_outinfo_file_name(char * input)
int
main
(
int
argc
,
char
*
argv
[])
{
if
(
argc
<
3
)
{
printf
(
" merge_pip 1.0.
0
\n
"
);
printf
(
" merge_pip 1.0.
1
\n
"
);
printf
(
" run ffmpeg to merge video files to one pip video according to record info file,
\n
usage:"
);
printf
(
"
\n
%s record_info_filename1 record_filename2 [-p] [-k]"
,
argv
[
0
]);
printf
(
"
\n
-p :only print the command,don't run ffmpeg"
);
...
...
请
注册
或
登录
后发表评论