IJKPlayer播放器参数说明
1、参考定义:
IjkPlayer可以通过setOption设置参数,分为:
OPT_CATEGORY_FORMAT表示格式方面的设置,一般直接操作的是avformat模块;
OPT_CATEGORY_CODEC是编解码方面的设置,一般直接操作的是avcodec模块;
OPT_CATEGORY_SWS是图像大小方面的设置,一般直接操作的是swscale模块;
OPT_CATEGORY_PLAYER是播放器方面的设置,优化播放器性能方面主要靠OPT_CATEGORY_PLAYER参数。
定义:
public static final int OPT_CATEGORY_FORMAT = 1;
public static final int OPT_CATEGORY_CODEC = 2;
public static final int OPT_CATEGORY_SWS = 3;
public static final int OPT_CATEGORY_PLAYER = 4;
2、日志参数设置
1、定义:tv.danmaku.ijk.media.player.IjkMediaPlayer.java中
2、设置方式:
ijkMediaPlayer.native_setLogLevel(IjkMediaPlayer.IJK_LOG_DEBUG);
3、值定义:
public static final int IJK_LOG_UNKNOWN = 0;
public static final int IJK_LOG_VERBOSE = 2;
public static final int IJK_LOG_DEBUG = 3;
public static final int IJK_LOG_INFO = 4;
public static final int IJK_LOG_WARN = 5;
public static final int IJK_LOG_ERROR = 6;
public static final int IJK_LOG_FATAL = 7;
public static final int IJK_LOG_SILENT = 8;
3、播放设置参数
static const AVOption ffp_context_options[] = {
// original options in ffplay.c
// FFP_MERGE: x, y, s, fs
{ "an", "disable audio",
OPTION_OFFSET(audio_disable), OPTION_INT(0, 0, 1) },
{ "vn", "disable video",
OPTION_OFFSET(video_disable), OPTION_INT(0, 0, 1) },
// FFP_MERGE: sn, ast, vst, sst
// TODO: ss
{ "nodisp", "disable graphical display",
OPTION_OFFSET(display_disable), OPTION_INT(0, 0, 1) },
{ "volume", "set startup volume 0=min 100=max",
OPTION_OFFSET(startup_volume), OPTION_INT(100, 0, 100) },
// FFP_MERGE: f, pix_fmt, stats
{ "fast", "non spec compliant optimizations",
OPTION_OFFSET(fast), OPTION_INT(0, 0, 1) },
// FFP_MERGE: genpts, drp, lowres, sync, autoexit, exitonkeydown, exitonmousedown
{ "loop", "set number of times the playback shall be looped",
OPTION_OFFSET(loop), OPTION_INT(1, INT_MIN, INT_MAX) },
{ "infbuf", "don't limit the input buffer size (useful with realtime streams)",
OPTION_OFFSET(infinite_buffer), OPTION_INT(0, 0, 1) },
{ "framedrop", "drop frames when cpu is too slow",
OPTION_OFFSET(framedrop), OPTION_INT(0, -1, 120) },
{ "seek-at-start", "set offset of player should be seeked",
OPTION_OFFSET(seek_at_start), OPTION_INT64(0, 0, INT_MAX) },
{ "subtitle", "decode subtitle stream",
OPTION_OFFSET(subtitle), OPTION_INT(0, 0, 1) },
// FFP_MERGE: window_title
#if CONFIG_AVFILTER
{ "af", "audio filters",
OPTION_OFFSET(afilters), OPTION_STR(NULL) },
{ "vf0", "video filters 0",
OPTION_OFFSET(vfilter0), OPTION_STR(NULL) },
#endif
{ "rdftspeed", "rdft speed, in msecs",
OPTION_OFFSET(rdftspeed), OPTION_INT(0, 0, INT_MAX) },
// FFP_MERGE: showmode, default, i, codec, acodec, scodec, vcodec
// TODO: autorotate
{ "find_stream_info", "read and decode the streams to fill missing information with heuristics" ,
OPTION_OFFSET(find_stream_info), OPTION_INT(1, 0, 1) },
// extended options in ff_ffplay.c
{ "max-fps", "drop frames in video whose fps is greater than max-fps",
OPTION_OFFSET(max_fps), OPTION_INT(31, -1, 121) },
{ "overlay-format", "fourcc of overlay format",
OPTION_OFFSET(overlay_format), OPTION_INT(SDL_FCC_RV32, INT_MIN, INT_MAX),
.unit = "overlay-format" },
{ "fcc-_es2", "", 0, OPTION_CONST(SDL_FCC__GLES2), .unit = "overlay-format" },
{ "fcc-i420", "", 0, OPTION_CONST(SDL_FCC_I420), .unit = "overlay-format" },
{ "fcc-yv12", "", 0, OPTION_CONST(SDL_FCC_YV12), .unit = "overlay-format" },
{ "fcc-rv16", "", 0, OPTION_CONST(SDL_FCC_RV16), .unit = "overlay-format" },
{ "fcc-rv24", "", 0, OPTION_CONST(SDL_FCC_RV24), .unit = "overlay-format" },
{ "fcc-rv32", "", 0, OPTION_CONST(SDL_FCC_RV32), .unit = "overlay-format" },
{ "start-on-prepared", "automatically start playing on prepared",
OPTION_OFFSET(start_on_prepared), OPTION_INT(1, 0, 1) },
{ "video-pictq-size", "max picture queue frame count",
OPTION_OFFSET(pictq_size), OPTION_INT(VIDEO_PICTURE_QUEUE_SIZE_DEFAULT,
VIDEO_PICTURE_QUEUE_SIZE_MIN,
VIDEO_PICTURE_QUEUE_SIZE_MAX) },
{ "max-buffer-size", "max buffer size should be pre-read",
OPTION_OFFSET(dcc.max_buffer_size), OPTION_INT(MAX_QUEUE_SIZE, 0, MAX_QUEUE_SIZE) },
{ "min-frames", "minimal frames to stop pre-reading",
OPTION_OFFSET(dcc.min_frames), OPTION_INT(DEFAULT_MIN_FRAMES, MIN_MIN_FRAMES, MAX_MIN_FRAMES) },
{ "first-high-water-mark-ms", "first chance to wakeup read_thread",
OPTION_OFFSET(dcc.first_high_water_mark_in_ms),
OPTION_INT(DEFAULT_FIRST_HIGH_WATER_MARK_IN_MS,
DEFAULT_FIRST_HIGH_WATER_MARK_IN_MS,
DEFAULT_LAST_HIGH_WATER_MARK_IN_MS) },
{ "next-high-water-mark-ms", "second chance to wakeup read_thread",
OPTION_OFFSET(dcc.next_high_water_mark_in_ms),
OPTION_INT(DEFAULT_NEXT_HIGH_WATER_MARK_IN_MS,
DEFAULT_FIRST_HIGH_WATER_MARK_IN_MS,
DEFAULT_LAST_HIGH_WATER_MARK_IN_MS) },
{ "last-high-water-mark-ms", "last chance to wakeup read_thread",
OPTION_OFFSET(dcc.last_high_water_mark_in_ms),
OPTION_INT(DEFAULT_LAST_HIGH_WATER_MARK_IN_MS,
DEFAULT_FIRST_HIGH_WATER_MARK_IN_MS,
DEFAULT_LAST_HIGH_WATER_MARK_IN_MS) },
{ "packet-buffering", "pause output until enough packets have been read after stalling",
OPTION_OFFSET(packet_buffering), OPTION_INT(1, 0, 1) },
{ "sync-av-start", "synchronise a/v start time",
OPTION_OFFSET(sync_av_start), OPTION_INT(1, 0, 1) },
{ "iformat", "force format",
OPTION_OFFSET(iformat_name), OPTION_STR(NULL) },
{ "no-time-adjust", "return player's real time from the media stream instead of the adjusted time",
OPTION_OFFSET(no_time_adjust), OPTION_INT(0, 0, 1) },
{ "preset-5-1-center-mix-level", "preset center-mix-level for 5.1 channel",
OPTION_OFFSET(preset_5_1_center_mix_level), OPTION_DOUBLE(M_SQRT1_2, -32, 32) },
{ "enable-accurate-seek", "enable accurate seek",
OPTION_OFFSET(enable_accurate_seek), OPTION_INT(0, 0, 1) },
{ "accurate-seek-timeout", "accurate seek timeout",
OPTION_OFFSET(accurate_seek_timeout), OPTION_INT(MAX_ACCURATE_SEEK_TIMEOUT, 0, MAX_ACCURATE_SEEK_TIMEOUT) },
{ "skip-calc-frame-rate", "don't calculate real frame rate",
OPTION_OFFSET(skip_calc_frame_rate), OPTION_INT(0, 0, 1) },
{ "get-frame-mode", "warning, this option only for get frame",
OPTION_OFFSET(get_frame_mode), OPTION_INT(0, 0, 1) },
{ "async-init-decoder", "async create decoder",
OPTION_OFFSET(async_init_decoder), OPTION_INT(0, 0, 1) },
{ "video-mime-type", "default video mime type",
OPTION_OFFSET(video_mime_type), OPTION_STR(NULL) },
// iOS only options
{ "videotoolbox", "VideoToolbox: enable",
OPTION_OFFSET(videotoolbox), OPTION_INT(0, 0, 1) },
{ "videotoolbox-max-frame-width", "VideoToolbox: max width of output frame",
OPTION_OFFSET(vtb_max_frame_width), OPTION_INT(0, 0, INT_MAX) },
{ "videotoolbox-async", "VideoToolbox: use kVTDecodeFrame_EnableAsynchronousDecompression()",
OPTION_OFFSET(vtb_async),