Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Contribute to GitLab
Sign in / Register
Toggle navigation
F
ffmpeg.wasm-core
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Linshizhi
ffmpeg.wasm-core
Commits
530bbe96
Commit
530bbe96
authored
Jul 28, 2010
by
Stefano Sabatini
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Implement ffprobe -show_packets.
Originally committed as revision 24577 to
svn://svn.ffmpeg.org/ffmpeg/trunk
parent
82505611
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
54 additions
and
0 deletions
+54
-0
Changelog
Changelog
+1
-0
ffprobe-doc.texi
doc/ffprobe-doc.texi
+7
-0
ffprobe.c
ffprobe.c
+46
-0
No files found.
Changelog
View file @
530bbe96
...
...
@@ -26,6 +26,7 @@ version <next>:
- libavcore added
- SubRip subtitle file muxer and demuxer
- Chinese AVS encoding via libxavs
- ffprobe -show_packets option added
...
...
doc/ffprobe-doc.texi
View file @
530bbe96
...
...
@@ -95,6 +95,13 @@ stream.
All the container format information is printed within a section with
name ``FORMAT''.
@item -show
_
packets
Show information about each packet contained in the input multimedia
stream.
The information for each single packet is printed within a dedicated
section with name ``PACKET''.
@item -show
_
streams
Show information about each media stream contained in the input
multimedia stream.
...
...
ffprobe.c
View file @
530bbe96
...
...
@@ -32,6 +32,7 @@ const char program_name[] = "FFprobe";
const
int
program_birth_year
=
2007
;
static
int
do_show_format
=
0
;
static
int
do_show_packets
=
0
;
static
int
do_show_streams
=
0
;
static
int
convert_tags
=
0
;
...
...
@@ -101,6 +102,17 @@ static char *time_value_string(char *buf, int buf_size, int64_t val, const AVRat
return
buf
;
}
static
char
*
ts_value_string
(
char
*
buf
,
int
buf_size
,
int64_t
ts
)
{
if
(
ts
==
AV_NOPTS_VALUE
)
{
snprintf
(
buf
,
buf_size
,
"N/A"
);
}
else
{
snprintf
(
buf
,
buf_size
,
"%"
PRId64
,
ts
);
}
return
buf
;
}
static
const
char
*
media_type_string
(
enum
AVMediaType
media_type
)
{
switch
(
media_type
)
{
...
...
@@ -113,6 +125,36 @@ static const char *media_type_string(enum AVMediaType media_type)
}
}
static
void
show_packet
(
AVFormatContext
*
fmt_ctx
,
AVPacket
*
pkt
)
{
char
val_str
[
128
];
AVStream
*
st
=
fmt_ctx
->
streams
[
pkt
->
stream_index
];
printf
(
"[PACKET]
\n
"
);
printf
(
"codec_type=%s
\n
"
,
media_type_string
(
st
->
codec
->
codec_type
));
printf
(
"stream_index=%d
\n
"
,
pkt
->
stream_index
);
printf
(
"pts=%s
\n
"
,
ts_value_string
(
val_str
,
sizeof
(
val_str
),
pkt
->
pts
));
printf
(
"pts_time=%s
\n
"
,
time_value_string
(
val_str
,
sizeof
(
val_str
),
pkt
->
pts
,
&
st
->
time_base
));
printf
(
"dts=%s
\n
"
,
ts_value_string
(
val_str
,
sizeof
(
val_str
),
pkt
->
dts
));
printf
(
"dts_time=%s
\n
"
,
time_value_string
(
val_str
,
sizeof
(
val_str
),
pkt
->
dts
,
&
st
->
time_base
));
printf
(
"duration=%s
\n
"
,
ts_value_string
(
val_str
,
sizeof
(
val_str
),
pkt
->
duration
));
printf
(
"duration_time=%s
\n
"
,
time_value_string
(
val_str
,
sizeof
(
val_str
),
pkt
->
duration
,
&
st
->
time_base
));
printf
(
"size=%s
\n
"
,
value_string
(
val_str
,
sizeof
(
val_str
),
pkt
->
size
,
unit_byte_str
));
printf
(
"pos=%"
PRId64
"
\n
"
,
pkt
->
pos
);
printf
(
"flags=%c
\n
"
,
pkt
->
flags
&
AV_PKT_FLAG_KEY
?
'K'
:
'_'
);
printf
(
"[/PACKET]
\n
"
);
}
static
void
show_packets
(
AVFormatContext
*
fmt_ctx
)
{
AVPacket
pkt
;
av_init_packet
(
&
pkt
);
while
(
!
av_read_frame
(
fmt_ctx
,
&
pkt
))
show_packet
(
fmt_ctx
,
&
pkt
);
}
static
void
show_stream
(
AVFormatContext
*
fmt_ctx
,
int
stream_idx
)
{
AVStream
*
stream
=
fmt_ctx
->
streams
[
stream_idx
];
...
...
@@ -267,6 +309,9 @@ static int probe_file(const char *filename)
if
((
ret
=
open_input_file
(
&
fmt_ctx
,
filename
)))
return
ret
;
if
(
do_show_packets
)
show_packets
(
fmt_ctx
);
if
(
do_show_streams
)
for
(
i
=
0
;
i
<
fmt_ctx
->
nb_streams
;
i
++
)
show_stream
(
fmt_ctx
,
i
);
...
...
@@ -334,6 +379,7 @@ static const OptionDef options[] = {
{
"pretty"
,
0
,
{(
void
*
)
&
opt_pretty
},
"prettify the format of displayed values, make it more human readable"
},
{
"show_format"
,
OPT_BOOL
,
{(
void
*
)
&
do_show_format
}
,
"show format/container info"
},
{
"show_packets"
,
OPT_BOOL
,
{(
void
*
)
&
do_show_packets
},
"show packets info"
},
{
"show_streams"
,
OPT_BOOL
,
{(
void
*
)
&
do_show_streams
},
"show streams info"
},
{
NULL
,
},
};
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment