我是靠谱客的博主 大气网络,最近开发中收集的这篇文章主要介绍FFmpeg学习(四)-- libavformat 代码组成libavformat 代码组成,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

libavformat 代码组成

libavformat库中包含了ffmpeg支持的protocol、muxer、demuxer算法,提供了一些可以在所有muxer和demuxer上设置的通用全局选项。 此外,每个muxer或demuxer可能支持基于特定组件的私有选项。libavformat使用CONFIG_name_type(MUXER、DEMUXER)宏控制Makefile编译时是否包含name指定的算法。本文按照代码的功能及关联性,将libavformat目录中的代码分为4个部分:功能、demuxer、muxer、demuxer/muxer、protocol。

功能

  • allformat.c: 实现了用于添加、获取Format的函数
    • av_muxer_iterate: 获取基于index的AVOutpuFormat。 AVOutputFormat存储在两个地方:muxer_list.c中的muxer_list为编译时添加的muxer;outdev_list_intptr为运行时添加的muxer。
    • av_demuxer_iterate: 获取基于index的AVInputFormat。 AVInputFormat存储在两个地方:demuxer_list.c中的demuxer_list为编译时添加的demuxer;indev_list_intptr为运行时添加的demuxer
    • avpriv_register_devices: 用于运行时添加AVOutpuFormat、AVInputFormat。 将其分别存储在outdev_list_intptr、indev_list_intptr中。
    • muxer_list.c、demuxer_list.c在编译时根据编译选项,由编译工具自动创建。
  • avformat.h/demux.c/dump.c/format.c/seek.c: 定义了AVInputStream、AVOutputStream及相关的函数、宏。
    • demux.c 中实现了avformat.h中定义的demuxer相关的函数,比如avformat_find_stream_info。
    • dump.c 中实现了av_dump_format及其他dump 相关的函数。
    • format.c 中实现了探测文件格式相关的函数,如av_probe_input_format、av_find_input_format
  • avformatres.rc: 仅用于windows平台,在dll库中增加版本信息
  • avio_internal.h/avio.c/avio.h/aviobuf.c: FFmpeg中用于输入、输出数据的AVIOContext定义及相关功能函数的实现。
    • avio_internal.h 为FFmpeg v5.0 新增文件,通过FFIOContext继承AVIOContext的方式,实现了数据分离,提高了AVIOContext相关接口的稳定性。
    • 此4个文件是libavforamt库的核心文件。aviobuf.c中将avio.h中定义的URL protocol相关的函数、通用读写函数赋值到AVIOContext中,实现了基于protocol实现了ffmpeg中数据输入、输出。
    • 用户通过实现AVIOContext中的read_packet、write_packet、seek等函数,实现私有的输入、输出功能。
    • 此部分内容的详细分析将另建章节进行说明。
  • avlanguage.c/.h: 转换语言编码
    • ff_convert_lang_to: 将语言代码转换为目标代码空间
  • file_open.c: 实现了打开文件相关的函数,具体实现代码在libavutil/file_open.c中
  • internal.h/util.c/rawutil.c/: 封装了FFFormatContext等结构体,实现了内部公用的各个函数。
    • util.c 中实现了avformat模块需要的功能性函数
    • rawutils.c 中实现了ff_reshuffle_raw_rgb 函数
  • mux.c: 实现了mux相关的函数,包括av_write_frame、av_write_trailer等。
  • network.c/.h: 实现了ffmpeg使用的网络相关函数,包括ff_network_init、ff_tls_init、ff_listen_bind等。
    • os_support.c/os_support.h 实现平台相关的网络函数
  • options_table.h/options.c: 实现了avformat_alloc_context及相关函数。
    • options_table.h中定义的avformat_options为av_format_context_class 支持的option项。
      • avioflags:
        • {“avioflags”, NULL, OFFSET(avio_flags), AV_OPT_TYPE_FLAGS, {.i64 = DEFAULT }, INT_MIN, INT_MAX, D|E, “avioflags”},
        • {“direct”, “reduce buffering”, 0, AV_OPT_TYPE_CONST, {.i64 = AVIO_FLAG_DIRECT }, INT_MIN, INT_MAX, D|E, “avioflags”},
      • fflags:
        • {“fflags”, NULL, OFFSET(flags), AV_OPT_TYPE_FLAGS, {.i64 = AVFMT_FLAG_AUTO_BSF }, INT_MIN, INT_MAX, D|E, “fflags”},
        • {“flush_packets”, “reduce the latency by flushing out packets immediately”, 0, AV_OPT_TYPE_CONST, {.i64 = AVFMT_FLAG_FLUSH_PACKETS }, INT_MIN, INT_MAX, E,“fflags”},
        • {“ignidx”, “ignore index”, 0, AV_OPT_TYPE_CONST, {.i64 = AVFMT_FLAG_IGNIDX }, INT_MIN, INT_MAX, D, “fflags”},
        • {“genpts”, “generate pts”, 0, AV_OPT_TYPE_CONST, {.i64 = AVFMT_FLAG_GENPTS }, INT_MIN, INT_MAX, D, “fflags”},
        • {“nofillin”, “do not fill in missing values that can be exactly calculated”, 0, AV_OPT_TYPE_CONST, {.i64 = AVFMT_FLAG_NOFILLIN }, INT_MIN, INT_MAX, D, - “fflags”},
        • {“noparse”, “disable AVParsers, this needs nofillin too”, 0, AV_OPT_TYPE_CONST, {.i64 = AVFMT_FLAG_NOPARSE }, INT_MIN, INT_MAX, D, “fflags”},
        • {“igndts”, “ignore dts”, 0, AV_OPT_TYPE_CONST, {.i64 = AVFMT_FLAG_IGNDTS }, INT_MIN, INT_MAX, D, “fflags”},
        • {“discardcorrupt”, “discard corrupted frames”, 0, AV_OPT_TYPE_CONST, {.i64 = AVFMT_FLAG_DISCARD_CORRUPT }, INT_MIN, INT_MAX, D, “fflags”},
        • {“sortdts”, “try to interleave outputted packets by dts”, 0, AV_OPT_TYPE_CONST, {.i64 = AVFMT_FLAG_SORT_DTS }, INT_MIN, INT_MAX, D, “fflags”},
        • {“fastseek”, “fast but inaccurate seeks”, 0, AV_OPT_TYPE_CONST, {.i64 = AVFMT_FLAG_FAST_SEEK }, INT_MIN, INT_MAX, D, “fflags”},
        • {“nobuffer”, “reduce the latency introduced by optional buffering”, 0, AV_OPT_TYPE_CONST, {.i64 = AVFMT_FLAG_NOBUFFER }, 0, INT_MAX, D, “fflags”},
        • {“bitexact”, “do not write random/volatile data”, 0, AV_OPT_TYPE_CONST, { .i64 = AVFMT_FLAG_BITEXACT }, 0, 0, E, “fflags” },
        • {“shortest”, “stop muxing with the shortest stream”, 0, AV_OPT_TYPE_CONST, { .i64 = AVFMT_FLAG_SHORTEST }, 0, 0, E, “fflags” },
        • {“autobsf”, “add needed bsfs automatically”, 0, AV_OPT_TYPE_CONST, { .i64 = AVFMT_FLAG_AUTO_BSF }, 0, 0, E, “fflags” },
      • fdebug:
        • {“fdebug”, “print specific debug info”, OFFSET(debug), AV_OPT_TYPE_FLAGS, {.i64 = DEFAULT }, 0, INT_MAX, E|D, “fdebug”},
        • {“ts”, NULL, 0, AV_OPT_TYPE_CONST, {.i64 = FF_FDEBUG_TS }, INT_MIN, INT_MAX, E|D, “fdebug”},
      • err_detect:
        • {“f_err_detect”, “set error detection flags (deprecated; use err_detect, save via avconv)”, OFFSET(error_recognition), AV_OPT_TYPE_FLAGS, {.i64 = AV_EF_CRCCHECK }, INT_MIN, INT_MAX, D, “err_detect”}
          • this is a crutch for avconv, since it cannot deal with identically named options in different contexts.to be removed when avconv is fixed
        • {“err_detect”, “set error detection flags”, OFFSET(error_recognition), AV_OPT_TYPE_FLAGS, {.i64 = AV_EF_CRCCHECK }, INT_MIN, INT_MAX, D, “err_detect”},
        • {“crccheck”, “verify embedded CRCs”, 0, AV_OPT_TYPE_CONST, {.i64 = AV_EF_CRCCHECK }, INT_MIN, INT_MAX, D, “err_detect”},
        • {“bitstream”, “detect bitstream specification deviations”, 0, AV_OPT_TYPE_CONST, {.i64 = AV_EF_BITSTREAM }, INT_MIN, INT_MAX, D, “err_detect”},
        • {“buffer”, “detect improper bitstream length”, 0, AV_OPT_TYPE_CONST, {.i64 = AV_EF_BUFFER }, INT_MIN, INT_MAX, D, “err_detect”},
        • {“explode”, “abort decoding on minor error detection”, 0, AV_OPT_TYPE_CONST, {.i64 = AV_EF_EXPLODE }, INT_MIN, INT_MAX, D, “err_detect”},
        • {“ignore_err”, “ignore errors”, 0, AV_OPT_TYPE_CONST, {.i64 = AV_EF_IGNORE_ERR }, INT_MIN, INT_MAX, D, “err_detect”},
        • {“careful”, “consider things that violate the spec, are fast to check and have not been seen in the wild as errors”, 0, AV_OPT_TYPE_CONST, {.i64 = AV_EF_CAREFUL }, INT_MIN, INT_MAX, D, “err_detect”},
        • {“compliant”, “consider all spec non compliancies as errors”, 0, AV_OPT_TYPE_CONST, {.i64 = AV_EF_COMPLIANT | AV_EF_CAREFUL }, INT_MIN, INT_MAX, D, “err_detect”},
        • {“aggressive”, “consider things that a sane encoder shouldn’t do as an error”, 0, AV_OPT_TYPE_CONST, {.i64 = AV_EF_AGGRESSIVE | AV_EF_COMPLIANT | AV_EF_CAREFUL}, INT_MIN, INT_MAX, D, “err_detect”},
      • strict:
        • {“f_strict”, “how strictly to follow the standards (deprecated; use strict, save via avconv)”, OFFSET(strict_std_compliance), AV_OPT_TYPE_INT, {.i64 = DEFAULT }, INT_MIN, INT_MAX, D|E, “strict”},
        • {“strict”, “how strictly to follow the standards”, OFFSET(strict_std_compliance), AV_OPT_TYPE_INT, {.i64 = DEFAULT }, INT_MIN, INT_MAX, D|E, “strict”},
        • {“very”, “strictly conform to a older more strict version of the spec or reference software”, 0, AV_OPT_TYPE_CONST, {.i64 = FF_COMPLIANCE_VERY_STRICT }, INT_MIN,INT_MAX, D|E, “strict”},
        • {“strict”, “strictly conform to all the things in the spec no matter what the consequences”, 0, AV_OPT_TYPE_CONST, {.i64 = FF_COMPLIANCE_STRICT }, INT_MIN, INT_MAX, D|E, “strict”},
        • {“normal”, NULL, 0, AV_OPT_TYPE_CONST, {.i64 = FF_COMPLIANCE_NORMAL }, INT_MIN, INT_MAX, D|E, “strict”},
        • {“unofficial”, “allow unofficial extensions”, 0, AV_OPT_TYPE_CONST, {.i64 = FF_COMPLIANCE_UNOFFICIAL }, INT_MIN, INT_MAX, D|E, “strict”},
        • {“experimental”, “allow non-standardized experimental variants”, 0, AV_OPT_TYPE_CONST, {.i64 = FF_COMPLIANCE_EXPERIMENTAL }, INT_MIN, INT_MAX, D|E, “strict”},
      • avoid_negative_ts
        • {“avoid_negative_ts”, “shift timestamps so they start at 0”, OFFSET(avoid_negative_ts), AV_OPT_TYPE_INT, {.i64 = -1}, -1, 2, E, “avoid_negative_ts”},
        • {“auto”, “enabled when required by target format”, 0, AV_OPT_TYPE_CONST, {.i64 = AVFMT_AVOID_NEG_TS_AUTO }, INT_MIN, INT_MAX, E,“avoid_negative_ts”},
        • {“disabled”, “do not change timestamps”, 0, AV_OPT_TYPE_CONST, {.i64 = 0 }, INT_MIN, INT_MAX, E,“avoid_negative_ts”},
        • {“make_non_negative”, “shift timestamps so they are non negative”, 0, AV_OPT_TYPE_CONST, {.i64 = AVFMT_AVOID_NEG_TS_MAKE_NON_NEGATIVE }, INT_MIN, INT_MAX, E, “avoid_negative_ts”},
        • {“make_zero”, “shift timestamps so they start at 0”, 0, AV_OPT_TYPE_CONST, {.i64 = AVFMT_AVOID_NEG_TS_MAKE_ZERO }, INT_MIN, INT_MAX, E, “avoid_negative_ts”},
      • 未分组(common)
        • {“probesize”, “set probing size”, OFFSET(probesize), AV_OPT_TYPE_INT64, {.i64 = 5000000 }, 32, INT64_MAX, D},
        • {“formatprobesize”, “number of bytes to probe file format”, OFFSET(format_probesize), AV_OPT_TYPE_INT, {.i64 = PROBE_BUF_MAX}, 0, INT_MAX-1, D},
        • {“packetsize”, “set packet size”, OFFSET(packet_size), AV_OPT_TYPE_INT, {.i64 = DEFAULT }, 0, INT_MAX, E},
        • {“seek2any”, “allow seeking to non-keyframes on demuxer level when supported”, OFFSET(seek2any), AV_OPT_TYPE_BOOL, {.i64 = 0 }, 0, 1, D},
        • {“analyzeduration”, “specify how many microseconds are analyzed to probe the input”, OFFSET(max_analyze_duration), AV_OPT_TYPE_INT64, {.i64 = 0 }, 0, INT64_MAX, D},
        • {“cryptokey”, “decryption key”, OFFSET(key), AV_OPT_TYPE_BINARY, {.dbl = 0}, 0, 0, D},
        • {“indexmem”, “max memory used for timestamp index (per stream)”, OFFSET(max_index_size), AV_OPT_TYPE_INT, {.i64 = 1<<20 }, 0, INT_MAX, D},
        • {“rtbufsize”, “max memory used for buffering real-time frames”, OFFSET(max_picture_buffer), AV_OPT_TYPE_INT, {.i64 = 3041280 }, 0, INT_MAX, D}, /* defaults to 1s of 15fps 352x288 YUYV422 video */
        • {“max_delay”, “maximum muxing or demuxing delay in microseconds”, OFFSET(max_delay), AV_OPT_TYPE_INT, {.i64 = -1 }, -1, INT_MAX, E|D},
        • {“start_time_realtime”, “wall-clock time when stream begins (PTS==0)”, OFFSET(start_time_realtime), AV_OPT_TYPE_INT64, {.i64 = AV_NOPTS_VALUE}, INT64_MIN, INT64_MAX, E},
        • {“fpsprobesize”, “number of frames used to probe fps”, OFFSET(fps_probe_size), AV_OPT_TYPE_INT, {.i64 = -1}, -1, INT_MAX-1, D},
        • {“audio_preload”, “microseconds by which audio packets should be interleaved earlier”, OFFSET(audio_preload), AV_OPT_TYPE_INT, {.i64 = 0}, 0, INT_MAX-1, E},
        • {“chunk_duration”, “microseconds for each chunk”, OFFSET(max_chunk_duration), AV_OPT_TYPE_INT, {.i64 = 0}, 0, INT_MAX-1, E},
        • {“chunk_size”, “size in bytes for each chunk”, OFFSET(max_chunk_size), AV_OPT_TYPE_INT, {.i64 = 0}, 0, INT_MAX-1, E},
        • {“use_wallclock_as_timestamps”, “use wallclock as timestamps”, OFFSET(use_wallclock_as_timestamps), AV_OPT_TYPE_BOOL, {.i64 = 0}, 0, 1, D},
        • {“skip_initial_bytes”, “set number of bytes to skip before reading header and frames”, OFFSET(skip_initial_bytes), AV_OPT_TYPE_INT64, {.i64 = 0}, 0, INT64_MAX-1, D},
        • {“correct_ts_overflow”, “correct single timestamp overflows”, OFFSET(correct_ts_overflow), AV_OPT_TYPE_BOOL, {.i64 = 1}, 0, 1, D},
        • {“flush_packets”, “enable flushing of the I/O context after each packet”, OFFSET(flush_packets), AV_OPT_TYPE_INT, {.i64 = -1}, -1, 1, E},
        • {“metadata_header_padding”, “set number of bytes to be written as padding in a metadata header”, OFFSET(metadata_header_padding), AV_OPT_TYPE_INT, {.i64 = -1}, -1,INT_MAX, E},
        • {“output_ts_offset”, “set output timestamp offset”, OFFSET(output_ts_offset), AV_OPT_TYPE_DURATION, {.i64 = 0}, -INT64_MAX, INT64_MAX, E},
        • {“max_interleave_delta”, “maximum buffering duration for interleaving”, OFFSET(max_interleave_delta), AV_OPT_TYPE_INT64, { .i64 = 10000000 }, 0, INT64_MAX, E },
        • {“max_ts_probe”, “maximum number of packets to read while waiting for the first timestamp”, OFFSET(max_ts_probe), AV_OPT_TYPE_INT, { .i64 = 50 }, 0, INT_MAX, D },
        • {“dump_separator”, “set information dump field separator”, OFFSET(dump_separator), AV_OPT_TYPE_STRING, {.str = ", "}, 0, 0, D|E},
        • {“codec_whitelist”, “List of decoders that are allowed to be used”, OFFSET(codec_whitelist), AV_OPT_TYPE_STRING, { .str = NULL }, 0, 0, D },
        • {“format_whitelist”, “List of demuxers that are allowed to be used”, OFFSET(format_whitelist), AV_OPT_TYPE_STRING, { .str = NULL }, 0, 0, D },
        • {“protocol_whitelist”, “List of protocols that are allowed to be used”, OFFSET(protocol_whitelist), AV_OPT_TYPE_STRING, { .str = NULL }, 0, 0, D },
        • {“protocol_blacklist”, “List of protocols that are not allowed to be used”, OFFSET(protocol_blacklist), AV_OPT_TYPE_STRING, { .str = NULL }, 0, 0, D },
        • {“max_streams”, “maximum number of streams”, OFFSET(max_streams), AV_OPT_TYPE_INT, { .i64 = 1000 }, 0, INT_MAX, D },
        • {“skip_estimate_duration_from_pts”, “skip duration calculation in estimate_timings_from_pts”, OFFSET(skip_estimate_duration_from_pts), AV_OPT_TYPE_BOOL, {.i64 = 0}, 0,1, D},
        • {“max_probe_packets”, “Maximum number of packets to probe a codec”, OFFSET(max_probe_packets), AV_OPT_TYPE_INT, { .i64 = 2500 }, 0, INT_MAX, D },
    • os_support.h/os_support.c: 定义并实现了操作系统强相关的函数,比如:rename、rmdir、ff_getaddrinfo等。
    • protocols.c: 定义了ffmpeg支持的protocols,实现了protocol相关的函数。新增protocol时,需要在此文件中添加extern 声明
    • replaygain.c/.h: 实现了导出每个流的replaygain 数据,在多个算法中使用了此函数。
    • riff.h/.c/riffdec.c/riffenc.c: RIFF 通用数据结构及算法,在多个算法中使用了RIFF相关函数。
      • Resource Interchange File Format(简称RIFF),资源交换文件格式,是一种按照标记区块存储数据(tagged chunks)的通用文件存储格式,多用于存储音频、视频等多媒体数据。Microsoft在windows下的AVI、ANI 、WAV等都是基于RIFF实现的。RIFF是由Microsoft和IBM于1991年,在windows 3.1中引入的,作为windows 3.1默认的多媒体文件格式。RIFF是参考Interchange File Format来的,二者主要的区别是字节序大端、小端的问题。在基于IBM的80x86系列主机下,RIFF的字节序是小端的;而在IFF原有的格式中是按照大端存储整型数据的。
    • subtitles.c/.h: 字幕相关的通用函数。
    • url.c/url.h/urldecode.c/.h protocol 相关的通用函数及结构定义。
    • util.c/internal.h: avformat用到的通用功能函数
    • version.c: avformat 的版本信息,编译信息。
    • w64.c/.h: 定义了6个ff_w64_guid_开头的 GUID值。

demuxer

  1. 3dosstr.c: 后缀为str的3dostr(3DO STR) demuxer
  2. 4xm.c: 4xm(4X Technologies) demuxer
  3. aacdec.c: 后缀为aac的aac(raw ADTS AAC (Advanced Audio Coding)) demuxer
  • AAC: 高级音频编码,出现在1997年,基于MPEG-2的音频编码技术,当时被称为MPEG-2 AAC,因此把其作为MPEG-2(MP2)标准的延伸。是由Fraunhofer IIS、杜比实验室、AT&T、Sony等公司共同开发,目的是取代MP3格式,随着MPEG-4(MP4)标准在2000年的成型,则为AAC也叫M4A。
  • AAC背景和发展: 1997年制定了不兼容MPEG-1的音频标准MPEG-2 NBC即MPEG-2 AAC;1999年AAC又增加了LTP和PNS工具,形成了MPEG-4 AAC V1;2002年在MPEG-4 AAC v1增加了SBR和错误鲁棒性工具,形成了 HE-AAC; 2004年MPEG-4在HE-AAC引入了PS模块,提升降码率性能,形成了EAAC+;对于1999年、2002年、2004年增加了SBR和PS等编码技术的统称为MPEG-4 AAC
  • AAC封装类型:
    1. ADIF:Audio Data Interchange Format音频数据交换格式,这种格式一般应用在将音频通过写文件方式存储在磁盘里,不能进行随机访问,不允许在文件中间开始进行解码。只有拿到整个文件时才能开始进行渲染播放。
    2. ADTS:Audio Data Transport Stream 音频数据传输流。这种格式的特征是用同步字节进行将AAC音频截断,然后可以允许客户端在任何地方进行解码播放,适合网络传输场景。
  1. aadec.c: 后缀为aa的aa(Audible AA format files) demuxer
  • Audible.com是最受欢迎的在线有声读物商店,提供大量可下载的数字有声读物。 它主要销售数字有声读物,并且各种音频版本来自广播,电视节目以及杂志和报纸。 从Audible购买的有声读物都以.aa或.aax文件格式编码,并受到Audible的数字版权管理(DRM)的保护。 Audible .aa和.aax有声读物只能在授权设备上播放,包括iTunes,Apple iPod和Amazon Kindle 2等。
  1. aaxdec.c: 后缀为aax的aax(CRI AAX) demuxer
  2. ac3dec.c: 后缀为ac3的ac3(raw AC-3) demuxer 和 后缀为eac3的eac3(raw E-AC-3) demuxer
  • 1994年,日本先锋公司宣布与美国杜比实验室合作研制成功一种崭新的环绕声制式,并命名为“杜比AC-3”(Dolby Surround Audio Coding-3)。1997年初,杜比实验室正式将“杜比AC-3环绕声”改为“杜比数码环绕声”(Dolby Surround Digital),我们常称为Dolby Digital。
  • 杜比数字AC-3提供的环绕声系统由五个全频域声道加一个超低音声道组成,所以被称作5.1个声道。五个声道包括前置的"左声道"、“中置声道”、“右声道”、后置的"左环绕声道"和"右环绕声道"。这些声道的频率范围均为全频域响应3-20000Hz。第六个声道也就是超低音声道包含了一些额外的低音信息,使得一些场景如爆炸、撞击声等的效果更好。
  • AC-3流由一连串的同步帧(synchronization frames)组成。每个同步帧包含6个编码的音频块(audio blocks: AB), 每个AB 表示每个channel 256个新的audio sample。
    • 同步帧由同步信息(synchronization information: SI)开始,其包含了获取和维护同步的必要信息。
    • bit stream information(BSI)跟随SI,包含了描述编码音频服务的参数信息。
    • AB 后面可能跟着一个辅助信息块(Aux)。
    • 每个同步帧的最后是循环校验码(CRC),用于校验错误。SI头中有一个附加的CRC字,解码器可以选择(可选)使用它。
  • EAC3,全称Enhanced AC-3 bit streams,与AC3类似,但不能后向兼容。AC3的decoder不能解EAC3的bitstream,EAC3的decoder即能解AC3,也能解EAC3。每个Frame的基本结构与AC3一致。
  1. acedec.c: ace(tri-Ace Audio Container) demuxer
  • tri-Ace 是一家日本老牌游戏工作室的发展,从最早狼组(Wolf Team)时期的百花齐放,再到 SFC 时期独立成为 tri-Ace 并在 PS、PS2 平台走向辉煌,
  1. acm.c: 后缀为acm的acm(Interplay ACM) demuxer
  • ACM文件是指Interplay的视频游戏的压缩音频文件,Interplay的代表表包括博得之门、辐射等。
  1. act.c: act(ACT Voice file format) demuxer
  • ACT: 可能是ACT考试,前称“American College Testing”
  1. adp.c: 后缀为adp,dtk的atp(ADP) audio demuxer
  2. ads.c:后缀为ads,ss2的ads(Sony PS2 ADS) audio demuxer
  3. adxdec.c: 后缀为adx的adx(CRI ADX) audio demuxer
  4. aea.c: 后缀为aea的aea(MD STUDIO audio) audio demuxer
  5. afc.c: 后缀为afc的afx(AFC) audio demuxer
  • AFC demuxer 对应的codec ID为: AV_CODEC_ID_ADPCM_AFC
  1. aixdec.c: 后缀为aix的aix(CRI AIX) audio demuxer
  2. anm.c: anm(Deluxe Paint Animation) demuxer
  3. apc.c: apc(CRYO APC) demuxer
  • CRYO Interactive Entertainment 公司在游戏内的一种封装格式
  1. ape.c: 后缀为ape,apl,mac的ape(Monkey’s Audio) demuxer
  • APE是流行的数字音乐无损压缩格式之一,与MP3这类有损压缩格式不可逆转地删除数据以缩减源文件体积不同,APE这类无损压缩格式,是以更精炼的记录方式来缩减体积,还原后数据与源文件一样,从而保证了文件的完整性。APE由软件Monkey’s audio压制得到,开发者为Matthew T. Ashland,源代码开放,因其界面上有只“猴子”标志而出名。相较同类文件格式FLAC,ape有查错能力但不提供纠错功能,以保证文件的无损和纯正;其另一个特色是压缩率约为55%,比FLAC高,体积大概为原CD的一半,便于存储。
  • 编译时需要apetag.c、apetag.h
  1. aptxdec.c: aptx(raw aptX)/aptx_hd(raw aptX HD) demuxer
  • Apt-X是一种基于子带ADPCM(SB-ADPCM)技术的数字音频压缩算法。原始算法由Stephen Smyth 博士于20世纪80年代提出。由Audio Processing Technology(现已被CSR合并)公司发展并命名为apt-X。最初用于专业音频与广播领域。近几年,在 Bluetooth无线音频传输领域apt-x由于其低延时,容错性好,高音质等优点大有取代SBC(Sub-band Coding)之势。apt-x家族中实用的有aptX Bluetooth, aptX Enhanced, aptX Live(2007年推出),aptX Lossless(2009年推出)。apt-X具有以下特点: 所需频宽:10Hz to 22.5 kHz,56kbit/s to 576 kbit/s(16 bit 7.5 kHz mono to 24-bit, 22.5kHz stereo)
  • demuxer 支持选项:
    • sample_rate: int值
  1. aqtitledec.c: 后缀为aqt的aqtitle(AQTitle subtitles) 字幕 demuxer
  • 电影字幕文件以AQTitle格式创建,这是捷克字幕社区使用的较旧格式;使用纯文本格式指定每个字幕应在何时显示;不是通用格式,但受某些现代视频播放器支持。
  • demuxer 支持选项:
    • subfps: RATIONAL型,set the movie frame rate
  1. argo_brp.c: argo_brp(Argonaut Games BRP) demuxer
  • 英国开发商Argonaut Games的音视频封装格式
  1. av1dec.c: av1(AV1 Annex B)/obu(AV1 low overhead OBU) demuxer
  • AV1(Alliance for Open Media Video 1)是由AOM(Alliance for Open Media,开放媒体联盟)制定的一个开源、免版权费的视频编码格式,目标是解决H265昂贵的专利费用和复杂的专利授权问题并成为新一代领先的免版权费的编码标准。此外,AV1是google制定的VP9标准的继任者,也是H265强有力的竞争者。
  • AV1是基于传统的分块频谱变换的格式,基于google的VP9标准的扩展,并结合了Xiph’s/Mozilla的Daala视频编码标准和思科的Thor视频编码标准中的技术。
  • 编译时需要av1.c、av1.h
  1. avisynth.c: 后缀为avs的avisynth(AviSynth script) demuxer
  • AviSynth是由Ben Rudiak-Gould首创的一种非常有用的工具,能够提供各种方式来合并和滤镜处理影像文件。最独特的就是AviSynth并不是一个孤立的影像处理程序,而是在影像文件和应用程序之间担任“中间人”的角色。
  • AviSynth基本工作原理:首先建立一个包含特定命令的文本,称之为“脚本”(后缀为avs),这些命令指定要运行处理的影像文件和滤镜;然后运行影像应用程序,比如VD或ND,打开脚本。此时AviSynth就开始工作了,打开脚本中指定的影像文件,运行特定的滤镜,并把输出结果提供给影像应用程序。但影像应用程序并不了解AviSynth在后台所做的处理,而认为是直接打开了一个“被处理过”的影像文件。
  1. avr.c: 后缀为avr的avr(Audio Visual Research) audio demuxer
  2. avs.c: avs(Argonaut Games Creature Shock) demuxer
  3. avs2dec.c: 后缀为avs,avs2的 avs2(raw AVS2-P2/IEEE1857.4) demuxer
  • AVS标准是我国自主知识产权的信源编码标准,是针对中国音视频产业的需求,由中国数字音视频领域的科研机构和企业牵头,相关国际单位和企业广泛参与(AVS会员名单),按照国际开放式规则制定的系列标准。
  • 第一代AVS标准包括国家标准《信息技术 先进音视频编码 第2部分:视频》(简称AVS1,国标号:GB/T 20090.2-2006)和《信息技术 先进音视频编码 第16部分:广播电视视频》(简称AVS+,国标号:GB/T 20090.16-2016)。AVS+的压缩效率与国际同类标准H.264/AVC最高档次(High Profile)相当。目前已经有上千套AVS+的高清内容上星播出(详见AVS+上星节目表)。
  • 第二代AVS标准,简称AVS2,首要应用目标是超高清晰度视频,支持超高分辨率(4K以上)、高动态范围视频的高效压缩。2016年5月,AVS2被国家新闻出版广电总局颁布为广电行业标准《高效音视频编码 第1部分:视频》(行标号:GY/T 299.1-2016)。2016年12月,AVS2被国家质检总局和国家标准委颁布为国家标准《信息技术 高效多媒体编码 第2部分:视频》(国标号: GB/T 33475.2-2016)。同时提交了IEEE国际标准(标准号:IEEE1857.4)申请。国家广播电影电视总局广播电视计量检测中心的测试结果表明:AVS2的压缩效率比上一代标准AVS+和H.264/AVC提高了一倍,超过国际同类型标准HEVC/H.265。AVS2还支持:三维视频、多视角和虚拟现实视频的高效编码;立体声、多声道音频的高效有损及无损编码;监控视频的高效编码;面向三网融合的新型媒体服务 。
  • AVS3视频编码标准是中国AVS工作组制定的第三代视频编码标准。适应超高清电视广播、VR、视频监控等多种应用场景。AVS3的发展过程分为两个阶段。第一阶段的目标是开发一个软件/硬件实现友好的配置文件,采用编码工具,显示巨大的编码增益和相对有限的复杂性增量。到目前为止,AVS3的第一阶段已于2019年3月完成,在4K超高分辨率视频方面,它比AVS2节省了大约30%的比特率。此外,AVS3的第二阶段正在开发更有效的编码工具,以改进性能,特别是监视视频和屏幕内容视频。
  1. avs3dec.c: 后缀为avs3的avs3 (raw AVS3-P2/IEEE1857.10) demuxer
  2. bethsoftvid.c: bethsoftvid(Bethesda Softworks VID) demuxer
  • Bethesda Softworks(以下简称Bethesda)是一家有着逾20年交互式娱乐(包括游戏在内)开发,发行历史的公司。在2001年Bethesda成为了一家专注于游戏发行的公司,并将原有的开发部门组建成了Bethesda Game Studio用以专注于游戏开发。公司广为人知的系列当属上古卷轴(The Elder Scrolls)系列、辐射(FallOut)系列。
  1. bfi.c: bfi (Brute Force & Ignorance) demuxer
  2. bink.c: bink(bink) demuxer
  • Bink文件是用于各种视频游戏的多媒体文件,包括个人电脑平台和视频游戏控制台。这些文件是用专有的Bink视频、Bink视频2和音频编解码器压缩的数据的容器。Bink多媒体文件的扩展名为。bik、。bk2或。bik2。
  1. binka.c: binka(Bink Audio) demuxer
  2. bintext.c: bin(Binary text)、xbin(eXtended BINary text (XBIN))、adf(Artworx Data Format)、iCE(Binary text) demuxer
  • 此4个demuxer支持选项:
    • linespeed: int值,set simulated line speed (bytes per second)
    • video_size:image size, set video size, such as 640x480 or hd720.
    • framerate: video rate, set framerate (frames per second)
  1. bmv.c: 后缀为bmv的bmv(Discworld II BMV) demuxer
  2. boadec.c: boa(Black Ops Audio) demuxer
  3. brstm.c: brstm(BRSTM (Binary Revolution Stream))、bfstm(BFSTM (Binary Cafe Stream)) demuxer
  • 许多任天堂的Wii游戏使用这种类型的音频文件。该文件存储的背景音乐或声音效果在游戏的时间循环。
  1. c93.c: c93(Interplay C93) demuxer
  2. cavsvideodec.c: cavsvideo (raw Chinese AVS (Audio Video Standard)) demuxer
  3. cdg.c: 后缀为cdg的cdg(CD Graphics) demuxer
  4. cdxl.c: 后缀为cdxl的cdxl(Commodore CDXL video) demuxer
  5. cinedec.c: cine(Phantom Cine) demuxer
  • This is a raw uncompressed format.
  • It contains a lot of metadata, and index and raw uncompressed frames, presumably in Bayer format. Know samples store each Bayer sample with 16 bits, where only the lowest 14 bits are relevant (the value 16 can be determined from the BitmapInfoHeader, the 14 bits are somewhere in the file as well, as can be seen from the xml-representation of the metadata (the RealBPP entry) - all data in the xml file exists in the .cine file as well). Making the lowest instead of the highest 14 bits the relevant ones is a rather unfortunate choice since it makes conversion to standard formats more difficult.
  1. concatdec.c: concat (Virtual concatenation script) demuxer
  • FFmpeg 自定义的一种连接脚本,以“ffconcat version 1.0”开头
  1. dcstr.c: 后缀为str的dcstr(Sega DC STR) demuxer
  2. derf.c: 后缀为adp的derf(Xilam DERF) demuxer
  3. dfa.c: 后缀为dfa的dfa(Chronomaster DFA) demuxer
  4. dhav.c: 后缀为dav的dhva(Video DAV) demuxer
  5. diracdec.c: dirac(raw Dirac) demuxer
  • Dirac HD Sound®是瑞典Dirac Research AB公司和瑞典乌普萨拉大学研发的一种先进的音质提升专利技术,能通过先进的滤波数字处理技术,对声音系统的瞬态响应和频率响应精细校正,从而提升耳机或扬声器的高保真性能。
  1. dnxhddec.c: dnxhd(raw DNxHD (SMPTE VC-3)) demuxer
  • DNxHD/DNxHR: Avid 公司推出的编码,现在因为 windows 平台有了 Gopro CineForm,所以如果不是用 Avid 剪辑系统的话一般不会用这个编码。
  • AVID的DNxHD编码只支持FHD就是1920*1080的分辨率,新的DNxHR编码才能支持DCI和BT2020色域的4k影像
  1. dsicin.c: dsicin(Delphine Software International CIN) demuxer
  • Delphine Software International (DSI) developed computer and video games between 1988 and 2004. Delphine Software International game designs and developments are lead by Paul Cuisset until Motoracer. Then, two games were developed in parallel by two internal teams.
  1. dss.c: 后缀为dss的dss(Digital Speech Standard (DSS)) demuxer
  • DSS (Digital Speech Standard) is a format for voice recorders developed by Olympus, Phillips, and Grundig in 1994.
  1. dtsdec.c: 后缀为dts的dts(raw DTS) demuxer
  • DTS是“Digital Theatre System”的缩写,是“数字化影院系统”的意思。从技术上讲,DTS与包括Dolby Digital在内的其它声音处理系统是完全不同的。Dolby Digital是将音效数据存储在电影胶片齿孔之间,因为空间的限制而必须采用大量的压缩的模式,这样就不得不牺牲部分音质。DTS公司用一种简单的办法解决了这个问题,即把音效数据存储到另外的CD-ROM中,使其与影像数据同步。这样不但空间得到增加,而且数据流量也可以相对变大,更可以将存储音效数据的CD更换,来播放不同的语言版本。
  • DTS的主要特色在于对音质的要求比储存空间来的重要。所以DTS音频采用24 bits编码,比起来杜比数位只采18 bits编码。DTS的压缩算法采用动态处理,会随着声音的多寡来变动数据压缩比率,压缩比介于1:1到1:40之间,以平均数据速率每秒1.5 Mb来说,声音的音质比杜比数位要来的好。但是最大的问题也在于音频数据占用了太多空间(约是杜比数位的3倍)。所以采用DTS技术的DVD通常只有一种语言,附加内容也少的多。
  1. dtshddec.c: 后缀为dtshd的dtshd(raw DTS-HD) demuxer
  • DTS在ES 6.1声道之后推出过更多声道的DTS+格式,这个DTS-HD就是DTS++的正式注册商标名称。这些特性是依靠码率较低的DTS HD格式来实现的,因为网络对速度的要求限制了传输数据流的带宽,不过DTS HD的数据流量完全可以根据使用者所需要的声音品质来做出灵活的变换,并且通过DTS公司新开发的无损压缩技术,让DTS HD的压缩比与Dolby Digital Plus相比要少,因而损失的细节更少,从而达到了品质更高的声音传送。
  • DTS-HD是DTS相干声学编码的实现,其首次露面是在1996年5月哥本哈根的AES展览会上。该核心技术总是向后兼容的,也就是说该核心技术可向后兼容市场上超过3700万的DTS解码器。基于1996年首次问世的原始核心技术,DTS还成功的推出了两种CBR扩展技术。DTS HD(在一些蓝光光盘及HD-DVD文件中仍称为DTS++)已入选高清DVD(HD-DVD)以及蓝光DVD(Blu-ray)两种标准格式的音频备选方案。DTS-HD能编码和解码的DTS格式有三种:DTS-HD主体音频(Master Audio),DTS-HD高分辨率音频(High Resolution Audio)和DTS数字环绕声(Digital Surround)。可以对付各式各样的最新娱乐要求。
  1. dvbsub.c: dvbsub(raw dvbsub) subtitle demuxer
  2. dvbtxt.c: dvbtxt(dvbtxt) demuxer
  3. dxa.c: dxa(DXA) demuxer
  4. eacdata.c: 后缀为cdata的ea_cdata(Electronic Arts cdata) demuxer
  • 美国艺电公司(Electronic Arts,NASDAQ: ERTS,简称EA),是全球著名的互动娱乐软件公司,主要经营各种电子游戏的开发、出版以及销售业务。美国艺电创建于1982年,总部位于美国加利福尼亚州红木城。截至2009年,美国艺电在美国其它城市、加拿大、英国、澳大利亚、中国等多个国家和地区均设有分公司或子公司,世界各地的雇员总数达7320人。“EAGames”是美国艺电最主要的品牌。该品牌旗下主要有动作类、角色扮演类、赛车类、格斗类游戏。除了传统盒装零售的单机游戏,EA Games还出品了一些大型多人在线网络游戏(MMO)。该品牌负责人是弗兰克·吉伯(Frank Gibeau)。
  1. electronicarts.c: ea(Electronic Arts Multimedia) demuxer
  2. epafdec.c: 后缀为paf,fap的epaf(Ensoniq Paris Audio File) demuxer
  3. flic.c: flic(FLI/FLC/FLX animation) demuxer
  4. frmdec.c: frm(Megalux Frame) demuxer
  5. fsb.c: 后缀为fsb的fsb(FMOD Sample Bank) demuxer
  6. fwse.c: 后缀为fwse的fwse(Capcom’s MT Framework sound) demuxer
  7. g722.c: 后缀为g722,722的g722(raw G.722) demuxer
  • G.722是1988年由国际电信联盟(ITU-T)订定音频编码方式,又称为ITU-T G.722,是第一个用于16KHz采样率的宽带语音编码算法。G.722是支持比特率为64, 56和48kbps多频率语音编码算法。在G.722中,语音信号的取样率为每秒16000个样本。与3.6kHz的频率语音编码相比较,G.722可以处理频率达7kHz音频信号宽带。G.722 编码器是基于子带自适应差分脉冲编码(SB-ADPCM)原理的。信号被分为两个子带,并且采用 ADPCM 技术对两个子带的样本进行编码。
  1. g723_1.c: 后缀为tco,rco,g723_1的g723_1(G.723.1) demuxer
  • G.723.1算法是 ITU-T建议的应用于低速率多媒体服务中语音或其它音频信号的压缩算法,其目标应用系统包括H.323、H.324等多媒体通信系统 。目前该算法已成为IP电话系统中的必选算法之一。
  1. g726.c: g726(raw big-endian G.726 (“left aligned”)/g726le(raw little-endian G.726 (“right aligned”)) demuxer
  • G.726是ITU-T定义的音频编码算法。1990年 CCITT(ITU前身)在G.721和G.723标准的基础上提出。
  • G.726语音编码器首先将输入的8位PCM码转换成14位线性码,然后同预测信号相减产生差分信号,再对差分信号进行自适应量化,产生2到5比特ADPCM码;如上图b)所示,一方面要把ADPCM码送至解码器,另一方面利用ADPCM码进行本地解码得到量化后的差分信号,将量化之后的差分信号与预测信号相加得到本地重建信号。
  1. g729.c: 后缀为g729的g729(G.729 raw format demuxer) demuxer
  • 国际电信联盟(ITU-T)于1995年11月正式通过了G.729。 ITU-T建议G.729也被称作“共轭结构代数码本激励线性预测编码方案”(CS-ACELP),它是当前较新的一种语音压缩标准。G.729是由美 国、法国、日本和加拿大的几家著名国际电信实体联合开发的。
  • G.729算法采用“共轭结构代数码本激励线性预测编码方案”(CS-ACELP)算法。这种算法综合了波形编码和参数编码的优点,以自适应预测编码技术为基础,采用了矢量量化、合成分析和感觉加权等技术。
  • G.729编码器是为低时延应用设计的,它的帧长只有10ms,处理时延也是10ms,再加上5ms的前视,这就使得G.729产生的点到点的时延为25ms,比特率为8 kbps。
  1. gdv.c: gdv(Gremlin Digital Video) demuxer
  • Gremlin Digital Video (GDV) is a multimedia file format used in a number of CD-ROM computer games developed by a company named Gremlin Interactive. The extension stands for Gremlin Digital Video. The format is most notable for its use in the title Realms of the Haunting.
  • The file format is apparently capable of transporting palettized 8-bit video, or 15-, 16-, or 24-bit data, though only 8-bit data has been observed in games using GDV. The audio format is 8- or 16-bit PCM or DPCM.
  1. genh.c: 后缀为genh的genh(GENeric Header) demuxer
  2. gsmdec.c: 后缀为gsm的gsm(raw GSM) demuxer
  • 全球移动通信系统(Global System for Mobile Communications) ,缩写为GSM,由欧洲电信标准组织ETSI制订的一个数字移动通信标准。它的空中接口采用时分多址技术。自90年代中期投入商用以来,被全球超过100个国家采用。GSM标准的无处不在使得在移动电话运营商之间签署"漫游协定"后用户的国际漫游变得很平常。 GSM 较之它以前的标准最大的不同是它的信令和语音信道都是数字式的,因此GSM被看作是第二代 (2G)移动电话系统。
  1. h261dec.c: 后缀为h261的h261(raw H.261) demuxer
  • H.261设计的目的是能够在带宽为64kbps的倍数的综合业务数字网(ISDN for Integrated Services Digital Network)上质量可接受的视频信号。编码程序设计的码率是能够在40kbps到2Mbps之间工作,能够对CIF和QCIF分辨率的视频进行编码,即亮度分辨率分别是352x288和176x144,色度采用4:2:0采样,分辨率分别是176x144和88x72。在1994年的时候,H.261使用向后兼容的技巧加入了一个能够发送分辨率为704x576的静止图像的技术。
  • H.261是1990年ITU-T制定的第一个实用的数字视频编码标准。H.261的设计相当成功,之后的视频编码国际标准基本上都是基于H.261相同的设计框架,包括MPEG-1, MPEG-2/H.262, H.263, 甚至 H.264。同样,H.261开发委员会(由Sakae Okubo领导,他的日文姓名是大久保荣)的基本的运作方式也被之后的视频编码标准开发组织所继承。H.261使用了混合编码框架,包括了基于运动补偿的帧间预测,基于离散余弦变换的空域变换编码,量化,zig-zag扫描和熵编码。
  • H.261编码时基本的操作单位称为宏块。H.261使用YCbCr颜色空间,并采用4:2:0色度抽样,每个宏块包括16x16的亮度抽样值和两个相应的8x8的色度抽样值。
  1. h263dec.c: h263(raw H.263) demuxer
  • H.263由ITU定义,支持用于视频会议和视频电话应用程序的视频压缩(解码)。H.263 基于H.261编码,并且为在最低带宽为 20K 到 24Kbit/sec 上传输的视频流而开发。作为一种一般规则,H.263 只需H.261一半的带宽即可达到与 H.261 相同的视频质量,所以在很大程度上 H.263 取代了 H.261。H.263 使用 RTP 传输视频流。
  • H.263 支持五种分辨率。除了 H.261 支持的 QCIF 和 CIF 外,还有 SQCIF、4CIF 和 16CIF。
  1. h264dec.c: 后缀为h26l,h264,264,avc的h264(raw H.264 video) demuxer
  • H.264是一种高性能的视频编解码技术。目前国际上制定视频编解码技术的组织有两个,一个是“国际电联(ITU-T)”,它制定的标准有H.261、H.263、H.263+等,另一个是“国际标准化组织(ISO)”它制定的标准有MPEG-1、MPEG-2、MPEG-4等。而H.264则是由两个组织联合组建的联合视频组(JVT)共同制定的新数字视频编码标准,所以它既是ITU-T的H.264,又是ISO/IEC的MPEG-4高级视频编码(Advanced Video Coding,AVC),而且它也是MPEG-4标准的第10部分。
  • 不论是MPEG-4 AVC、MPEG-4 Part 10,还是ISO/IEC 14496-10,都是指H.264。H.264最大的优势是具有很高的数据压缩比率,在同等图像质量的条件下,H.264的压缩比是MPEG-2的2倍以上,是MPEG-4的1.5~2倍。
  1. hca.c: 后缀为hca的hca(CRI HCA) demuxer
  2. hcom.c; hcom(Macintosh HCOM) demuxer
  3. hevcdec.c: 后缀为hevc,h265,265的hevc(raw HEVC video) demuxer
  • HEVC是HighEfficiencyVideoCoding的缩写。是一种新的视频压缩规范,用于以取代H.264/AVC编码方式,2013年1月26号,HEVC宣布变成国家标准。
  • 与 H.264 宏块不同,H.265 在所谓的编码树单元 (CTU) 中处理信息。宏块可以跨越 4x4 到 16x16 块大小,而 CTU 可以处理多达 64x64 块,使其能够更有效地压缩信息。
  1. hnm.c: hnm(Cryo HNM v4) demuxer
  2. idcin.c: idcin(id Cinematic) demuxer
  3. iff.c: iff(Interchange File Format) demuxer
  4. ifv.c: 后缀为ifv的ifv (IFV CCTV DVR) demuxer
  • ifv是视频格式文件,是从硬盘录像机中保存的录像视频格式。ifv可以使用DVRPlayer播放器播放,也可以使用“终极解码”之类的软件转换成可以播放的格式进行播放。
  1. imfdec.c: imf(Interoperable Master Format) demuxer
  • IMF is a file-based media format that simplifies the delivery and storage of audio-visual masters intended for multiple territories and platforms. It is particularly well-adapted for delivery to today’s global content platforms.IMF works with any finished audio-visual masters, including long-form movies, episodic content, advertisements, short-form content…IMF is an international standard actively managed by SMPTE. It is extensible, uses proven technologies and benefits from many open source and commercial implementations.
  • 编译需要imf.h、imf_cpl.c
  1. img2_alias_pix.c: alias_pix(Alias/Wavefront PIX image) demuxer
  • 是用于存储位图的图像格式。它被设计为在别名PIX图形处理程序的使用。文件结构开始于一个标头,然后用编码像素的分组。它在PowerAnimator和别名3D软件用于与三维模型工作。
  1. img2_brender_pix.c: brender_pix(BRender PIX image) demuxer
  2. imx.c: 后缀为imx的imx(Simbiosis Interactive IMX) demuxer
  3. ingenientdec.c: 后缀为cgi的ingenient(raw Ingenient MJPEG) demuxer
  4. ipmovie.c: ipmovie(Interplay MVE) demuxer
  • Interplay MVE is a full motion video format used in a number of PC games published by Interplay. It combines a custom video codec and either PCM or a custom DPCM coding scheme for audio.
  1. ipudec.c: 后缀为ipu的ipu(raw IPU Video) demuxer
  2. iv8.c: iv8(IndigoVision 8000 video) demuxer
  3. jvdec.c: jv(Bitmap Brothers JV) demuxer
  • JV is a multimedia format developed by the Bitmap Brothers and is used in the DOS game Z.
  • Z is a real-time strategy game in which you fight for control of the sectors, some of which contains manufactories that can gain you additional units.
  1. libgme.c: libgme(Game Music Emu demuxer) demuxer
  • 需要外部库libgme
  1. libmodplug.c: libmodplug(ModPlug demuxer) demuxer
  • 需要外部库libmodplug
  1. libopenmpt.: libopenmpt(Tracker formats (libopenmpt)) demuxer
  • 需要外部库libopenmpt
  1. lmlm4.c: lmlm4(raw lmlm4) demuxer
  2. loasdec.c: loas(LOAS AudioSyncStream) demuxer
  3. luodatdec.c: 后缀为dat的 luodat(Video CCTV DAT) demuxer
  4. lvfdec.c: 后缀为lvf的lvf(LVF) demuxer
  5. lxfdec.c: lxf(VR native stream (LXF)) demuxer
  6. m4vdec.c: 后缀为m4v的m4v (raw MPEG-4 video) demuxer
  7. mca.c: 后缀为mca的mca (MCA Audio Format) demuxer
  8. mccdec.c: 后缀为mcc的mcc (MacCaption) demuxer
  9. mgsts.c: mgsts(Metal Gear Solid: The Twin Snakes) demuxer
  10. mj2kdec.c: 后缀为j2k的mjpeg_2000 (raw MJPEG 2000 video) demuxer
  11. mlpdec.c: mlp(raw MLP)/truehd(raw TrueHD) demuxer
  12. mlvdec.c: mlv(Magic Lantern Video (MLV)) demuxer
  13. mm.c: mm(American Laser Games MM) demuxer
  14. mods.c: 后缀为mods的mods(MobiClip MODS) demuxer
  15. moflex.c: 后缀为moflex的moflex(MobiClip MOFLEX) demuxer
  16. mpc.c: 后缀为mpc的mpc(Musepack) demuxer
  • MusePack是MPC的全称,一种音频格式。MPC(MusePaCk)是由德国人Andree Buschmann开发的一种完全免费的高品质音频格式。在其问世之前,Lame MP3是公认音质最好的有损压缩方案,在中高码率下,MPC可以做到比MP3更好音质。在高码率下,MPC的高频要比MP3细腻不少,可以在节省大量空间的前提下获得最佳音质的音乐欣赏,是目前最适合用于音乐欣赏的有损编码。
  1. mpc8.c: mpc8(Musepack SV8) demuxer
  2. mpegvideodec.c: mpegvideo(raw MPEG video) demuxer
  3. mpl2dec.c: 后缀为txt,mpl2的mpl2(MPL2 subtitles) subtitle demuxer
  4. mpsubdec.c: 后缀为sub的mpsub(MPlayer subtitles) subtitle demuxer
  5. msf.c: 后缀为msf的msf(Sony PS3 MSF) demuxer
  6. msnwc_tcp.c: msnwctcp(MSN TCP Webcam stream) demuxer
  7. mspdec.c: msp(Microsoft Paint (MSP))) demuxer
  8. mtaf.c: 后缀为mtaf的mtaf(Konami PS2 MTAF) demuxer
  9. mtv.c: mtv(MTV) demuxer
  10. musx.c: 后缀为musx的musx(Eurocom MUSX) demuxer
  11. mvdec.c: mv(Silicon Graphics Movie) demuxer
  12. mvi.c: 后缀为mvi的mvi(Motion Pixels MVI) demuxer
  13. mxg.c: 后缀为mxg的mxg(MxPEG cli) demuxer
  14. ncdec.c: 后缀为v的nc(NC camera feed) demuxer
  15. nistpheredec.c: 后缀为nist,sph的nistsphere(NIST SPeech HEader REsources) demuxer
  16. nspdec.c: 后缀为nsp的nsp(Computerized Speech Lab NSP) demuxer
  17. nsvdec.c: nsv(Nullsoft Streaming Video) demuxer
  18. nuv.c: nuv(NuppelVideo) demuxer
  19. paf.c: 后缀为paf的(Amazing Studio Packed Animation File) demuxer
  20. pjsdec.c: 后缀为pjs的PJS (Phoenix Japanimation Society) subtitles demuxer
  21. pmpdec.c: pmp(Playstation Portable PMP) audio demuxer
  22. pp_bnk.c: pp_bnk(Pro Pinball Series Soundbank) audio demuxer
  23. psxstr.c: psxstr(Sony Playstation STR) demuxer
  24. pva.c: pva(TechnoTrend PVA) demuxer
  25. pvf.c: 后缀为pvf的pvf (PVF (Portable Voice Format)) audio demuxer
  26. qcp.c: qcp(QCP) audio demuxer
  • QCP, based on RIFF, is an audio container format developed by Qualcomm. A QCP file is a QualComm PureVoice audio file. And this format is used to store ringtones and voice recordings by many cellular telephone manufacturers.
  1. r3d.c: r3d(REDCODE R3D) demuxer
  2. realtextdec.c: 后缀为rt的realtext(RealText subtitle format) subtitles demuxer
  • RealText, a RealSystem product for streaming text from files or live sources.With RealText you can create presentations consisting of text alone, or combine text with other media to create, for example, closed-captioned video.
  1. redspark.c: 后缀为rsd的redspark(RedSpark) audio demuxer
  2. rl2.c: rl2(RL2) video demuxer
  3. rpl.c: rpl(RPL / ARMovie)
  4. rsd.c: 后缀为rsd的rsd(GameCube RSD) audio demuxer
  5. s337m.c: s337m(SMPTE 337M) audio demuxer
  6. samide.c: 后缀为smi,sami的sami(SAMI subtitle format) subtile demuxer
  7. sbcdec.c: 后缀为sbc,msbc的 sbc(raw SBC (low-complexity subband codec)) demuxer
  8. sbgdec.c: 后缀为sbg的sbg(SBaGen binaural beats script) demuxer
  9. scd.c: scd(Square Enix SCD) demuxer
  10. sdr2.c: 后缀为sdr2的sdr2(SDR2) demuxer
  11. serdec.c: 后缀为ser的ser(SER (Simple uncompressed video format for astronomical capturing)) demuxer
  12. sga.c: 后缀为sga的sga(Digital Pictures SGA) demuxer
  13. shortendec.c: 后缀为shn的shn(raw Shorten) demuxer
  14. sierrovnd.c: vmd(Sierra VMD) demuxer
  15. siff.c: 后缀为vb,son的siff(Beam Software SIFF) demuxer
  16. smacker.c: smk(Smacker) demuxer
  17. smush.c: smush(LucasArts Smush) demuxer
  18. sol.c/sol.h: sol(Sierra SOL) demuxer
  19. stldec.c: 后缀为stl的stl (Spruce subtitle format) subtitle demuxer
  20. subviewer1dec.c: 后缀为sub的subviewer1(SubViewer v1 subtitle format) subtitle demuxer
  21. subviewerdec.c: 后缀为sub的subviewer(SubViewer subtitle format) subtitle demuxer
  22. svag.c: 后缀为svag的svag(Konami PS2 SVAG) audio demuxer
  23. svs.c: 后缀为svs的svs(Square SVS) audio demuxer
  24. takdec.c: 后缀为tak的tak(raw TAK) audio demuxer
  25. tedcaptionsdec.c: tedcaptions(TED Talks captions) subtitle demuxer
  26. thp.c: thp(THP) demuxer
  27. tiertexseq.c: tiertexseq(Tiertex Limited SEQ) demuxer
  28. tmv.c: tmv(8088flex TMV) demuxer
  29. tty.c: tty(Tele-typewriter) video demuxer
  30. txd.c: txd(Renderware TeXture Dictionary) video demuxer
  31. ty.c: 后缀为ty,ty+的ty(TiVo TY Stream) demuxer
  32. v210.c: 后缀为v210的v210(Uncompressed 4:2:2 10-bit) / 后缀为yuv10的v210x(Uncompressed 4:2:2 10-bit) video demuxer
  33. vag.c: 后缀为vag的vag(Sony PS2 VAG) audio demuxer
  34. vapoursynth.c: vapoursynth(VapourSynth demuxer) demuxer
  35. vc1dec.c: 后缀为vc1的vc1(raw VC-1) demuxer/muxer
  36. vividas.c: vividas(Vividas VIV) demuxer
  37. vivo.c: 后缀为viv的vivo(Vivo) demuxer
    - Proprietary web audio/video streaming format. Uses H.263 video and G.723 ADPCM audio (not the G.723.1 speech codec).Vivo files consist of a sequence of packets.Each packet starts with 4 bit packet type (see below). Then follows a 4 bit “sequence number”. Packets with same packet number probably must be combined? If the packet is not fixed-size type, the packet length follows and after that the packet data.
  38. vpk.c: 后缀为vpk的vpk(Sony PS2 VPK) demuxer
  39. vplayerdec.c: 后缀为txt的vplayer(VPlayer subtitles) subtitles demuxer
  40. vqf.c: 后缀为vqf,vql,vqe的vqf(Nippon Telegraph and Telephone Corporation (NTT) TwinVQ) demuxer
  41. wc3movie.c: wc3movie(Wing Commander III movie) demuxer
  42. westwood_vqa.c: wsvqa(Westwood Studios VQA) demuxer
  43. wsddec.c: 后缀为wsd的wsd(Wideband Single-bit Data (WSD)) demuxer
  44. wvedec.c: wve(Psion 3 audio) demuxer
  45. xa.c: xa(Maxis XA) demuxer
  46. xmv.c: 后缀为xmv的xmv(Microsoft XMV) demuxer
  47. xvag.c: 后缀为xvag的xvag(Sony PS3 XVAG) demuxer
  48. xwma.c: xwma(Microsoft xWMA) demuxer
  49. yop.c: 后缀为yop的yop(Psygnosis YOP) demuxer

muxer

  1. a64.c: 后缀为a64的a64(a64 - video for Commodore 64) muxer
  • Commodore 64,也称为C64、CBM 64或在瑞典被称作VIC-64,是由Commodore(康懋达国际)公司于1982年1月推出的8位家用电脑。
  1. adtsenc.c: 后缀为aac,adts的adts(ADTS AAC (Advanced Audio Coding)) muxer
  • 选项:
    • write_id3v2: int 值,Enable ID3v2 tag writing.
    • write_apetag: int 值, Enable APE tag writing
    • write_mpeg2:int 值,Set MPEG version to MPEG-2
  1. amvenc.c: 后缀为amv的amv(AMV) muxer
  • AMV(advance media video)是MP3/MP4上播放的一种视频格式。AMV格式具有较高压缩比例以及画面质量。
  1. chromaprint.c: chromaprint(Chromaprint) muxer
  2. crcenc.c: crc(CRC testing) muxer
  3. fifo_test.c: fifo_test(Fifo test muxer) muxer
  • 一个FIFO的测试muxer,没有输出数据
  1. fifo.c: fifo (FIFO queue pseudo-muxer) muxer
  • 用FIFO实现一个伪muxer,用于为实际输出的muxer提供数据缓冲功能。
  • muxer支持选项:
    • fifo_format:Target muxer,AV_OPT_TYPE_STRING
    • queue_size:Size of fifo queue,AV_OPT_TYPE_INT
    • format_opts:Options to be passed to underlying muxer,AV_OPT_TYPE_DICT
    • drop_pkts_on_overflow:Drop packets on fifo queue overflow not to block encoder,AV_OPT_TYPE_BOOL
    • restart_with_keyframe:Wait for keyframe when restarting outputyframe,AV_OPT_TYPE_BOOL
    • attempt_recovery:Attempt recovery in case of failure,AV_OPT_TYPE_BOOL
    • max_recovery_attempts:Maximal number of recovery attempts,AV_OPT_TYPE_INT
    • recovery_wait_time:Waiting time between recovery attempts,AV_OPT_TYPE_DURATION
    • recovery_wait_streamtime:Use stream time instead of real time while waiting for recovery, AV_OPT_TYPE_BOOL
    • recover_any_error:Attempt recovery regardless of type of the error,AV_OPT_TYPE_BOOL
    • timeshift:Delay fifo output,AV_OPT_TYPE_DURATION
  1. framecrcenc.c: framecrc (framecrc testing) muxer
  • 记录每一个帧数据的crc值
  • 编译需要framehash.c
  1. gxfenc.c: 后缀为gxf的gxf(GXF (General eXchange Format)) muxer
  • 编译需要gxf.c、gxf.h
  1. hashenc.c: 5个hash muxer
  • hash(Hash testing) muxer: 缺省使用sha256进行hash计算,支持“hash”选项设置hash算法
    • hash:set hash to use, AV_OPT_TYPE_STRING
  • md5(MD5 testing) muxer: 缺省使用md5进行hash计算,支持“hash”选项设置hash算法
    • hash:set hash to use, AV_OPT_TYPE_STRING
  • streamhash(Per-stream hash testing) : 缺省使用sha256单独计算每个流hash值,支持“hash”选项设置hash算法
    • hash:set hash to use, AV_OPT_TYPE_STRING
  • framehash(Per-frame hash testing) muxer: 缺省使用sha256单独计算每帧hash值,支持“hash”选项设置hash算法
    • hash:set hash to use, AV_OPT_TYPE_STRING
  • framemd5(Per-frame MD5 testing) muxer: 缺省使用md5单独计算每帧hash值,支持“hash”选项设置hash算法
    • hash:set hash to use, AV_OPT_TYPE_STRING
  1. hdsenc.c; hds(HDS Muxer) muxer
  • muxer 支持如下选项:
    • window_size:number of fragments kept in the manifest, AV_OPT_TYPE_INT
    • extra_window_size: number of fragments kept outside of the manifest before removing from disk, AV_OPT_TYPE_INT
    • min_frag_duration:minimum fragment duration (in microseconds, AV_OPT_TYPE_INT64
    • remove_at_exit:remove all fragments when finished, AV_OPT_TYPE_BOOL
  1. iss.c: iss(Funcom ISS) muxer
  • ISS files are audio files with IMA ADPCM audio used in some games from a company named FunCom Oslo A/S,
  1. latmenc.c: 后缀为latm,loas的latm(LOAS/LATM) muxer
  2. mkvtimestamp_v2.c: mkvtimestamp_v2(extract pts as timecode v2 format, as defined by mkvtoolnix) muxer
  3. nullenc.: null(raw null video) muxer
  • 用于测试输出空数据
  1. segment.c: segment/stream_segment muxer
  2. smoothstreamingenc.c: smoothstreaming(Smooth Streaming Muxer) muxer
  3. tee.c: tee(Multiple muxer tee) muxer
  4. ttmlenc.c: 后缀为ttml的ttml(TTML subtitle) subtitle muxer
  5. uncodecframecrcenc.c: uncodedframecrc(uncoded framecrc testing) muxer
  • 输出音视频帧的crc校验值,用于测试。
  1. webm_chunk.c: 后缀为chk的webm_chunk(WebM Chunk Muxer) muxer
  • WebM直播块混合器.这个混合器输出WebM头和块分离文件,通过DASH它可以被支持WebM直播流的客户端处理。
  • webm_chunk选项
    • chunk_start_index: start index of the chunk, AV_OPT_TYPE_INT 默认0
    • header: filename of the header where the initialization data will be written,AV_OPT_TYPE_STRING
    • audio_chunk_duration: duration of each chunk in milliseconds,AV_OPT_TYPE_INT,默认5000.
    • method: set the HTTP method, AV_OPT_TYPE_STRING
  1. webmdashenc.c: 后缀为xml的webm_dash_manifest(WebM DASH Manifest) muxer
  • WebM DASH 清单混合器.这个混合器实现了按WebM DASH清单规范生成DASH清单XML文件。它还支持生成DASH直播流
  • webm dash 的选项:
    • adaptation_sets; Adaptation sets. Syntax: id=0,streams=0,1,2 id=1,streams=3,4 and so on, AV_OPT_TYPE_STRING
    • live; create a live stream manifest, AV_OPT_TYPE_BOOL,
    • chunk_start_index; start index of the chunk, AV_OPT_TYPE_INT,
    • chunk_duration_ms; duration of each chunk (in milliseconds), AV_OPT_TYPE_INT,
    • utc_timing_url; URL of the page that will return the UTC timestamp in ISO format, AV_OPT_TYPE_STRING
    • time_shift_buffer_depth; Smallest time (in seconds) shifting buffer for which any Representation is guaranteed to be available., AV_OPT_TYPE_DOUBLE
    • minimum_update_period; Minimum Update Period (in seconds) of the manifest., AV_OPT_TYPE_INT
  1. webpenc.c: 后缀为webp的webp(WebP) muxer
  2. webvttdec.c:

demuxer/muxer

  1. aiffdec.c/aiffenc.c: aiff(Audio IFF) demuxer/muxer
  • AIFF,全称 Audio Interchange File Format,可简写为 Audio IFF 或 AIFF,是苹果公司推出的一种音频文件格式。AIFF采用未压缩的PCM编码格式。AIFF-C,是 AIFF 的扩充,C 意为 Compressed,说明这是一种可以存储压缩数据的格式,由苹果公司进行扩展。
  • 编译时需要aiff.c、aiff.h。
  • muxer 的后缀为:aif,aiff,afc,aifc,支持选项:
    • write_id3v2:bool值, Enable ID3 tags writing.
    • id3v2_version,int值,Select ID3v2 version to write. Currently 3 and 4 are supported.
  1. alp.c: alp(LEGO Racers ALP) demuxer/muxer
  • LEGO Racers是一款由High Voltage Software开发的乐高赛车视频游戏,由LEGO Media发行。1999年和2000年发布在微软Windows、任天堂64和PlayStation上,2000年和2001年发布在game Boy Color上。玩家将作为自己定制的小人和汽车参加比赛,成为“有史以来最伟大的乐高赛车冠军”。
  • muxer的后缀为:tun,pcm,支持选项:
    • type:int值,set file type
    • auto:枚举值,autodetect based on file extension
    • tun: 枚举值,force .tun, used for music
    • pcm: 枚举值,force .pcm, used for sfx
  1. amr.c: amr(3GPP AMR) demuxer/muxer、amrnb(raw AMR-NB) demuxer、amrwb(raw AMR-WB) demuxer
  • AMR(Adaptive Multi-Rate 自适应多速率编码)标准是在1998年被提出。它的主要功能是提供移动装置使用的基本语音(baseline speech)。它以可变速率的非立体声(mono)传输,速率在4.75 kbps~12.2 kbps之间,它属于窄频,带宽只有3.5 kHz。它被3GPP当成3G无线电网络系统的基本编译码技术;3G是从GSM、WCDMA、EDGE、GPRS演变而来的,而且,不管是2G、2.5G或3G,AMR都是这些无线电网络标准的最基本编译码技术。
  • AMR-WB(AMR WideBand): AMR的升级版,它也是使用ACELP技术。2000年12月时,ETSI/3GPP将AMR-WB标准化,并公布于世。ITU-T在2002年采用它,并另命名为G.722.2。由于AMR-WB的语音带宽很宽(50 Hz~7 kHz),所以它的语音品质很高。它具有9种采样速率(都是非立体声),分别是:23.85 kbps、23.05 kbps、19.85 kbps、18.25 kbps、15.85 kbps、14.25 kbps、12.65 kbps、8.85 kbps、6.6 kbps。其中,能够保持高的语音品质,并且速率最低者是12.65 kbps。AMR-WB已经被UMTS/IMT-2000无线电网络采用,作为它的编译码基本技术;UMTS也是一种3G新标准。
  • 2004年9月,ETSI/3GPP将AMR-WB+标准化。AMR-WB+是AMR-WB的升级版,它使用ACELP和TCX(Transform Coded Excitation)技术,提供高品质的语音和其它音频内容──这包括:自然声、数字音乐、与音乐相混合的声音(voice-between-music/voice-over-music)。AMR-WB+增加了立体声信号和支持更高的采样速率。并且,使用高效率的“参数立体声”(HE-PS)技术,能够以低速率传输高品质的立体声。TCX转换编码技术则补偿了ACELP的不足。AMR-WB+的采样速率是从6 kbps~48 kbps;立体声的采样速率是8 kbps~48 kbps,非立体声的采样速率是6 kbps~36 kbps。这使得它的语音带宽更宽(24 kHz),接近CD的语音品质。此外,AMR-WB+可以和AMR-WB兼容。
  1. apm.c: apm(Ubisoft Rayman 2 APM) demuxer/muxer
  • Ubisoft公司的Rayman2 游戏中的封装格式
  1. apngdec.c/apngenc.c: apng(Animated Portable Network Graphics) demuxer/muxer
  • APNG规范是由Mozilla公司的Stuart Parmenter和Vladimir Vukicevic在2004年创建的。在2006年的谷歌代码之夏期间,一位Seneca学院的学生将APNG支持添加到libpng中。Mozilla Firefox最终在2007年3月23日在Firefox 3主干构建中添加了对APNG的支持。
  • APNG与多图像网络图形(MNG)竞争,MNG是一种功能强大的位图动画格式,由与PNG相同的团队创建。APNG的优势在于较小的库大小以及与旧的PNG实现的兼容性。
  1. argo_asf.c/.h: argo_asf (Argonaut Games ASF) demuxer/muxer
  • 英国开发商Argonaut Games的音频封装格式
  • muxer支持选项:
    • version_major: int型,override file major version
    • version_minor, int型,override file minor version
    • name: string型,embedded file name (max 8 characters)
  1. argo_cvg.c: argo_cvg(Argonaut Games CVG) demuxer/muxer
  • 英国开发商Argonaut Games的音频封装格式
  • mux支持选项:
    • skip_rate_check,bool型,skip sample rate check
  1. asfdec_f.c/asfdec_o.c/asfenc.c: asf(Advanced / Active Streaming Format)/asf_o demuxer、 asf/asf_stream muxer
  • ASF: (Advanced Streaming Format) 高级串流格式的缩写,是 Microsoft 为 Windows 98 所开发的串流多媒体文件格式。同JPG、MPG文件一样,ASF文件也是一种文件类型,但是特别适合在IP网上传输。ASF是微软公司Windows Media的核心,这是一种包含音频、视频、图像以及控制命令脚本的数据格式。这个词汇当前可和 WMA 及 WMV 互换使用。利用ASF文件可以实现点播功能、直播功能以及远程教育,具有本地或网络回放、可扩充的媒体类型等优点。
  • 编译时需要asf.c、asf.h、asfcrypt.c、asfcrypt.h
  • muxer支持选项:
    • packet_size: int值,Packet size
  1. assdec.c/assenc.c: ass(SSA (SubStation Alpha) subtitle) 字幕 demuxer/muxer
  • SubStation Alpha(或 Sub Station Alpha),简称SSA,是由 CS Low(亦作 Kotus)创建、比传统字幕(如SRT)更加强大先进的字幕文件格式。而Advanced SubStation Alpha(ASS)是一种比SSA更先进的字幕脚本格式。基于SSA 4.00+编码构建。ASS的主要变化就是在SSA编写风格的基础上增添更多的效果和指令。ASS格式常被字幕组所应用,分为内挂字幕、外挂字幕和内嵌字幕三种形式。内挂字幕一般指字幕文件与视频一同封装在MKV文件中,播放时需经过播放器渲染。外挂字幕指字幕文件以单独形式存在,播放时经播放器渲染到视频上。内、外挂字幕又称软字幕,是可以提取、取出和查看源代码的。而内嵌字幕则是指字幕被以图形方式硬编码到视频中,所以播放时不需播放器等渲染,一般来说,该过程不可逆。SSA当前版本为V4.00。ASS则使用更高级的V4.00+编码。目前有很多播放器支持渲染SSA、ASS字幕。
  • muxer支持选项:
    • ignore_readorder: bool值,write events immediately, even if they’re out-of-order
  1. astdec.c/astenc.c: ast(Audio Stream) demuxer/muxer
  • 编译时需要ast.h、ast.c
  • muxer支持选项:
    • loopstart: int值,Loopstart position in milliseconds.
    • loopend: int值,Loopend position in milliseconds.
  1. au.c: au (Sun AU) demuxer/muxer
  • Au音频格式是一种被sun微处理器公司发明的一种简单的音频编码格式。日后一直在NEXT系统上使用,后面就演变成了一种标准的音频编码格式。
  • muxer的后缀为"au"。
  1. avidec.c/avienc.c: avi(Audio Video Interleaved) demuxer/muxer
  • AVI英文全称为Audio Video Interleaved,即音频视频交错格式,是微软公司于1992年11月推出、作为其Windows视频软件一部分的一种多媒体容器格式。AVI文件将音频(语音)和视频(影像)数据包含在一个文件容器中,允许音视频同步回放。类似DVD视频格式,AVI文件支持多个音视频流。AVI信息主要应用在多媒体光盘上,用来保存电视、电影等各种影像信息。
  • 编译时需要包含avi.h
  • muxer的后缀为avi,支持选项如下:
    • reserve_index_space: int值,reserve space (in bytes) at the beginning of the file for each stream index
    • write_channel_mask:bool值,write channel mask into wave format header
    • flipped_raw_rgb:bool值, Raw RGB bitmaps are stored bottom-up
  1. bit.c: bit(G.729 BIT file format) demuxer/muxer
  2. cafdec.c/cafenc.c: caf(Apple CAF (Core Audio Format)) demuxer/muxer
  • 编译时需要caf.h、caf.c
  1. codec2.c: codec2(codec2 .c2 demuxer) demuxer/muxer 、codec2raw(raw codec2 demuxer) demuxer
  • Codec2 is an open source low bit rate speech codec designed for communications quality speech at 2400 bit/s and below. Applications include low bandwidth HF/VHF digital radio and VOIP trunking. Codec 2 operating at 2000 bit/s can send 32 phone calls using the bandwidth required for one 64 kbit/s uncompressed phone call. It fills a gap in open source, free-as-in-speech voice codecs beneath 5000 bit/s and is released under the GNU Lesser General Public License (LGPL).
  1. dashdec.c/dashenc.c: dash(Dynamic Adaptive Streaming over HTTP) demuxer/muxer
  • DASH,又叫MPEG DASH,DASH:Dynamic Adaptive Streaming over HTTP ,是一种在互联网上传送动态码率的Video Streaming技术,类似于苹果的HLS,DASH会通过media presentation description (MPD)将视频内容切片成一个很短的文件片段,每个切片都有多个不同的码率,DASH Client可以根据网络的情况选择一个码率进行播放,支持在不同码率之间无缝切换。YouTube采用DASH。其网页端及移动端APP都使用了DASH。DASH的其他采用者包括:Netflix, Hulu。
  • DASH是由MPEG (Moving Picture Experts Group)组织制定,2010年开始启动,2011年11月发布Draft版本,2012年4月发布第一稿Version(ISO/IEC 23009-1:2012),2014年5月发布第二稿(ISO/IEC 23009-1:2014),最新稿(ISO/IEC 23009-3:2015)。目前3GPP Release 10已经将DASH纳入其中;在HbbTV 1.5中也支持DASH;DVB-DASH也将DASH纳入到DVB(ETSI TS 103 285 v.1.1.1)。目前DASH Industry Forum由发起厂家组成,致力于推进DASH产品生态,将DASH产业化和业界最佳实践推向批量应用。
  • 编译时需要dash.h、dash.c、vpcc.c、vpcc.h
  • demuxer 支持选项:
    • allowed_extensions:List of file extensions that dash is allowed to access,AV_OPT_TYPE_STRING
  • muxer 支持选择:
    • adaptation_sets:Adaptation sets. Syntax: id=0,streams=0,1,2 id=1,streams=3,4 and so on, AV_OPT_TYPE_STRING
    • window_size:number of segments kept in the manifest, AV_OPT_TYPE_INT
    • extra_window_size: number of segments kept outside of the manifest before removing from disk, AV_OPT_TYPE_INT
    • seg_duration: segment duration (in seconds, fractional value can be set), AV_OPT_TYPE_DURATION
    • frag_duration: fragment duration (in seconds, fractional value can be set), AV_OPT_TYPE_DURATION
    • frag_type: set type of interval for fragments, AV_OPT_TYPE_INT,
    • none: one fragment per segment, AV_OPT_TYPE_CONST
    • every_frame: fragment at every frame, AV_OPT_TYPE_CONST
    • duration: fragment at specific time intervals, AV_OPT_TYPE_CONST
    • pframes: fragment at keyframes and following P-Frame reordering (Video only, experimental), AV_OPT_TYPE_CONST
    • remove_at_exit: remove all segments when finished, AV_OPT_TYPE_BOOL
    • use_template: Use SegmentTemplate instead of SegmentList, AV_OPT_TYPE_BOOL
    • use_timeline: Use SegmentTimeline in SegmentTemplate, AV_OPT_TYPE_BOOL
    • single_file: Store all segments in one file, accessed using byte ranges, AV_OPT_TYPE_BOOL
    • single_file_name: DASH-templated name to be used for baseURL. Implies storing all segments in one file, accessed using byte ranges, AV_OPT_TYPE_STRING
    • init_seg_name: DASH-templated name to used for the initialization segment, AV_OPT_TYPE_STRING
    • media_seg_name: DASH-templated name to used for the media segments, AV_OPT_TYPE_STRING
    • utc_timing_url: URL of the page that will return the UTC timestamp in ISO format, AV_OPT_TYPE_STRING
    • method: set the HTTP method, AV_OPT_TYPE_STRING
    • http_user_agent: override User-Agent field in HTTP header, AV_OPT_TYPE_STRING
    • http_persistent: Use persistent HTTP connections, AV_OPT_TYPE_BOOL
    • hls_playlist: Generate HLS playlist files(master.m3u8, media_%d.m3u8), AV_OPT_TYPE_BOOL
    • hls_master_name: HLS master playlist name, AV_OPT_TYPE_STRING
    • streaming: Enable/Disable streaming mode of output. Each frame will be moof fragment, AV_OPT_TYPE_BOOL
    • timeout: set timeout for socket I/O operations, AV_OPT_TYPE_DURATION
    • index_correction: Enable/Disable segment index correction logic, AV_OPT_TYPE_BOOL
    • format_options: set list of options for the container format (mp4/webm) used for dash, AV_OPT_TYPE_DICT
    • global_sidx: Write global SIDX atom. Applicable only for single file, mp4 output, non-streaming mode, AV_OPT_TYPE_BOOL
    • dash_segment_type: set dash segment files type, AV_OPT_TYPE_INT
    • auto: select segment file format based on codec, AV_OPT_TYPE_CONST
    • mp4: make segment file in ISOBMFF format, AV_OPT_TYPE_CONST
    • webm: make segment file in WebM format, AV_OPT_TYPE_CONST
    • ignore_io_errors: Ignore IO errors during open and write. Useful for long-duration runs with network output, AV_OPT_TYPE_BOOL
    • lhls: Enable Low-latency HLS(Experimental). Adds #EXT-X-PREFETCH tag with current segment’s URI, AV_OPT_TYPE_BOOL
    • ldash: Enable Low-latency dash. Constrains the value of a few elements, AV_OPT_TYPE_BOOL
    • master_m3u8_publish_rate: Publish master playlist every after this many segment intervals, AV_OPT_TYPE_INT
    • write_prft: Write producer reference time element, AV_OPT_TYPE_BOOL
    • mpd_profile: Set profiles. Elements and values used in the manifest may be constrained by them, AV_OPT_TYPE_FLAGS
    • dash: MPEG-DASH ISO Base media file format live profile, AV_OPT_TYPE_CONST
    • dvb_dash: DVB-DASH profile, AV_OPT_TYPE_CONST
    • http_opts: HTTP protocol options, AV_OPT_TYPE_DICT
    • target_latency: Set desired target latency for Low-latency dash, AV_OPT_TYPE_DURATION
    • min_playback_rate: Set desired minimum playback rate, AV_OPT_TYPE_RATIONAL
    • max_playback_rate: Set desired maximum playback rate, AV_OPT_TYPE_RATIONAL
    • update_period: Set the mpd update interval, AV_OPT_TYPE_INT64
  1. dauddec.c/daudenc.c: 后缀为302,daud 的daud(D-Cinema audio) demuxer/muxer。
  2. dv.c/dvenc.c: 后缀为dv,dif的dv(DV (Digital Video)) demuxer/muxer
  • DV还可以译成“数字视频”的意思,它是由索尼(SONY)、松下(PANASONIC)、JVC(胜利)、夏普(SHARP)、东芝(TOSHIBA)和佳能(CANON)等多家著名家电巨擘联合制定的一种数码视频格式。
  1. ffmetadec.c/ffmetaenc.c: 后缀为ffmeta的ffmetadata (FFmpeg metadata in text) demuxer/muxer
  • 通过使用ffmetadata,demuxer/muxer可以从输入的ffmetadata文件中导出元数据,也可以编辑ffmetadata文件以转换输出到输出一个简单的utf-8编码的类INI文本文件中。
  1. filmstripdec.c/filestripenc.c: 后缀为flm的filmstrip(Adobe Filmstrip) demuxer/muxer
  2. fitsdec.c/fitsenc.c: 后缀为fits的fit(Flexible Image Transport System) demuxer/muxer
  • FITS (Flexible Image Transport System)是天文学界常用的数据格式,它专门为在不同平台之间交换数据而设计。1988年的国际天文学联合会(IAU)大会指定IAU的FITS工作组全权负责此格式的修订。IAU规定,今后对FITS标准的修改不得破坏前后一致性,也就是所谓的“once FITS, always FITS”一说。
  1. flacdec.c/flacenc.c: 后缀为flac的flac(raw FLAC) demuxer/muxer
  • FLAC中文可解释为无损音频压缩编码。FLAC是一套著名的自由音频压缩编码,其特点是无损压缩。不同于其他有损压缩编码如MP3及AAC,它不会破坏任何原有的音频信息,所以可以还原音乐光盘音质 [1] 。2012年以来它已被很多软件及硬件音频产品(如CD等)所支持。
  • 发展历史:
    • FLAC项目由Josh Coalson于2000年启动。进入beta阶段后并在2001年1月15日发布的0.5版的参考实现时,FLAC位流格式冻结。
    • 2001年6月FLAC发布了1.0版。
    • 2003年1月29日, "Xiph. Org"基金会和FLAC项目宣布FLAC成为"Xiph. Org"旗下的独立公司 banner. 除此之外,"Xiph. Org"还对许多免费压缩格式提供支持,如Vorbis、Theora、Speex等等。
    • 2007年9月17日FLAC发布了1.2.1版。
    • 2013年6月1日六年来首次发布更新,从v1.2升级到v1.3。主要变化包括:支持RF64和Wave64 格式,ReplayGain支持最高192kHz音频取样率,等等。
  1. flvdec.c/flvenc.c: 后缀为flv的flv(FLV (Flash Video)) demuxer/muxer
  • FLV 是FLASH VIDEO的简称,FLV流媒体格式是随着Flash MX的推出发展而来的视频格式。FLV 是一种全新的流媒体视频格式,它利用了网页上广泛使用的Flash Player 平台,将视频整合到Flash动画中。也就是说,网站的访问者只要能看Flash动画,自然也能看FLV格式视频,而无需再额外安装其它视频插件,FLV视频的使用给视频传播带来了极大便利。
  • muxer 支持选项:
    • flvflags:FLV muxer flags, AV_OPT_TYPE_FLAGS
    • aac_seq_header_detect:Put AAC sequence header based on stream data, AV_OPT_TYPE_CONST
    • no_sequence_end:disable sequence end for FLV, AV_OPT_TYPE_CONST
    • no_metadata:disable metadata for FLV, AV_OPT_TYPE_CONST
    • no_duration_filesize:disable duration and filesize zero value metadata for FLV, AV_OPT_TYPE_CONST
    • add_keyframe_index:Add keyframe index metadata, AV_OPT_TYPE_CONST
  1. gif.c/gifdec.c: 后缀为gif的gif(CompuServe Graphics Interchange Format (GIF)) demuxer/muxer
  • GIF格式的名称是Graphics Interchange Format的缩写,是在1987年由Compu Serve公司为了填补跨平台图像格式的空白而发展起来的。GIF可以被PC和Mactiontosh等多种平台上被支持。
  • GIF是一种位图。位图的大致原理是:图片由许多的像素组成,每一个像素都被指定了一种颜色,这些像素综合起来就构成了图片。GIF采用的是Lempel-Zev-Welch(LZW)压缩算法,最高支持256种颜色。由于这种特性,GIF比较适用于色彩较少的图片,比如卡通造型、公司标志等等。如果碰到需要用真彩色的场合,那么GIF的表现力就有限了。GIF通常会自带一个调色板,里面存放需要用到的各种颜色。在Web运用中,图像的文件量的大小将会明显地影响到下载的速度,因此我们可以根据GIF带调色板的特性来优化调色板,减少图像使用的颜色数(有些图像用不到的颜色可以舍去),而不影响到图片的质量。
  1. hls.c/hlsenc.c: 后缀为m3u8的hls(Apple HTTP Live Streaming) demuxer/muxer
  • HTTP Live Streaming(缩写是HLS)是一个由苹果公司提出的基于HTTP的流媒体网络传输协议。Http live streaming 直译过来就是网络直播流,其实就是一种流媒体解决方案,可以实现音视频的直播和点播,以下简称hls。
  • hls协议基本规则:
    • 视频的封装格式是TS。
    • 视频的编码格式为H264,音频编码格式为MP3、AAC或者AC-3。
    • 除了TS视频文件本身,还定义了用来控制播放的m3u8文件(文本文件)
  • demuxer编译需要hls_sample_encryption.c、hls_sample_encryption.h 支持如下选项:
    • live_start_index: segment index to start live streams at (negative values are from the end), AV_OPT_TYPE_INT
    • allowed_extensions: List of file extensions that hls is allowed to access, AV_OPT_TYPE_STRING,
      {.str = “3gp,aac,avi,ac3,eac3,flac,mkv,m3u8,m4a,m4s,m4v,mpg,mov,mp2,mp3,mp4,mpeg,mpegts,ogg,ogv,oga,ts,vob,wav”}
    • max_reload: Maximum number of times a insufficient list is attempted to be reloaded, AV_OPT_TYPE_INT
    • m3u8_hold_counters: The maximum number of times to load m3u8 when it refreshes without new segments , AV_OPT_TYPE_INT
    • http_persistent: Use persistent HTTP connections, AV_OPT_TYPE_BOOL
    • http_multiple: Use multiple HTTP connections for fetching segments, AV_OPT_TYPE_BOOL
    • http_seekable: Use HTTP partial requests, 0 = disable, 1 = enable, -1 = auto, AV_OPT_TYPE_BOOL
    • seg_format_options: Set options for segment demuxer, AV_OPT_TYPE_DICT
  • muxer 编译需要hlsplaylist.c、hlsplaylist.h,支持如下选项:
    • start_number: set first number in the sequence,AV_OPT_TYPE_INT64
    • hls_time: set segment length,AV_OPT_TYPE_DURATION
    • hls_init_time: set segment length at init list,AV_OPT_TYPE_DURATION
    • hls_list_size: set maximum number of playlist entries,AV_OPT_TYPE_INT
    • hls_delete_threshold: set number of unreferenced segments to keep before deleting,AV_OPT_TYPE_INT
    • hls_vtt_options: set hls vtt list of options for the container format used for hls, AV_OPT_TYPE_STRING
    • hls_allow_cache: explicitly set whether the client MAY (1) or MUST NOT (0) cache media segments, AV_OPT_TYPE_INT,
    • hls_base_url: url to prepend to each playlist entry, AV_OPT_TYPE_STRING
    • hls_segment_filename: filename template for segment files,AV_OPT_TYPE_STRING
    • hls_segment_options: set segments files format options of hls, AV_OPT_TYPE_DICT
    • hls_segment_size: maximum size per segment file, (in bytes),AV_OPT_TYPE_INT
    • hls_key_info_file: file with key URI and key file path,AV_OPT_TYPE_STRING
    • hls_enc: enable AES128 encryption support,AV_OPT_TYPE_BOOL
    • hls_enc_key: hex-coded 16 byte key to encrypt the segments,AV_OPT_TYPE_STRING
    • hls_enc_key_url: url to access the key to decrypt the segments,AV_OPT_TYPE_STRING
    • hls_enc_iv: hex-coded 16 byte initialization vector,AV_OPT_TYPE_STRING
    • hls_subtitle_path: set path of hls subtitles, AV_OPT_TYPE_STRING
    • hls_segment_type: set hls segment files type, AV_OPT_TYPE_INT
    • mpegts: make segment file to mpegts files in m3u8, AV_OPT_TYPE_CONST
    • fmp4: make segment file to fragment mp4 files in m3u8, AV_OPT_TYPE_CONST
    • hls_fmp4_init_filename: set fragment mp4 file init filename,AV_OPT_TYPE_STRING
    • hls_fmp4_init_resend: resend fragment mp4 init file after refresh m3u8 every time, AV_OPT_TYPE_BOOL
    • hls_flags: set flags affecting HLS playlist and media file generation, AV_OPT_TYPE_FLAGS
    • single_file: generate a single media file indexed with byte ranges, AV_OPT_TYPE_CONST
    • temp_file: write segment and playlist to temporary file and rename when complete, AV_OPT_TYPE_CONST
    • delete_segments: delete segment files that are no longer part of the playlist, AV_OPT_TYPE_CONST
    • round_durations: round durations in m3u8 to whole numbers, AV_OPT_TYPE_CONST
    • discont_start: start the playlist with a discontinuity tag, AV_OPT_TYPE_CONST
    • omit_endlist: Do not append an endlist when ending stream, AV_OPT_TYPE_CONST
    • split_by_time: split the hls segment by time which user set by hls_time
    • append_list: append the new segments into old hls segment list
    • program_date_time: add EXT-X-PROGRAM-DATE-TIME, AV_OPT_TYPE_CONST
    • second_level_segment_index: include segment index in segment filenames when use_localtime, AV_OPT_TYPE_CONST
    • second_level_segment_duration: include segment duration in segment filenames when use_localtime, AV_OPT_TYPE_CONST
    • second_level_segment_size: include segment size in segment filenames when use_localtime, AV_OPT_TYPE_CONST
    • periodic_rekey: reload keyinfo file periodically for re-keying, AV_OPT_TYPE_CONST
    • independent_segments: add EXT-X-INDEPENDENT-SEGMENTS, whenever applicable, AV_OPT_TYPE_CONST
    • iframes_only: add EXT-X-I-FRAMES-ONLY, whenever applicable, AV_OPT_TYPE_CONST
    • strftime: set filename expansion with strftime at segment creation, AV_OPT_TYPE_BOOL
    • strftime_mkdir: create last directory component in strftime-generated filename, AV_OPT_TYPE_BOOL
    • hls_playlist_type: set the HLS playlist type, AV_OPT_TYPE_INT
    • event: EVENT playlist, AV_OPT_TYPE_CONST
    • vod: VOD playlist, AV_OPT_TYPE_CONST
    • method: set the HTTP method(default: PUT), AV_OPT_TYPE_STRING
    • hls_start_number_source: set source of first number in sequence, AV_OPT_TYPE_INT
    • generic: start_number value (default), AV_OPT_TYPE_CONST
    • epoch: seconds since epoch, AV_OPT_TYPE_CONST
    • epoch_us: microseconds since epoch
    • datetime: current datetime as YYYYMMDDhhmmss
    • http_user_agent: override User-Agent field in HTTP header
    • var_stream_map: Variant stream map string, AV_OPT_TYPE_STRING
    • cc_stream_map: Closed captions stream map string, AV_OPT_TYPE_STRING
    • master_pl_name: Create HLS master playlist with this name, AV_OPT_TYPE_STRING
    • master_pl_publish_rate: Publish master play list every after this many segment intervals, AV_OPT_TYPE_INT
    • http_persistent:Use persistent HTTP connections, AV_OPT_TYPE_BOOL
    • timeout: set timeout for socket I/O operations, AV_OPT_TYPE_DURATION
    • ignore_io_errors: Ignore IO errors for stable long-duration runs with network output, AV_OPT_TYPE_BOOL
    • headers: set custom HTTP headers, can override built in default headers, AV_OPT_TYPE_STRING
  1. icodec.c/icoenc.c: 后缀为ico的ico(Microsoft Windows ICO) demuxer/muxer
  2. idroqdec.c/idroqenc.c: 后缀为roq的roq(id RoQ) demuxer/muxer
  3. ilbc.c: 后缀为lbc的ilbc(iLBC storage) demuxer/muxer
  4. img2dec.c/img2enc.c: 4类图片相关的 demuxer/muxer
  • 编译时需要img2.c、img2.h
  • image2 (image2 sequence) demuxer: 从文件或其他流中读取图片数据,可以读取任意格式的图片。支持如下选项:
    • framerate:set the video framerate,AV_OPT_TYPE_VIDEO_RATE
    • pixel_format:set video pixel format, AV_OPT_TYPE_STRING
    • video_size: set video size, AV_OPT_TYPE_IMAGE_SIZE
    • loop: force loop over input file sequence, AV_OPT_TYPE_BOOL
    • pattern_type: set pattern type, AV_OPT_TYPE_INT
    • glob_sequence: select glob/sequence pattern type, AV_OPT_TYPE_CONST
    • glob: select glob pattern type, AV_OPT_TYPE_CONST
    • sequence: select sequence pattern type, AV_OPT_TYPE_CONST
    • none: disable pattern matching, AV_OPT_TYPE_CONST
    • start_number: set first number in the sequence, AV_OPT_TYPE_INT
    • start_number_range: set range for looking at the first sequence number, AV_OPT_TYPE_INT
    • ts_from_file: set frame timestamp from file’s one, AV_OPT_TYPE_INT
    • none: none, AV_OPT_TYPE_CONST
    • sec: second precision, AV_OPT_TYPE_CONST
    • ns: nano second precision, AV_OPT_TYPE_CONST
    • export_path_metadata: enable metadata containing input path information
  • image2pipe (piped image2 sequence) demuxer: 从管道中读取图片数据,一般用于指定格式的图片数据读取。支持如下选项:
    • framerate:set the video framerate,AV_OPT_TYPE_VIDEO_RATE
    • pixel_format:set video pixel format, AV_OPT_TYPE_STRING
    • video_size: set video size, AV_OPT_TYPE_IMAGE_SIZE
    • loop: force loop over input file sequence, AV_OPT_TYPE_BOOL
    • frame_size:force frame size in bytes, AV_OPT_TYPE_INT
  • image2pipe 类似demuxer有多个,均以XX_pipe命名,“XX”为:bmp、cri、dds、dpx、exr、gem、gif、j2k、jpeg、jpegls、pam、pbm、pcx、pgm、pgmyuv、pgx、photocd、pictor、png、ppm、psd、qdraw、sgi、sunrast、svg、tiff、webp、xbm、xpm、xwd。
  • image2 (image2 sequence) muxer 的扩展名支持: bmp,dpx,exr,jls,jpeg,jpg,ljpg,pam,pbm,pcx,pfm,pgm,pgmyuv,png,ppm,sgi,tga,tif,tiff,jp2,j2c,j2k,xwd,sun,ras,rs,im1,im8,im24,sunras,xbm,xface,pix,y。 支持选项:
    • update: continuously overwrite one file, AV_OPT_TYPE_BOOL
    • start_number: set first number in the sequence, AV_OPT_TYPE_INT
    • strftime: use strftime for filename, AV_OPT_TYPE_BOOL
    • frame_pts: use current frame pts for filename, AV_OPT_TYPE_BOOL
    • atomic_writing: write files atomically (using temporary files and renames, AV_OPT_TYPE_BOOL
    • protocol_opts: specify protocol options for the opened files, AV_OPT_TYPE_DICT
  • image2pipe (piped image2 sequence) muxer 则直接将数据输出到pipe中。
  1. icamdec.c/icamenc.c: 后缀为sf,ircam的ircam(Berkeley/IRCAM/CARL Sound Format) demuxer/muxer
  • The Berkeley/IRCAM/CARL Sound Format / File (BICSF), developed in the 1980s, is a result of the merging of several different earlier sound file formats and systems including the csound system developed by Dr Gareth Loy at the Computer Audio Research Lab (CARL) at UC San Diego, the IRCAM sound file system developed by Rob Gross and Dan Timis at the Institut de Recherche et Coordination Acoustique / Musique in Paris and the Berkeley Fast Filesystem.
  • It was developed initially as part of the Berkeley/IRCAM/CARL Sound Filesystem, a suite of programs designed to implement a filesystem for audio applications running under Berkeley UNIX. It was particularly popular in academic music research centres, and was used a number of times in the creation of early computer-generated compositions.
  • 编译需要ircam.c、ircam.h
  1. ivfdec.c/ivfenc.c: 后缀为ivf的ivf(On2 IVF) demuxer/muxer
  2. jacosubdec.c/jacosubenc.c: 后缀为jss、js的jacosub(JACOsub subtitle format) demuxer/muxer
  • JACOsub is a program (now open source) designed for displaying timed sequences of titles and graphics over a video. Professional-quality output and flexibility have been the primary goals since the program’s inception. It was originally written for the Japanese Animation Club of Orlando (JACO) to lay English subtitles over Japanese-language films and television shows. The program has spread and grown in popularity due to its extremely flexible script format, clean multi-buffered title transitions, and other features described in the next section.
  1. kvag.c: 后缀为vag的kvag(Simon & Schuster Interactive VAG) demuxer/muxer
  • Simon & Schuster, the publishing operation of Viacom Inc., is a global leader in the field of general interest publishing, dedicated to providing the best in fiction and nonfiction for consumers of all ages, across all printed, electronic and multimedia formats.
  1. lrcdec.c/lrcenc.c: lrc(LRC lyrics) demuxer/muxer
  • lrc是英文lyric(歌词)的缩写,被用做歌词文件的扩展名。以lrc为扩展名的歌词文件可以在各类数码播放器中同步显示。LRC 歌词是一种包含着“:”形式的“标签(tag)”的、基于纯文本的歌词专用格式。最早由郭祥祥先生(Djohan)提出并在其程序中得到应用。这种歌词文件既可以用来实现卡拉OK功能(需要专门程序),又能以普通的文字处理软件查看、编辑。当然,实际操作时通常是用专门的LRC歌词编辑软件进行高效编辑的。
  1. matroskadec.c/matroskaenc.c: matroska/Webm (Matroska / WebM) demuxer/muxer
  • Matroska多媒体容器(Multimedia Container)是一种开放标准的自由的容器和文件格式,是一种多媒体封装格式,能够在一个文件中容纳无限数量的视频、音频、图片或字幕轨道。所以其不是一种压缩格式,而是Matroska定义的一种多媒体容器文件。其目标是作为一种统一格式保存常见的电影、电视节目等多媒体内容。在概念上Matroska和其他容器,比如AVI、MP4或ASF(Advanced Streaming Format,即高级流格式)比较类似,但其在技术规程上完全开放,在实现上包含很多开源软件。可将多种不同编码的视频及16条以上不同格式的音频和不同语言的字幕流封装到一个Matroska 媒体文件当中。最大的特点就是能容纳多种不同类型编码的视频、音频及字幕流
  • WebM由Google提出,是一个开放、免费的媒体文件格式。WebM 影片格式其实是以 Matroska(即 MKV)容器格式为基础开发的新容器格式,里面包括了VP8影片轨和 Ogg Vorbis 音轨,其中Google将其拥有的VP8视频编码技术以类似BSD授权开源,Ogg Vorbis 本来就是开放格式。 WebM标准的网络视频更加偏向于开源并且是基于HTML5标准的,WebM 项目旨在为对每个人都开放的网络开发高质量、开放的视频格式,其重点是解决视频服务这一核心的网络用户体验。Google 说 WebM 的格式相当有效率,应该可以在 netbook、tablet、手持式装置等上面顺畅地使用。
  • 编译需要matroska.c、matroska.h、qtpalette.h、qtpalette.c
  • demuxer包括: webm_dash_manifest(WebM DASH Manifest) 、matroska,webm(Matroska / WebM) .matroska的扩展名包括:mkv,mk3d,mka,mks,webm
  • muxer包括: matroska(Matroska)、webm(WebM)、后缀为mka的matroska(Matroska Audio)
  1. microdvddec.c/microdvdenc.c: microdvd (MicroDVD subtitle format) subtitle demuxer/muxer
  • MicroDVD is a very simple subtitle format based on frame numbers instead of time codes. The format for every line is:
    {START_FRAME}{END_FRAME}Dialog line|Second line of dialog
  1. mmf.c: mmf(Yamaha SMAF) demuxer
  • 合成音乐移动应用程序格式 (SMAF) 是 Yamaha 指定的用于便携式电子设备(如手机和 PDA)的音乐数据格式。SMAF 的文件扩展名是 .mmf,通常作为带有五个声音芯片之一的手机铃声。
  • 任何 SMAF 容器都必须在文件开头具有签名(标记)MMMD(十六进制:4D 4D 4D 44),后跟 4 字节数据大小(大端顺序,高字节在前)。MMF 文件被组织成数据段(块)。每个段都有一个 8 字节标题作为前缀:4 字节签名(CNTI、OPDA、MSTR、MTR或ATR)和 4 字节数据大小(大端顺序,高字节在前)。
  1. mov.c/movenc.c: mov(QuickTime / MOV) demuxer/muxer
  • MOV即QuickTime封装格式(也叫影片格式),它是Apple公司开发的一种音频、视频文件封装,用于存储常用数字媒体类型。当选择QuickTime(*.mov)作为“保存类型”时,动画将保存为·mov文件。QuickTime用于保存音频和视频信息,包括Apple Mac OS,MicrosoftWindows95/98/NT/2003/XP/VISTA,甚至WINDOWS7在内的所有主流电脑平台支持。
  • demuxer name: mov,mp4,m4a,3gp,3g2,mj2, 后缀:mov,mp4,m4a,3gp,3g2,mj2,psp,m4b,ism,ismv,isma,f4v
  • muxer 分别为: mov(QuickTime / MOV)、3gp(3GPP file format)、mp4(MPEG-4 Part 14)、psp(PSP MP4 (MPEG-4 Part 14))、3g2(3GPP2 file format)、ipod(iPod H.264 MP4 (MPEG-4 Part 14))、ismv(ISMV/ISMA (Smooth Streaming))、f4v(F4V Adobe Flash Video)
  • 编译需要mov_chan.c/.h、mov_esds.c、movenc_ttml.c/.h、movenccenc.c/.h、movenchint.c
  1. mp3dec.c/mp3enc.c: 后缀为mp3的mp3(MPEG audio layer 3) demuxer/muxer
  • 1987年,IIS开始在EUREKA项目EU147框架下的数字声音广播(DAB)中的感知音频编码问题上进行研究工作。在Erlangen大学(Dieter Seitzer教授)的协作下,最终IIS设计出了一个非常好的,压缩比很大的算法,这就是后来被指定为ISO-MPEG音频压缩第三层(MP3)标准的算法
  • 编译时需要id3v1.c、id3v1.h、id3v2.c、id3v2.h、id3v2enc.c
  1. mpeg.c/mpeg.h/mpegenc.c: mpeg/vcd/vod/svcd/dvd demuxer/muxer
  • MPEG2-PS中的PS是Program Stream(程序流)的简称。其分为MPEG-1和MPEG-2两部分。程序流将一个或多个分组但有共同的时间基准的基本数据流 (PES)合并成一个整体流。PS文件分为3层:ps层(Program Stream)、pes层(Packet Elemental Stream)、es层(Elementary Stream)。es层就是音视频数据,pes层是在音视频数据上加了时间戳等对数据帧的说明信息,ps层是在pes层上加入了数据流识别和传输的必要信息。
  • demuxer 包括: mpeg(MPEG-PS (MPEG-2 Program Stream))、vobsub(VobSub subtitle format)
  • muxer 包括: mpeg(MPEG-1 Systems / MPEG program stream)、 vcd(MPEG-1 Systems / MPEG program stream (VCD))、vob(MPEG-2 PS (VOB))、svcd(MPEG-2 PS (SVCD))、dvd(MPEG-2 PS (DVD VOB))
  1. mpegts.c/mpegts.h/mpeegtsenc.c: mpegts/mpegtsraw demuxer/muxer
  • MPEG2-TS 传输流(MPEG-2 Transport Stream;又称MPEG-TS、MTS、TS)是一种传输和存储包含视频、音频与通信协议各种数据的标准格式,用于数字电视广播系统,如DVB、ATSC、ISDB、IPTV等等。MPEG2-TS定义于MPEG-2第一部分:系统(即ISO/IEC标准13818-1或ITU-TRec. H.222.0)。MPEG2-TS面向的传输介质是地面和卫星等可靠性较低的传输介质,这一点与面向较可靠介质如DVD等的MPEG PS不同
  • TS分组(TS Packet)大小最大为188字节,它是多路复用的基本单位。多个不同的ES的内容会分别被封装到TSP中通过同一个TS传输。由于分组(分组)尺寸较小,复用对各个ES造成的时延也较低,对传输误码的耐受性也强于那些将一帧画面封装到一整个包里的容器格式,如MPEG PS和AVI、MOV/MP4、MKV等。这对于视频会议等对实时性要求高的场景特别有意义:单个分组损坏不会造成很大的语音延迟。TS通常以固定码率传输。固定码率传输时,如果上层待传输内容不足,会发送空分组以占位。蓝光光盘中使用的MPEG-2 TS也使用了固定码率。
  1. mpjpeg.c/mpjpegdec.c: 后缀为mjpg的mpjpeg(MIME multipart JPEG) demuxer/muxer
  2. mxfdec.c/mxfenc.c: mxf(Material eXchange Format) demuxer/muxer
  • MXF是英文Material eXchange Format(素材交换格式)的缩语。MXF是SMPTE(美国电影与电视工程师学会)组织定义的一种专业音视频媒体文件格式。MXF主要应用于影视行业媒体制作、编辑、发行和存储等环节。SMPTE为其定义的标准包括:SMPTE - 377M、SMPTE - EG41、SMPTE - EG42等,并不断进行更新和完善。
  • MXF文件通常被视为一种“容器”文件格式,也就是说MXF文件格式与内容数据的格式无关,这得益于MXF底层使用了KLV(键-长度-值)三元组编码方式。MXF文件通常包含文件头、文件体和文件尾等几个部分。
  1. nutdec.c/nutenc.c: nut(NUT) demuxer/muxer
  • NUT is a container format under construction by MPlayer, FFmpeg and Libav developers. Its main goals are
    . Simplicity: the format is simple to parse in code and easy to implement
    . Flexibility: able to encapsulate many types of audio, video, and subtitle codecs
    . Resilience: error-resistant while maintaining the smallest possible overhead
  • Specification: http://ffmpeg.org/~michael/nut.txt
  • git repository: git://git.ffmpeg.org/nut
  1. oggdec.c/oggenc.c: ogg(Ogg) demuxer/muxer
  • Ogg是一个自由且开放标准的容器格式,由Xiph.Org 基金会所维护。Ogg格式并不受到软件专利的限制,并设计用于有效率地流媒体和处理高品质的数字多媒体。
  • 在Ogg的多媒体框架下,Theora提供有损的图像层面,而通常用音乐导向的Vorbis编解码器作为音效层面。针对语音设计的压缩编解码器Speex和无损的音效压缩编解码器FLAC与OggPCM也可能作为音效层面使用。
  • 编译需要oggparsecelt.c、oggparsedirac.c、oggparseflac.c、oggparseogm.c、oggparseopus.c、oggparsekeleton.c、oggparsespeex.c、oggparsetheora.c、oggparsevorbis.c、oggparsevp8.c、voribiscomment.c、voribiscomment.h.
  • demuxer 为: 后缀为ogg的ogg(Ogg) demuxer
  • muxer 为: ogg(Ogg)、oga(Ogg Audio)、ogv(Ogg Video)、spx(Ogg Speex)、opus(Ogg Opus).
  1. omadec.c/omaenc.c: oma(Sony OpenMG audio) demuxer/muxer
  • 编译需要oma.c、oma.h
  • The OMA extension indicates a compressed audio file created with Sonys Adaptive Transform Acoustic Coding. Commonly referred to as ATRAC, the compression algorithm was developed by Sony and first used for commercial purposes in 1992.The OMA format is used for files encrypted with OpenMG, a SDMI compliant DRM (Digital Rights Management) system developed by Sony. OMA files were used by Sony for selling music online through the Connect Music store which was shut down in 2008. They may contain Digital Rights Management Protection to prevent playback on unauthorized devices.Audio data contained by OMA files is compressed to approximately 1/20 the data rate of a CD track. Even though they are considerably smaller, the loss in perceptible quality remains minimal. The mime type for file extension OMA - Sony OpenMG Audio File is
  • demuxer 为: 后缀为oma,omg,aa3的oma(Sony OpenMG audio) demuxer
  • muxer 为: oma(Sony OpenMG audio).
  1. pcmdec.c/pcmenc.c: 多个pcm demuxer/muxer
  • 编译需要pcm.h、pcm.c
  • demuxer 包括:
    • PCM 64-bit floating-point big-endian
    • PCM 64-bit floating-point little-endian
    • PCM 32-bit floating-point big-endian
    • PCM 32-bit floating-point little-endian
    • PCM signed 32-bit big-endian
    • PCM signed 32-bit little-endian
    • PCM signed 24-bit big-endian
    • PCM signed 24-bit little-endian
    • PCM signed 16-bit big-endian
    • PCM signed 16-bit little-endian
    • PCM signed 8-bit
    • PCM unsigned 32-bit big-endian
    • PCM unsigned 32-bit little-endian
    • PCM unsigned 24-bit big-endian
    • PCM unsigned 24-bit little-endian
    • PCM unsigned 16-bit big-endian
    • PCM unsigned 16-bit little-endian
    • PCM unsigned 8-bit
    • PCM A-law
    • PCM mu-law
    • PCM Archimedes VIDC
    • Asterisk raw pcm
  • muxer包括:
    • PCM 64-bit floating-point big-endian
    • PCM 64-bit floating-point little-endian
    • PCM 32-bit floating-point big-endian
    • PCM 32-bit floating-point little-endian
    • PCM signed 32-bit big-endian
    • PCM signed 32-bit little-endian
    • PCM signed 24-bit big-endian
    • PCM signed 24-bit little-endian
    • PCM signed 16-bit big-endian
    • PCM signed 16-bit little-endian
    • PCM signed 8-bit
    • PCM unsigned 32-bit big-endian
    • PCM unsigned 32-bit little-endian
    • PCM unsigned 24-bit big-endian
    • PCM unsigned 24-bit little-endian
    • PCM unsigned 16-bit big-endian
    • PCM unsigned 16-bit little-endian
    • PCM unsigned 8-bit
    • PCM A-law
    • PCM mu-law
    • PCM Archimedes VIDC
  1. rawdec.c/.h/rawenc.c/.h/rawvideodec.c 多种未压缩数据的demuxer/muxer
    • demux包括: data(raw data)、后缀为mjpg,mjpeg,mpo 的mjpeg(raw MJPEG video) 、rawvideo(raw video)、bitpacked(Bitpacked)
    • mux包括:
      • 后缀为ac3的ac3(raw AC-3)
      • 后缀为adx的adx(CRI ADX)
      • 后缀为aptx的aptx(raw aptX (Audio Processing Technology for Bluetooth))
      • 后缀为aptxhd的aptx_hd(raw aptX HD (Audio Processing Technology for Bluetooth))
      • 后缀为avs,avs2的avs2(raw AVS2-P2/IEEE1857.4 video)
      • 后缀为avs3的avs3(AVS3-P2/IEEE1857.10)
      • 后缀为cavs的cavsvideo(raw Chinese AVS (Audio Video Standard) video)
      • codec2raw(raw codec2 muxer)
      • data(raw data)
      • 后缀为drc,vc2的dirac(raw Dirac)
      • 后缀为dnxhd,dnxhr的dnxhd(raw DNxHD (SMPTE VC-3))
      • 后缀为eac3的eac3(raw E-AC-3)
      • 后缀为g722的g722(raw G.722)
      • 后缀为tco,rco的g723_1(raw G.723.1)
      • g726(raw big-endian G.726 (“left-justified”))
      • g726le(raw little-endian G.726 (“right-justified”))
      • 后缀为gsm的gsm(raw GSM)
      • 后缀为h261的h261(raw H.261)
      • 后缀为h263的h263(raw H.263)
      • 后缀为h264,264的h264(raw H.264 video)
      • 后缀为hevc,h265,265的hevc(raw HEVC video)
      • 后缀为mjpg,mjpeg的mjpeg(raw MJPEG video)
      • 后缀为mlp的mlp(raw MLP video)
      • 后缀为mp2,m2a,mpa的mp2(MP2 (MPEG audio layer 2))
      • 后缀为mpg,mpeg,m1v的mpeg1video(raw MPEG-1 video)
      • 后缀为m2v的mpeg2video(raw MPEG-2 video)
      • 后缀为obu的obu(AV1 low overhead OBU)
      • 后缀为yuv,rgb的rawvideo(raw video)
      • 后缀为sbc,msbc的sbc(raw SBC)
      • 后缀为thd的truehd(raw TrueHD)
      • 后缀为vc1的vc1(raw VC-1 video)
  2. rm.c/.h/rmdec.c/rmenc.c/rmsipr.c/.c: rm(RealMedia) demuxer/muxer
  • Real Media是是由Real Networks公司发明的,特点是可以在非常低的带宽下(低达28.8kbps)提供足够好的音质让用户能在线聆听, 在互联网发展初期,这种文件格式几乎成了网络流媒体的代名词。RM/RMVB皆为封装RealMedia编码的特有格式(包括RealVideo和RealAudio),RA/RMA这两个文件类型就是Real Media里面向音频方面的格式。随着网络环境的改善,FLV/F4V的普及,网络上的视频点播服务已经基本见不到RealMedia的身影。FLV全称为FlashVideo,如名字一样属于Flash的扩展技术。FLV最大的优势在于可以很好保护网络视频的原始地址。
  • demuxer包括: rm(RealMedia)、rdt(RDT demuxer)、ivr(IVR (Internet Video Recording))
  • muxer 包括: rm(RealMedia)
  1. rso.c/.h/rsodec.c/rsoenc.c: 后缀rso为的 rso(Lego Mindstorms RSO) demuxer/muxer
  • 乐高的的一种音频编码格式
  • demuxer: 后缀rso为的 rso(Lego Mindstorms RSO) demuxer
  • muxer:后缀rso为的 rso(Lego Mindstorms RSO) muxer
  1. rtsp.c/.h/rtspcodecs.h/rtspdec.c/rtspenc.c/rdt.c/.h: rtsp input/output demuxer/muxer
  • RTSP是 TCP/IP 协议体系中的一个应用层协议,该协议定义了一对多应用程序如何有效地通过 IP 网络传送多媒体数据。RTSP在体系结构上位于RTP和RTCP之上,它使用TCP或UDP完成数据传输。HTTP与RTSP相比,HTTP传送HTML,而RTSP传送的是多媒体数据。RTSP是基于文本的协议,采用ISO10646字符集,使用UTF-8编码方案。行以CRLF中断,包括消息类型、消息头、消息体和消息长。但接收者本身可将CR和LF解释成行终止符。基于文本的协议使其以自描述方式增加可选参数更容易,接口中采用SDP作为描述语言。RTSP是应用级协议,控制实时数据的发送。RTSP提供了一个可扩展框架,使实时数据,如音频与视频的受控点播成为可能。数据源包括现场数据与存储在剪辑中数据。该协议目的在于控制多个数据发送连接,为选择发送通道,如UDP、组播UDP与TCP,提供途径,并为选择基于RTP上发送机制提供方法。
  • demuxer: rtsp(rtsp input) demuxer
  • muxer: rtsp(rtsp output) muxer
  1. sapdec.c/sapenc.c: sap input/output demxuer/muxer
  2. sccdec.c/sccenc.c: 后缀scc为的scc(Scenarist Closed Captions) demuxer/muxer
  3. sdsdec.c/sddenc.c: 后缀sds为的sds(MIDI Sample Dump Standard) demuxer/muxer
  4. segafile.c/segafileenc.c: 后缀cpk为的film_cpk(Sega FILM / CPK) demuxer/muxer
  5. smjpeg.c/.h/smjpegdec.c/smjpegenc.c: 后缀mjpg为的smjpeg(Loki SDL MJPEG) demuxer/muxer
  • This is a sample implementation of the SMJPEG Motion JPEG encoding,developed by Loki Entertainment Software.
  • There are times when you’ll want to use MPEG over MJPEG, but MJPEG is a good alternative to MPEG for software decoding of full-motion video. MJPEG is especially good in situations where you want arbitrary frame-rates or video sizes, and quality is not as important a factor.
  1. soxdec.c/soxenc.c: 后缀sox为的sox(SoX native) demuxer/muxer
  2. spdif.c/.h/spdifdec.c/spdifenc.c: 后缀spdif为的spdif(IEC 61937 (used on S/PDIF - IEC958)) demuxer/muxer
  • SPDIF(Sony/Philips Digital Interface )是SONY、PHILIPS数字音频接口的简称。就传输方式而言,SPDIF分为输出(SPDIF OUT)和输入(SPDIF IN)两种。大多数的声卡芯片都能够支持SPDIF OUT,但我们需要注意,并不是每一种产品都会提供数码接口。而支持SPDIF IN的声卡芯片则相对少一些,如:EMU10K1、YMF-744和FM801-AU、CMI8738等。SPDIF IN在声卡上的典型应用就是CD SPDIF,但也并不是每一种支持SPDIF IN的声卡都提供这个接口。
  • S/PDIF往往被用来传输压缩过的音频讯号,它由 IEC 61937标准而定制。它通常被用在支持杜比技术或DTS 环绕效果的家用DVD影院上。另一种是由CD机传输原始音频讯号至音频接收端。当然,部分支持Dolby 或DTS技术的家用电脑、笔记本也装载了S/PDIF。
  1. srtdec.c/srtenc.c: 后缀srt为的srt(SubRip subtitle) subtitle demuxer/muxer
  2. supdec.c/subenc.c: 后缀为sup的sup(raw HDMV Presentation Graphic Stream subtitles) subtitle demuxer/muxer
  3. swfdec.c/swfenc.c/swf.c/.h: 后缀为swf的swf(SWF (ShockWave Flash)) demuxer/muxer
  • SWF是一种基于矢量的Flash动画文件格式,一般用FLASH软件创作并生成SWF文件格式,也可以通过相应软件将PDF等类型转换为SWF格式。SWF格式文件广泛用于创建吸引人的应用程序,它们包含丰富的视频、声音、图形和动画。可以在Flash中创建原始内容或者从其它Adobe应用程序(如Photoshop或Illustrator)导入它们,快速设计简单的动画,以及使用Adobe AcitonScript 3.0开发高级的交互式项目。设计人员和开发人员可使用它来创建演示文稿、应用程序和其它允许用户交互的内容。Flash可以包含简单的动画、视频内容、复杂演示文稿和应用程序以及介于它们之间的任何内容。通常,使用Flash创作的各个内容单元称为应用程序,即使它们可能只是很简单的动画。您也可以通过添加图片、声音、视频和特殊效果,构建包含丰富媒体的Flash应用程序。
  • muxer 还包括: avm2(SWF (ShockWave Flash) (AVM2)) muxer
  1. tta.c/ttaeec.c: tta(TTA (True Audio)) audio demuxer/muxer
  2. vc1dec.c: vc1(raw VC-1) demuxer/muxer
  3. vc1test.c/vc1testenc.c: 后缀为rcv的vc1test(VC-1 test bitstream) demuxer/muxer
  4. vocdec.c/vocenc.c/voc.c/voc.h/voc_packet.c: 后缀为voc的voc(Creative Voice) demuxer/muxer
  5. wavdec.c/wavenc.c: 后缀为wav的wav(WAV / WAVE (Waveform Audio)) demuxer/muxer
  • WAVE文件作为多媒体中使用的声波文件格式之一,它是以RIFF格式为标准的。RIFF是英文Resource Interchange File Format的缩写,每个WAVE文件的头四个字节便是“RIFF”。WAVE文件由文件头和数据体两大部分组成。其中文件头又分为RIFF/WAV文件标识段和声音数据格式说明段两部分。常见的声音文件主要有两种,分别对应于单声道(11.025KHz采样率、8Bit的采样值)和双声道(44.1KHz采样率、16Bit的采样值)。对于单声道声音文件,采样数据为八位的短整数(short int 00H-FFH);而对于双声道立体声声音文件,每次采样数据为一个16位的整数(int),高八位和低八位分别代表左右两个声道。
  • WAVE文件数据块包含以脉冲编码调制(PCM)格式表示的样本。WAVE文件是由样本组织而成的。在单声道WAVE文件中,声道0代表左声道,声道1代表右声道。在多声道WAVE文件中,样本是交替出现的。WAVE文件的每个样本值包含在一个整数i中,i的长度为容纳指定样本长度所需的最小字节数。首先存储低有效字节,表示样本幅度的位放在i的高有效位上,剩下的位置为0,这样8位和16位的PCM波形样本的数据格式。
  • demuxer/muxer还包括: 后缀为w64的w64(Sony Wave64) demuxer/muxer
  1. webvttdec.c/webvttenc.c: 后缀为vtt的webvtt(WebVTT subtitle) subtitles demuxer/muxer
  2. westwood_aud.c/westwood_audenc.c: 后缀为aud的wsaud(Westwood Studios audio) demuxer/muxer
  3. wtv.h/wtv_common.c/wtvdec.c/wtvenc.c: 后缀为wtv的wtv(Windows Television (WTV)) demuxer/muxer
  4. wv.c/wv.h/wvdec.c/wvend.c: 后缀为wv的wv(raw WavPack) demuxer/muxer
  5. yuvmpeg4dec.c/yuvmpeg4enc.c/yuvmpeg4.h: 后缀为y4m的yuv4mpegpipe(YUV4MPEG pipe) demuxer/muxer

protocol

  1. async.c: 前缀为async的input protocol
  • async protocol 采用异步方式读取其他protocol指定的url。采用缓冲区大小8M的AVFifoBuffer实现.
  1. bluray.c: 前缀为bluray的input protocol
  • 支持如下选项:
    • playlist:AV_OPT_TYPE_INT
    • angle:AV_OPT_TYPE_INT
    • chapter:AV_OPT_TYPE_INT
  1. cache.c: 前缀为cache的input protocol
  • cache protocol 用其他protocol打开url,将数据存储到临时文件(文件名:/tmp/ffcacheXXXXXX 或 ./ffcache)中。
  1. concat.c: 前缀为concat/concatf 的input protocol
  • concat后的url为用“|”连接的多个url,此protocol将其分割后依次打开。
  • concatf后的url为多行数据,每行为单独的url。
  1. crypto.c: 前缀为crypto的input/output protocol
  • crypto 采用aes算法进行加密、解密,支持如下选项:
    • key:AES encryption/decryption key, AV_OPT_TYPE_BINARY
    • iv: AES encryption/decryption initialization vector, AV_OPT_TYPE_BINARY
    • decryption_key: AES decryption key, AV_OPT_TYPE_BINARY
    • decryption_iv:AES decryption initialization vector, AV_OPT_TYPE_BINARY
    • encryption_key:AES encryption key, AV_OPT_TYPE_BINARY
    • encryption_iv:AES encryption initialization vector, AV_OPT_TYPE_BINARY
  1. data_uri.c: 前缀为data的input protocol
  • 此protocol从uri中获得base64编码的数据
  1. file.c: 前缀为file的protocol、前缀为pipe的input/output protocol
  • file 的参数为文件名
  • pipe 的参数为文件句柄,即fd
  1. ftp.c: 前缀为ftp的input/output protocol
  2. gopher.c: 前缀为gopher/gophers的input/output protocol
  • Gopher是Internet上一个非常有名的信息查找系统,它将Internet上的文件组织成某种索引,很方便地将用户从Internet的一处带到另一处。在WWW出现之前,Gopher是Internet上最主要的信息检索工具,Gopher站点也是最主要的站点,使用tcp70端口。但在WWW出现后,Gopher失去了昔日的辉煌。现在它基本过时,人们很少再使用它.
  • gopher底层协议为tcp,gophers的底层协议为tls
  1. hlsproto.c: 前缀为hls的input protocol
  2. http.c: 前缀为http、https、httpproxy的input/output protocol
  • 编译时需要httpauth.c、httpauth.h
  1. icecast.c: icecast input/output protocol
  • Icecast is a streaming media (audio/video) server which currently supports Ogg (Vorbis and Theora), Opus, WebM and MP3 streams.
  • It can be used to create an Internet radio station or a privately running jukebox and many things in between. It is very versatile in that new formats can be added relatively easily and supports open standards for communication and interaction.
  • Icecast is distributed under the GNU GPL, version 2.
  1. libamqp.c: amqp input/output protocol
  • 需要外部库支持:librabbitmq >= 0.7.1
  • MQ全称为Message Queue即消息队列,就是一个消息的容器, MQ是消费-生产者模型的一个典型的代表,一端往消息队列中不断写入消息,而另一端则可以读取或者订阅队列中的消息。MQ框架非常之多,比较流行的有RabbitMq、ActiveMq、ZeroMq、kafka。在MQ众多框架中RabbitMQ仍然是首选,RabbitMQ用erlang语言开发。RabbitMQ是AMQP(高级消息队列协议)的标准实现的可复用的企业消息系统。
  • AMQP协议参考 https://blog.csdn.net/yinwenjie/article/details/50820369
  1. librist.c: rist input/output protocol
  • 为解决在公共网络上的丢包问题,同时解决各厂商设备之间缺乏互操作性的问题,Video Services Forum (VSF) 于2017年初成立了可靠的互联网流传输协议(Reliable Internet Stream Transport,RIST)小组,为协议创建通用规范.
  • RIST的首选流传输协议是RTP配合RTCP。RTP发送端口为偶数P,则RTCP端口为P+1。推荐发送端RTCP使用Sender Report (SR) + CNAME,接收端使用Receiver Report (RR) + CNAME。RIST系统应使用基于NACK的选择性重传协议来恢复数据包丢失。该协议的一般操作如下:
    • 除非发现数据包丢失,否则接收方不与发送方通信
    • 一旦检测到丢包,接收方将请求重传丢失的数据包
    • 接收端将实现一个缓冲区,以适应一个或多个网络往返延迟和数据包重新排序
    • 如果解码器缓冲区足够大以允许将恢复的分组以正确的顺序放置在解码器流中,则可以多次请求数据包。
  • 需要外部协议库: librist >= 0.2
  1. librtmp.c: rtmp/rtmpe/rtmpt/rtmps/rtmpte input/output protocol
  • 需要外部库librtmp
  • RTMP是Real Time Messaging Protocol(实时消息传输协议)的首字母缩写。该协议基于TCP,是一个协议族,包括RTMP基本协议及RTMPT/RTMPS/RTMPE等多种变种。RTMP是一种设计用来进行实时数据通信的网络协议,主要用来在Flash/AIR平台和支持RTMP协议的流媒体/交互服务器之间进行音视频和数据通信。支持该协议的软件包括Adobe Media Server/Ultrant Media Server/red5等。RTMP与HTTP一样,都属于TCP/IP四层模型的应用层。
  1. smb.c: smb input/output protocol
  • 需要外部库libsmbclient
  • SMB(全称是Server Message Block)是一个协议名,它能被用于Web连接和客户端与服务器之间的信息沟通。SMB最初是IBM的贝瑞·费根鲍姆(Barry Feigenbaum)研制的,其目的是将DOS操作系统中的本地文件接口“中断13”改造为网络文件系统。
  1. libsrt.c: srt input/output protocol
  • SRT(Secure Reliable Transport) 是比较新的开源安全可靠网络传输协议。正如其名,特点就是安全、可靠。SRT 支持 AES 加密,保障端到端的信息传输安全,SRT 通过前向纠正技术(FEC)保证传输稳定,使用自动重传(ARQ)机制保证传输完整性。SRT 基于 UDT 传输协议,在 UDT 核心思想和机制的基础上做了多项改进,对于音视频流数据优化最为明显,可以用于低延迟音视频的直播业务中。
  • 需要外部库libsrt “srt >= 1.3.0”
  1. libssh.c: sftp input/output protocol
  • 需要外部库libssh
  • SSH 为 Secure Shell 的缩写,由 IETF 的网络小组(Network Working Group)所制定;SSH 为建立在应用层基础上的安全协议。SSH 是较可靠,专为远程登录会话和其他网络服务提供安全性的协议。利用 SSH 协议可以有效防止远程管理过程中的信息泄露问题。SSH最初是UNIX系统上的一个程序,后来又迅速扩展到其他操作平台。SSH在正确使用时可弥补网络中的漏洞。SSH客户端适用于多种平台。几乎所有UNIX平台—包括HP-UX、Linux、AIX、Solaris、Digital UNIX、Irix,以及其他平台,都可运行SSH。
  1. libzmq.c: zmq input/output protocol
  • 需要外部库libzmq “libzmq >= 4.2.1”
  • ZeroMQ(简称ZMQ)是一个基于消息队列的多线程网络库,其对套接字类型、连接处理、帧、甚至路由的底层细节进行抽象,提供跨越多种传输协议的套接字。ZMQ是网络通信中新的一层,介于应用层和传输层之间(按照TCP/IP划分),其是一个可伸缩层,可并行运行,分散在分布式系统间。ZMQ不是单独的服务,而是一个嵌入式库,它封装了网络通信、消息队列、线程调度等功能,向上层提供简洁的API,应用程序通过加载库文件,调用API函数来实现高性能网络通信。
  1. md5proto.c: md5 output protocol
  2. mmsh.c/mmst.c: mmsh/mmst input protocol
  • 编译需要mms.c、mms.h。
  • MMS是微软的私有流媒体协议。它的最初目的是通过网络传输多媒体广播、视频、音轨、现场直播和一系列的实时或实况材料。使用这个协议的观众可以通过电脑观看电视图像或音轨。微软为有网络连接的家用电脑使用者开发了免费软件。MMS建立在UDP或TCP传输/网络层上,是属于应用层的。使用TCP的MMS上URL是MMS://或者MMST://,如果是UDP的MMS使用MMSU://。在低带宽的情况下推荐使用UDP连接。HTTP带有大量的头信息,UDP一般不能通过防火墙,在有防火墙的情况下使用HTTP。TCP的无差错特性是非常诱人的,它的吞吐量比UDP小,但是在下载MMS的时候TCP是不二的选择。
  1. prompeg.c: prompeg protocol
  • (Professional MPEG Forum) An organization founded in London in 1998 for the advancement of the MPEG-2 standard. The Forum helped develop the MXF file format for exchanging video production data between servers. The offices of the secretariat were located at BBC Radio Northampton.
  1. rtmpproto.c: rtmp/rtmpe/rtmps/rtmpt/rtmpte/rtmpts protocol
  • 编译需要rtmp.h、rtmpcrypt.c/.h、rtmpdh.c/.h、rtmpdigest.c、rtmphttp.c、rtmppkt.c/.h
  • RTMP是Real Time Messaging Protocol(实时消息传输协议)的首字母缩写。该协议基于TCP,是一个协议族,包括RTMP基本协议及RTMPT/RTMPS/RTMPE等多种变种。RTMP是一种设计用来进行实时数据通信的网络协议,主要用来在Flash/AIR平台和支持RTMP协议的流媒体/交互服务器之间进行音视频和数据通信。支持该协议的软件包括Adobe Media Server/Ultrant Media Server/red5等。RTMP与HTTP一样,都属于TCP/IP四层模型的应用层。
  • RTMP有多种变种:
    • RTMP工作在TCP之上,默认使用端口1935;
    • RTMPE在RTMP的基础上增加了加密功能;
    • RTMPT封装在HTTP请求之上,可穿透防火墙;
    • RTMPS类似RTMPT,增加了TLS/SSL的安全功能;
  1. rtpproto.c: rtp protocol
  • 编译需要rtp.c/.h、rtpdec.c/.h/rtpdec_、rtpenc.c/.h/rtpenc_、sdp.c. (*代表ac3、amr、asf、av、g726、h261、h263、h264、hevc、iib、jpeg、labm、mpeg4、mpeg12、mpegts、qcelp、qdm2、rtf4175、vc2、vp8、vp9等。
  • 实时传输协议(Real-time Transport Protocol或简写RTP)是一个网络传输协议,它是由IETF的多媒体传输工作小组1996年在RFC 1889中公布的。RTP协议详细说明了在互联网上传递音频和视频的标准数据包格式。它一开始被设计为一个多播协议,但后来被用在很多单播应用中。RTP协议常用于流媒体系统(配合RTSP协议),视频会议和一键通(Push to Talk)系统(配合H.323或SIP),使它成为IP电话产业的技术基础。RTP协议和RTP控制协议RTCP一起使用,而且它是创建在UDP协议上的。
  • 实时传输协议(RTP)为数据提供了具有实时特征的端对端传送服务,如在组播或单播网络服务下的交互式视频音频或模拟数据。应用程序通常在 UDP 上运行 RTP 以便使用其多路结点和校验服务;这两种协议都提供了传输层协议的功能。但是 RTP 可以与其它适合的底层网络或传输协议一起使用。如果底层网络提供组播方式,那么 RTP 可以使用该组播表传输数据到多个目的地。RTP 本身并没有提供按时发送机制或其它服务质量(QoS)保证,它依赖于底层服务去实现这一过程。 RTP 并不保证传送或防止无序传送,也不确定底层网络的可靠性。 RTP 实行有序传送, RTP 中的序列号允许接收方重组发送方的包序列,同时序列号也能用于决定适当的包位置,例如:在视频解码中,就不需要顺序解码。
  • RTP标准定义了两个子协议,RTP和RTCP。
    • 数据传输协议RTP,用于实时传输数据。该协议提供的信息包括:时间戳(用于同步)、序列号(用于丢包和重排序检测)、以及负载格式(用于说明数据的编码格式)。
    • 控制协议RTCP,用于QoS反馈和同步媒体流。相对于RTP来说,RTCP所占的带宽非常小,通常只有5%。
  1. sctp.c: sctp protocol
  • 流控制传输协议(SCTP,Stream Control Transmission Protocol)是一种在网络连接两端之间同时传输多个数据流的协议。SCTP提供的服务与UDP和TCP类似。SCTP在RFC2960中详细说明,并有RFC3309加以更新。RFC 3286给出了SCTP的简要介绍。SCTP在客户和服务器之间提供关联(association),并像TCP那样给应用提供可靠性、排序、流量控制以及全双工的数据传输。SCTP中使用“关联”一词替代“连接”是为了避免这样的内涵:一个连接只涉及两个IP地址间的通信。一个关联指代两个系统之间的一次通信,它可能因为SCTP支持多宿而涉及不止两个地址。与TCP不同的是,SCTP是面向消息的(message-oriented)。它提供各个记录的按序递送服务。与UDP一样,由发送端写入的每一条记录的长度随数据一道传递给接收端应用。
  1. srtp.c/.h/srtproto.c: srtp protocol
  • SRTP,即安全实时传输协议(Secure Real-time Transport Protocol),其是在实时传输协议(Real-time Transport Protocol)基础上所定义的一个协议,旨在为单播和多播应用程序中的实时传输协议的数据提供加密、消息认证、完整性保证和重放保护。
  • 在 WebRTC 中,为了防止"攻击者通过抓包工具将音视频数据抓取到后,就可以直接将音视频流播放出来"的情况发生,没有直接使用 RTP/RTCP 协议,而是使用了 SRTP/SRTCP 协议 ,即安全的 RTP/RTCP 协议。WebRTC 使用了非常有名的 libsrtp 库将原来的 RTP/RTCP 协议数据转换成 SRTP/SRTCP 协议数据。
  1. subfile.c: subfile input protocol,可以按指定的开始位置、结束位置读取文件的部分内容
  • start: start offset, AV_OPT_TYPE_INT64
  • end: end offset, AV_OPT_TYPE_INT64
  1. tcp.c: tcp protocol
  • listen: “Listen for incoming connections”,AV_OPT_TYPE_INT
  • timeout: “set timeout (in microseconds) of socket I/O operations”,AV_OPT_TYPE_INT
  • listen_timeout: “Connection awaiting timeout (in milliseconds)”,AV_OPT_TYPE_INT
  • send_buffer_size: “Socket send buffer size (in bytes)”, AV_OPT_TYPE_INT
  • recv_buffer_size: “Socket receive buffer size (in bytes)”, AV_OPT_TYPE_INT
  • tcp_nodelay: “Use TCP_NODELAY to disable nagle’s algorithm”, AV_OPT_TYPE_BOOL
  • tcp_mss: “Maximum segment size for outgoing TCP packets”, AV_OPT_TYPE_INT
  1. teeproto.c/tee_common.c/.h: tee protocol
  • tee 协议的参数是用“|”分割的其他协议的url,tee 协议的作用是将输出内容分别输出到参数指定的其他协议uri中。
  1. tls.c/.h/tls_gnutls/tls_libtls.c/tls_mbedtls.c/tls_openssl.c/tls_schannel.c/tls_SecureTransport.c: tls protocol
  • tls的实现方式支持guntls、libtls、mbedtls、openssl、securetransport、schannel,编译时可用宏进行控制:TLS-OBJS- ( C O N F I G G N U T L S ) 、 T L S − O B J S − (CONFIG_GNUTLS)、TLS-OBJS- (CONFIGGNUTLS)TLSOBJS(CONFIG_LIBTLS)、TLS-OBJS- ( C O N F I G M B E D T L S ) 、 T L S − O B J S − (CONFIG_MBEDTLS)、TLS-OBJS- (CONFIGMBEDTLS)TLSOBJS(CONFIG_OPENSSL)、TLS-OBJS- ( C O N F I G S E C U R E T R A N S P O R T ) 、 T L S − O B J S − (CONFIG_SECURETRANSPORT)、TLS-OBJS- (CONFIGSECURETRANSPORT)TLSOBJS(CONFIG_SCHANNEL)
  1. udp.c: udp/udplite protocol
  • UDP-Lite协议相对来说是较新的,和UDP协议有些类似,但是它更加适应于网络的差错率比较大,但是应用对轻微差错不敏感的情况,例如实时视频的播放等。
  • 传统的UDP协议是对其载荷(Payload)进行完整的校验的,如果其中的一些位(哪怕只有一位)发生了变化,那么整个数据包都有可能被丢弃,在某些情况下,丢掉这个包的代价是非常大的,尤其当包比较大的时候。在UDP-Lite协议中,一个数据包到底需不需要对其载荷进行校验,或者是校验多少位都是由用户控制的,并且UDP-Lite协议就是用UDP协议的Length字段来表示其Checksum Coverage的,所以当UDP-Lite协议的Checksum Coverage字段等于整个UDP数据包(包括UDP头和载荷)的长度时,UDP-Lite产生的包也将和传统的UDP包一模一样。
  • udp/udplite 协议的选项:
    • buffer_size: System data size (in bytes), AV_OPT_TYPE_INT,
    • bitrate: Bits to send per second, AV_OPT_TYPE_INT64,
    • burst_bits: Max length of bursts in bits (when using bitrate), AV_OPT_TYPE_INT64,
    • localport: Local port, AV_OPT_TYPE_INT,
    • local_port: Local port, AV_OPT_TYPE_INT,
    • localaddr: Local address, AV_OPT_TYPE_STRING,
    • udplite_coverage: choose UDPLite head size which should be validated by checksum, AV_OPT_TYPE_INT
    • pkt_size: Maximum UDP packet size, AV_OPT_TYPE_INT,
    • reuse: explicitly allow reusing UDP sockets, AV_OPT_TYPE_BOOL,
    • reuse_socket: explicitly allow reusing UDP sockets, AV_OPT_TYPE_BOOL,
    • broadcast: explicitly allow or disallow broadcast destination, AV_OPT_TYPE_BOOL,
    • ttl: Time to live (multicast only), AV_OPT_TYPE_INT,
    • connect: set if connect() should be called on socket, AV_OPT_TYPE_BOOL,
    • fifo_size: set the UDP receiving circular buffer size, expressed as a number of packets with size of 188 bytes, AV_OPT_TYPE_INT
    • overrun_nonfatal: survive in case of UDP receiving circular buffer overrun, AV_OPT_TYPE_BOOL
    • timeout: set raise error timeout, in microseconds (only in read mode), AV_OPT_TYPE_INT
    • sources: Source list, AV_OPT_TYPE_STRING,
    • block: Block list, AV_OPT_TYPE_STRING,
  1. unix.c: unix protocol
  • network.c 中的ff_socket、 ff_listen_bind等函数,用于此协议。

最后

以上就是大气网络为你收集整理的FFmpeg学习(四)-- libavformat 代码组成libavformat 代码组成的全部内容,希望文章能够帮你解决FFmpeg学习(四)-- libavformat 代码组成libavformat 代码组成所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(60)

评论列表共有 0 条评论

立即
投稿
返回
顶部