Formats contain one or more encoded and muxed streams. We usually read these in chunks, which are often called frames (though in certain cases, FFmpeg refers exclusively to decoded, raw media chunks as frames, and encoded chunks as packets, which may be confusing). To read a single frame from a format, use the following:
// A Format Context - see other examples on how to create it AVFormatContext *formatContext; // Initialize the AVPacket manually AVPacket avPacket; av_init_packet(&avPacket); // set fields of avPacket to default. avPacket.data = NULL; avPacket.size = 0; // Read from the context into the packet if(av_read_frame(formatContext, &avPacket) == 0){ // nothing read } // Use the packet (such as decoding it and playing it) // Free packet av_packet_unref(&avPacket);