FFmpeg 5.1.6
Data Structures | Macros | Functions
muxing.c File Reference

libavformat API example. More...

#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <libavutil/avassert.h>
#include <libavutil/channel_layout.h>
#include <libavutil/opt.h>
#include <libavutil/mathematics.h>
#include <libavutil/timestamp.h>
#include <libavcodec/avcodec.h>
#include <libavformat/avformat.h>
#include <libswscale/swscale.h>
#include <libswresample/swresample.h>

Go to the source code of this file.

Data Structures

struct  OutputStream
 

Macros

#define STREAM_DURATION   10.0
 
#define STREAM_FRAME_RATE   25 /* 25 images/s */
 
#define STREAM_PIX_FMT   AV_PIX_FMT_YUV420P /* default pix_fmt */
 
#define SCALE_FLAGS   SWS_BICUBIC
 

Functions

static void log_packet (const AVFormatContext *fmt_ctx, const AVPacket *pkt)
 
static int write_frame (AVFormatContext *fmt_ctx, AVCodecContext *c, AVStream *st, AVFrame *frame, AVPacket *pkt)
 
static void add_stream (OutputStream *ost, AVFormatContext *oc, const AVCodec **codec, enum AVCodecID codec_id)
 
static AVFramealloc_audio_frame (enum AVSampleFormat sample_fmt, const AVChannelLayout *channel_layout, int sample_rate, int nb_samples)
 
static void open_audio (AVFormatContext *oc, const AVCodec *codec, OutputStream *ost, AVDictionary *opt_arg)
 
static AVFrameget_audio_frame (OutputStream *ost)
 
static int write_audio_frame (AVFormatContext *oc, OutputStream *ost)
 
static AVFramealloc_picture (enum AVPixelFormat pix_fmt, int width, int height)
 
static void open_video (AVFormatContext *oc, const AVCodec *codec, OutputStream *ost, AVDictionary *opt_arg)
 
static void fill_yuv_image (AVFrame *pict, int frame_index, int width, int height)
 
static AVFrameget_video_frame (OutputStream *ost)
 
static int write_video_frame (AVFormatContext *oc, OutputStream *ost)
 
static void close_stream (AVFormatContext *oc, OutputStream *ost)
 
int main (int argc, char **argv)
 

Detailed Description

libavformat API example.

Output a media file in any supported libavformat format. The default codecs are used.

Definition in file muxing.c.

Macro Definition Documentation

◆ STREAM_DURATION

#define STREAM_DURATION   10.0
Examples
muxing.c.

Definition at line 47 of file muxing.c.

◆ STREAM_FRAME_RATE

#define STREAM_FRAME_RATE   25 /* 25 images/s */
Examples
muxing.c.

Definition at line 48 of file muxing.c.

◆ STREAM_PIX_FMT

#define STREAM_PIX_FMT   AV_PIX_FMT_YUV420P /* default pix_fmt */
Examples
muxing.c.

Definition at line 49 of file muxing.c.

◆ SCALE_FLAGS

#define SCALE_FLAGS   SWS_BICUBIC
Examples
muxing.c.

Definition at line 51 of file muxing.c.

Function Documentation

◆ log_packet()

static void log_packet ( const AVFormatContext fmt_ctx,
const AVPacket pkt 
)
static
Examples
muxing.c.

Definition at line 73 of file muxing.c.

Referenced by write_frame().

◆ write_frame()

static int write_frame ( AVFormatContext fmt_ctx,
AVCodecContext c,
AVStream st,
AVFrame frame,
AVPacket pkt 
)
static
Examples
muxing.c.

Definition at line 84 of file muxing.c.

Referenced by write_audio_frame(), and write_video_frame().

◆ add_stream()

static void add_stream ( OutputStream ost,
AVFormatContext oc,
const AVCodec **  codec,
enum AVCodecID  codec_id 
)
static
Examples
muxing.c.

Definition at line 126 of file muxing.c.

Referenced by main().

◆ alloc_audio_frame()

static AVFrame * alloc_audio_frame ( enum AVSampleFormat  sample_fmt,
const AVChannelLayout channel_layout,
int  sample_rate,
int  nb_samples 
)
static
Examples
muxing.c.

Definition at line 217 of file muxing.c.

Referenced by open_audio().

◆ open_audio()

static void open_audio ( AVFormatContext oc,
const AVCodec codec,
OutputStream ost,
AVDictionary opt_arg 
)
static
Examples
muxing.c.

Definition at line 245 of file muxing.c.

Referenced by main().

◆ get_audio_frame()

static AVFrame * get_audio_frame ( OutputStream ost)
static
Examples
muxing.c.

Definition at line 311 of file muxing.c.

Referenced by write_audio_frame().

◆ write_audio_frame()

static int write_audio_frame ( AVFormatContext oc,
OutputStream ost 
)
static
Examples
muxing.c.

Definition at line 340 of file muxing.c.

Referenced by main().

◆ alloc_picture()

static AVFrame * alloc_picture ( enum AVPixelFormat  pix_fmt,
int  width,
int  height 
)
static
Examples
muxing.c.

Definition at line 385 of file muxing.c.

Referenced by open_video().

◆ open_video()

static void open_video ( AVFormatContext oc,
const AVCodec codec,
OutputStream ost,
AVDictionary opt_arg 
)
static
Examples
muxing.c.

Definition at line 408 of file muxing.c.

Referenced by main().

◆ fill_yuv_image()

static void fill_yuv_image ( AVFrame pict,
int  frame_index,
int  width,
int  height 
)
static
Examples
muxing.c.

Definition at line 453 of file muxing.c.

Referenced by get_video_frame().

◆ get_video_frame()

static AVFrame * get_video_frame ( OutputStream ost)
static
Examples
muxing.c.

Definition at line 474 of file muxing.c.

Referenced by write_video_frame().

◆ write_video_frame()

static int write_video_frame ( AVFormatContext oc,
OutputStream ost 
)
static
Examples
muxing.c.

Definition at line 520 of file muxing.c.

Referenced by main().

◆ close_stream()

static void close_stream ( AVFormatContext oc,
OutputStream ost 
)
static
Examples
muxing.c.

Definition at line 525 of file muxing.c.

Referenced by main().

◆ main()

int main ( int  argc,
char **  argv 
)
Examples
muxing.c.

Definition at line 538 of file muxing.c.