Go to the documentation of this file.
38 #define FILENAME_BUF_SIZE 4096
39 #define PKTFILESUFF "_%08" PRId64 "_%02d_%010" PRId64 "_%06d_%c.bin"
43 fprintf(stderr,
"Dump (up to maxpkts) AVPackets as they are demuxed by libavformat.\n");
44 fprintf(stderr,
"Each packet is dumped in its own file named like\n");
45 fprintf(stderr,
"$(basename file.ext)_$PKTNUM_$STREAMINDEX_$STAMP_$SIZE_$FLAGS.bin\n");
46 fprintf(stderr,
"pktdumper [-nw] file [maxpkts]\n");
47 fprintf(stderr,
"-n\twrite No file at all, only demux.\n");
48 fprintf(stderr,
"-w\tWait at end of processing instead of quitting.\n");
52 int main(
int argc,
char **argv)
64 if ((argc > 1) && !strncmp(argv[1],
"-", 1)) {
65 if (strchr(argv[1],
'w'))
67 if (strchr(argv[1],
'n'))
75 maxpkts = atoi(argv[2]);
76 av_strlcpy(fntemplate, argv[1],
sizeof(fntemplate));
77 if (strrchr(argv[1],
'/'))
78 av_strlcpy(fntemplate, strrchr(argv[1],
'/') + 1,
sizeof(fntemplate));
79 if (strrchr(fntemplate,
'.'))
80 *strrchr(fntemplate,
'.') =
'\0';
81 if (strchr(fntemplate,
'%')) {
82 fprintf(stderr,
"cannot use filenames containing '%%'\n");
85 if (strlen(fntemplate) +
sizeof(
PKTFILESUFF) >=
sizeof(fntemplate) - 1) {
86 fprintf(stderr,
"filename too long\n");
90 printf(
"FNTEMPLATE: '%s'\n", fntemplate);
94 fprintf(stderr,
"cannot open input: error %d\n", err);
100 fprintf(stderr,
"avformat_find_stream_info: error %d\n", err);
106 fprintf(stderr,
"av_packet_alloc: error %d\n",
AVERROR(ENOMEM));
112 snprintf(pktfilename,
sizeof(pktfilename), fntemplate, pktnum,
118 fd = open(pktfilename, O_WRONLY | O_CREAT, 0644);
121 fprintf(stderr,
"write: error %d\n", err);
128 if (maxpkts && (pktnum >= maxpkts))
void av_packet_unref(AVPacket *pkt)
Wipe the packet.
Filter the word “frame” indicates either a video frame or a group of audio as stored in an AVFrame structure Format for each input and each output the list of supported formats For video that means pixel format For audio that means channel sample they are references to shared objects When the negotiation mechanism computes the intersection of the formats supported at each end of a all references to both lists are replaced with a reference to the intersection And when a single format is eventually chosen for a link amongst the remaining all references to the list are updated That means that if a filter requires that its input and output have the same format amongst a supported all it has to do is use a reference to the same list of formats query_formats can leave some formats unset and return AVERROR(EAGAIN) to cause the negotiation mechanism toagain later. That can be used by filters with complex requirements to use the format negotiated on one link to set the formats supported on another. Frame references ownership and permissions
int av_read_frame(AVFormatContext *s, AVPacket *pkt)
Return the next frame of a stream.
#define AV_PKT_FLAG_KEY
The packet contains a keyframe.
void av_packet_free(AVPacket **pkt)
Free the packet, if the packet is reference counted, it will be unreferenced first.
void avformat_close_input(AVFormatContext **s)
Close an opened input AVFormatContext.
int avformat_open_input(AVFormatContext **ps, const char *url, const AVInputFormat *fmt, AVDictionary **options)
Open an input stream and read the header.
int av_usleep(unsigned usec)
Sleep for a period of time.
#define FILENAME_BUF_SIZE
int avformat_find_stream_info(AVFormatContext *ic, AVDictionary **options)
Read packets of a media file to get stream information.
printf("static const uint8_t my_array[100] = {\n")
int flags
A combination of AV_PKT_FLAG values.
AVPacket * av_packet_alloc(void)
Allocate an AVPacket and set its fields to default values.
static int usage(int ret)
int64_t pts
Presentation timestamp in AVStream->time_base units; the time at which the decompressed packet will b...
int main(int argc, char **argv)
This structure stores compressed data.
size_t av_strlcpy(char *dst, const char *src, size_t size)
Copy the string src to dst, but no more than size - 1 bytes, and null-terminate dst.