sdp codecll 和 优先级级可以指定吗

freeswitch(18)
1. freeswtich对高清(HD)语音编码的支持
freeswitch支持 大部分高清语音编码,包括Speex,G.722,G.722.1(Siren) 及SILK,与之对比,asterisk 1.8版本之前只支持采样为8000的常用语音编码,1.10后asterisk开始从新架构其media codec模块,以全面支持高清等宽频语音编码。
2.有些语音编码以模块方式加载(G729等),有的则属于freeswitch core部分(G711),系统默认不加载所有语音编码,对于没有加载的编码,可以通过配置
modules.conf.xml配置,在fs_cli上 执行 &show codec& 会显示当前系统已经加载的编码:
type,name,ikey
codec,ADPCM (IMA),mod_spandsp
codec,AMR,mod_amr
codec,G.711 alaw,CORE_PCM_MODULE
codec,G.711 ulaw,CORE_PCM_MODULE
codec,G.722,mod_spandsp
codec,G.723.1 6.3k,mod_g723_1
codec,G.726 16k,mod_spandsp
codec,G.726 16k (AAL2),mod_spandsp
codec,G.726 24k,mod_spandsp
codec,G.726 24k (AAL2),mod_spandsp
codec,G.726 32k,mod_spandsp
codec,G.726 32k (AAL2),mod_spandsp
codec,G.726 40k,mod_spandsp
codec,G.726 40k (AAL2),mod_spandsp
codec,G.729,mod_g729
codec,GSM,mod_spandsp
codec,H.261 Video (passthru),mod_h26x
codec,H.263 Video (passthru),mod_h26x
codec,H.263+ Video (passthru),mod_h26x
codec,H.263++ Video (passthru),mod_h26x
codec,H.264 Video (passthru),mod_h26x
codec,LPC-10,mod_spandsp
codec,PROXY PASS-THROUGH,CORE_PCM_MODULE
codec,PROXY VIDEO PASS-THROUGH,CORE_PCM_MODULE
codec,Polycom(R) G722.1/G722.1C,mod_siren
codec,RAW Signed Linear (16 bit),CORE_PCM_MODULE
codec,Speex,mod_speex
codec,iLBC,mod_ilbc
以模块方式加载的编码在目录 src\mod\codecs下面,所以如果我们想添加自己的编码,在此目录下参考其他实现即可,freeswitch对新编码的添加接口也及其简单,主要为注册几个四个回调,init,encode,decode,destroy,然后通过 switch_core_codec_add_implementation 把这几个回调的实现注册进去。
3. 设置编码的优先级
vars.xml可以设置系统默认使用的编码,为全局设置,下面两个变量,一个表示呼入,一个表示呼出。
&X-PRE-PROCESS cmd=&set& data=&global_codec_prefs=G722,PCMA,PCMU,GSM&/&
&X-PRE-PROCESS cmd=&set& data=&outbound_codec_prefs=G722,PCMA,PCMU,GSM&/&
同时,不同的协议类型(SIP,和H323等)可以设置自己的编码优先级,比如采用SIP协议时,可以在
sofia.conf.xml
&settings&
&&param name=&inbound-codec-prefs& value=&$${global_codec_prefs}&/&
&&param name=&outbound-codec-prefs& value=&$${global_codec_prefs}&/&
&/settings&
这里,SIP协议类型继承了vars.xml的全局设置(呼入,呼出)。
4. 对编解码转换的支持
(1)作为B2BUA,freeswitch支持大部分音频编码的转换,但无视频编码转换功能。
(2)对于语音编码 G721 / G728 / G719 / AMR,只支持转发,不支持转换。
(3)freeswitch支持的视频编码 (只转发)
H261 - H.261 Video
H263 - H.263 Video
H263-1998 - H.263-1998 Video
H263-2000 - H.263-2000 Video
H264 - H.264 Video&
Provided by mod_h26X.
Theora passthrough.&
Provided by mod_theora.
MP4 Video passthrough.&
Provided by mod_mp4v.
(4)媒体代理
freeswitch对媒体的处理有三种方式:
a.默认方式:媒体通过freeswitch,
RTP被freeswtich转发,
freeswitch控制编码的协商并在协商不一致时提供语音编码转换能力,
支持录音,二次拨号等。
b.代理模式: 媒体通过freeswitch转发,但是不处理媒体
&& RTP通过freewtich转发(只改动sdp c= ip)
&& freeswtich不控制 sdp参数,只是转发。
&& 通话的终端必须有一致的语音或者视频编码,因为freeswitch此时不支持转码(适合视频编码)
&& 不支持录音, 二次拨号等功能
c.不转发也不处理媒体
此模式下freeswitch更像是一个信令proxy,媒体不会通过freeswitch,sdp消息体也不做修改,没有录音,二次拨号等功能。
三种方式在不同应用场景下各有优点,对于a,也是默认方式,更适合呼叫中心等富功能应用,但性能相比其他两个也是最差的,对于b,更适合处理nat问题,
可以考虑用这种模式做一个session border controlor,也适合于外部MCU配合做为视频会议,性能也明显好于a,对于 c,更像是一个信令代理,性能最高,但提供的功能有限。
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:25286次
排名:千里之外
原创:14篇
转载:88篇
(1)(6)(1)(1)(3)(2)(2)(4)(4)(1)(2)(1)(15)(7)(4)(3)(4)(23)(12)(7)14623人阅读
流输出功能,可以将vlc读取到的流,输出到文件或者通过网络发送,客户端可以使用http、rtp、rtsp等协议访问,还可以进行转码等操作。
参考http://wiki.videolan.org/Documentation:Streaming_HowTo
流输出语法
% vlc input_stream --sout &#module1{option1=parameter1{parameter-option1},option2=parameter2}:module2{option1=...,option2=...}:...&也可以使用下面的语法&
% vlc input_stream --sout-module1-option1=... --sout-module1-option2=... --sout-module2-option1=... --sout-module2-option2=... ...
1.standard模块(std)
vlc test.mp4 -vvv --loop --sout &#standard{access=http,mux=ts,dst=192.168.9.80:10086/stream}&
将文件使用http协议发送到网络,使用ts封装,客户端使用http://192.168.9.80:10086/stream访问
关于standard的必选项
access,输出的协议。file(保存到文件)、udp、http、https、mmsh(使用微软的mms协议,仅支持基于http的mms协议)
mux,输出复用器。支持ts、ps、mpeg1、ogg、asf、asfh、avi、mpjpeg
dst,输出目的地址,如果access=file,就是保存的文件路径及文件名
对于某些视频,使用上面示例中的命令参数时,vlc接收端只能听见音频,消息中显示的错误日志如下 :
ts error: MPEG-4 descriptor not found
packetizer_mpeg4audio info: AAC channels: 2 samplerate: 44100
avcodec info: obtained IDirect3DDeviceManager9
avcodec info: DXVA2CreateVideoService Success!
avcodec error: DxFindVideoServiceConversion failed但是使用mux=asf后,却能够正常播放
vlc test.mp4 -vvv --loop --sout &#standard{access=http,mux=asf,dst=192.168.9.80:10086/stream}&
这个问题与mp4文件格式有关,待解决。
使用rtp协议发送数据,也支持rtsp
1)生成sdp文件
vlc.exe test.mp4 -vvv
--loop --sout &#rtp{dst=192.168.9.80,sdp=file:///E:/stream.sdp}&启动rtp传输,该命令生成一个sdp的描述文件stream.sdp,将其copy到客户机上,就可以使用vlc进行播放了,dst指定客户端的ip。
2)使用rtsp进行传输
vlc.exe test.mp4 -vvv
--loop --sout &#rtp{sdp=rtsp://192.168.9.80:10086/stream}&客户端面直接使用rtsp://192.168.9.80:10086/stream即可访问
es模块可以从stream中分离出不同的elementary streams,保存为不同的文件或者发送到不同的目的地址。
vlc.exe test.mp4 -vvv --no-loop
--sout &#es{access=file, dst-video=e:/video_%d.%c, dst-audio=e:/audio_%d.%c}&提取文件中的音视频,并保存到文件中。--no-loop表示不用循环,%d代表流的track号,%c表示 编码的FOURCC。
4.transcode模块
transcode模块用于转码, 也可以完成一些附加的功能re-scaling, deinterlacing, resampling,crop等,除了音视频外还可以处理字幕,叠加图片到视频
支持的编码格式参考:http://www.videolan.org/streaming-features.html
按指定参数进行音视频转码,并保存为avi文件,后面级联standard模块完成文件保存功能
vlc.exe test.mp4 -vvv --sout &#transcode{vcodec=h264, vb=300, venc=x264, fps=15, width=352, height=288, acodec=mp3, aenc=ffmpeg, samplerate=44100, threads=2}:standard{access=file,mux=avi,dst=e:/test.avi}venc,指定视频编码器,支持ffmpeg、x264、theora,可以进一步指定编码的详细参数
aenc,指定音频编码器,支持ffmpeg、vorbis、speex
threads,指定编码时线程数据,多核时可以提高效率
5.duplicate模块
duplicate模块可以复制stream,以用于不同的chains。
vlc.exe test.mp4 -vvv --sout &#duplicate{dst=standard{access=file,mux=avi,dst=e:/test.avi}, dst=rtp{dst=192.168.9.80,name=stream,sdp=rtsp://192.168.9.80:10086/stream}, dst=display}&通过dumplicate模块得到3个输出,保存为*.avi、发送到rtsp server、本地显示
dumplicate还有一个select选项,用于选择处理的stream
其它说明:
1.默认情况下,vlc只会处理第一个音频和视频流,可以使用--sout-all选项,处理所有的流
2.--no-sout-audio,--no-sout-video选项可以禁止输出音频或者视频
3.更多示例见http://wiki.videolan.org/Documentation:Streaming_HowTo/Command_Line_Examples
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:466567次
积分:5712
积分:5712
排名:第3062名
原创:95篇
转载:20篇
评论:148条
(1)(1)(1)(7)(1)(1)(2)(1)(5)(1)(5)(13)(13)(14)(5)(11)(14)(1)(5)(12)(1)(1)后使用快捷导航没有帐号?
查看: 6726|回复: 4
经验9 分贝0 家园币0 在线时间:1 小时最后登录:帖子:精华:0注册时间:UID:258727
军衔等级:
新兵, 积分 9, 距离下一级还需 21 积分
注册时间:
SDP中的Ptime是何意?
经验72 分贝0 家园币375 在线时间:12 小时最后登录:帖子:精华:0注册时间:UID:75394
军衔等级:
上等兵, 积分 54, 距离下一级还需 46 积分
注册时间:
codec的打包时长,同一种codec有不同的Ptime,通话时候双方的codec ptime值一定要相同,譬如G711,有20ms ptime和 5ms ptime 等等
经验427 分贝0 家园币1432 在线时间:454 小时最后登录:帖子:精华:0注册时间:UID:59640
军衔等级:
一级通信军士, 积分 427, 距离下一级还需 73 积分
注册时间:
专业啊..................
经验373 分贝0 家园币590 在线时间:39 小时最后登录:帖子:精华:0注册时间:UID:66977
军衔等级:
上士, 积分 373, 距离下一级还需 27 积分
注册时间:
原帖由 shamchen 于
15:48 发表
codec的打包时长,同一种codec有不同的Ptime,通话时候双方的codec ptime值一定要相同,譬如G711,有20ms ptime和 5ms ptime 等等
经验241 分贝0 家园币322 在线时间:22 小时最后登录:帖子:精华:0注册时间:UID:375079
军衔等级:
中士, 积分 241, 距离下一级还需 59 积分
注册时间:
牛B妈 发表于
请教sdp里面那个ptime和maxptime的分别吗?
Copyright &
All Rights Reserved1617人阅读
FFMPEG(21)
1.muxer/demuxer和ecoder/decoder在代码实现上有很多相同的地方,但是最大的差别是:
muxer/demuxer使用的结构是AVInputFormat/AVOutputFormat
& encoder/decoder用的是AVCodec结构
muxer/demuxer和ecoder/decoder相同的地方有:
&1&都是在av_register_all()中初始化的。
&2&都是以链表的形式保存在全局变量中
& & muxer/demuxer分别保存在全局变量AVOutputForamt *first_oformat和
AVInputFormat *first_iforst中
& & encoder/decoder都是保存在全局变量AVCodec *first_avcodec中。
以flv格式为例:
av_regeister_all()进行如下的操纵:将支持flv格式的flv_muxer和flv_demuxer变量分别注册到全局变量first_oformat和first_iformat链表的最后位置。
下面是具体的代码:
REGISTER_MUXDEMUX(FLV, flv);//
#define REGISTER_MUXDEMUX(FLV, flv) REGISTER_MUXER(FLV, flv); REGISTER_DEMUXER(FLB, x)
#define REGISTER_MUXER(X, x)//REGISTER_MUXER(FLV, flv)
extern AVOutputFormat ff_flv_
//建立一个对象,将该对象保存到链表的尾部
if (CONFIG_FLV_MUXER)
av_register_output_format(&ff_flv_muxer);
libavformat文件中的Format.c中有两个全局变量:
/** head of registered input format linked list */
static AVInputFormat *first_iformat = NULL;//链表的头
/** head of registered output format linked list */
static AVOutputFormat *first_oformat = NULL;//head
static AVInputFormat **last_iformat = &first_//链表的尾
static AVOutputFormat **last_oformat = &first_//链表的尾
void av_register_output_format(AVOutputFormat *format)
AVOutputFormat **p = last_
format-&next = NULL;
/*遍历链表,初次调用的时候会令first_oformat指向format*/
while(*p || avpriv_atomic_ptr_cas((void * volatile *)p, NULL, format))
p = &(*p)-&
last_oformat = &format-&
//(-&为1级优先级,&为2级)
void *avpriv_atomic_ptr_cas(void * volatile *ptr, void *oldval, void *newval)
if (*ptr == oldval) {
同理:解复用也是一样的道理!
av_register_all()中的avcodec_register_all()的分析:
通过该函数初始化encoder/decoder。
并不是每种编码方式都支持encode和decode,所以有以下三种注册方式:
#define REGISTER_ENCODER(FLV, flv)
extern AVCodec ff_flv_
if (CONFIG_FLV_ENCODER)
avcodec_register(&ff_##x##_encoder);
#define REGISTER_DECODER(FLV, flv)
extern AVCodec ff_flv_
if (CONFIG_FLV_DECODER)
avcodec_register(&ff_flv_decoder);
#define REGISTER_ENCDEC(FLV, flv) REGISTER_ENCODER(FLV, flv); REGISTER_DECODER(FLV, flv)
以编码为例:
同样的在libavcodec中的Utils.c中有两个全局变量:
static AVCodec *first_avcodec = NULL;//链表头
static AVCodec **last_avcodec = &first_ //链表尾
av_cold void avcodec_register(AVCodec *codec)
AVCodec **p;
avcodec_init();//初始化
codec-&next = NULL;
//遍历链表,和上面的复用的注册时一样的原理
while(*p || avpriv_atomic_ptr_cas((void * volatile *)p, NULL, codec))
p = &(*p)-&
last_avcodec = &codec-&
if (codec-&init_static_data)
codec-&init_static_data(codec);
static av_cold void avcodec_init(void)
static int initialized = 0;
if (initialized != 0)
initialized = 1;
if (CONFIG_DSPUTIL)
ff_dsputil_static_init();
到此av_register_all()分析完了:
下面贴出源码:
*@author tongli
void av_register_all(void)
if (initialized)
initialized = 1;
avcodec_register_all();
/* (de)muxers */
REGISTER_MUXER
REGISTER_DEMUXER (AAC,
REGISTER_MUXDEMUX(AC3,
REGISTER_DEMUXER (ACT,
REGISTER_DEMUXER (ADF,
REGISTER_DEMUXER (ADP,
REGISTER_MUXER
REGISTER_MUXDEMUX(ADX,
REGISTER_DEMUXER (AEA,
REGISTER_DEMUXER (AFC,
REGISTER_MUXDEMUX(AIFF,
REGISTER_MUXDEMUX(AMR,
REGISTER_DEMUXER (ANM,
REGISTER_DEMUXER (APC,
REGISTER_DEMUXER (APE,
REGISTER_DEMUXER (AQTITLE,
REGISTER_MUXDEMUX(ASF,
REGISTER_MUXDEMUX(ASS,
REGISTER_MUXDEMUX(AST,
REGISTER_MUXER
(ASF_STREAM,
asf_stream);
REGISTER_MUXDEMUX(AU,
REGISTER_MUXDEMUX(AVI,
REGISTER_DEMUXER (AVISYNTH,
avisynth);
REGISTER_MUXER
REGISTER_DEMUXER (AVR,
REGISTER_DEMUXER (AVS,
REGISTER_DEMUXER (BETHSOFTVID,
bethsoftvid);
REGISTER_DEMUXER (BFI,
REGISTER_DEMUXER (BINTEXT,
REGISTER_DEMUXER (BINK,
REGISTER_MUXDEMUX(BIT,
REGISTER_DEMUXER (BMV,
REGISTER_DEMUXER (BRSTM,
REGISTER_DEMUXER (BOA,
REGISTER_DEMUXER (C93,
REGISTER_MUXDEMUX(CAF,
REGISTER_MUXDEMUX(CAVSVIDEO,
cavsvideo);
REGISTER_DEMUXER (CDG,
REGISTER_DEMUXER (CDXL,
REGISTER_DEMUXER (CINE,
REGISTER_DEMUXER (CONCAT,
REGISTER_MUXER
REGISTER_MUXDEMUX(DATA,
REGISTER_MUXDEMUX(DAUD,
REGISTER_DEMUXER (DFA,
REGISTER_MUXDEMUX(DIRAC,
REGISTER_MUXDEMUX(DNXHD,
REGISTER_DEMUXER (DSF,
REGISTER_DEMUXER (DSICIN,
REGISTER_MUXDEMUX(DTS,
REGISTER_DEMUXER (DTSHD,
REGISTER_MUXDEMUX(DV,
REGISTER_DEMUXER (DXA,
REGISTER_DEMUXER (EA,
REGISTER_DEMUXER (EA_CDATA,
ea_cdata);
REGISTER_MUXDEMUX(EAC3,
REGISTER_DEMUXER (EPAF,
REGISTER_MUXER
REGISTER_MUXDEMUX(FFM,
REGISTER_MUXDEMUX(FFMETADATA,
ffmetadata);
REGISTER_MUXDEMUX(FILMSTRIP,
filmstrip);
REGISTER_MUXDEMUX(FLAC,
REGISTER_DEMUXER (FLIC,
REGISTER_MUXDEMUX(FLV,
REGISTER_DEMUXER (LIVE_FLV,
live_flv);
REGISTER_DEMUXER (FOURXM,
REGISTER_MUXER
(FRAMECRC,
framecrc);
REGISTER_MUXER
(FRAMEMD5,
framemd5);
REGISTER_DEMUXER (FRM,
REGISTER_MUXDEMUX(G722,
REGISTER_MUXDEMUX(G723_1,
REGISTER_DEMUXER (G729,
REGISTER_MUXDEMUX(GIF,
REGISTER_DEMUXER (GSM,
REGISTER_MUXDEMUX(GXF,
REGISTER_MUXDEMUX(H261,
REGISTER_MUXDEMUX(H263,
REGISTER_MUXDEMUX(H264,
REGISTER_MUXER
REGISTER_MUXDEMUX(HEVC,
REGISTER_MUXDEMUX(HLS,
REGISTER_DEMUXER (HNM,
REGISTER_MUXDEMUX(ICO,
REGISTER_DEMUXER (IDCIN,
REGISTER_DEMUXER (IDF,
REGISTER_DEMUXER (IFF,
REGISTER_MUXDEMUX(ILBC,
REGISTER_MUXDEMUX(IMAGE2,
REGISTER_MUXDEMUX(IMAGE2PIPE,
image2pipe);
REGISTER_DEMUXER (IMAGE2_ALIAS_PIX, image2_alias_pix);
REGISTER_DEMUXER (IMAGE2_BRENDER_PIX, image2_brender_pix);
REGISTER_DEMUXER (INGENIENT,
ingenient);
REGISTER_DEMUXER (IPMOVIE,
REGISTER_MUXER
REGISTER_MUXDEMUX(IRCAM,
REGISTER_MUXER
REGISTER_DEMUXER (ISS,
REGISTER_DEMUXER (IV8,
REGISTER_MUXDEMUX(IVF,
REGISTER_MUXDEMUX(JACOSUB,
REGISTER_DEMUXER (JV,
REGISTER_MUXDEMUX(LATM,
REGISTER_DEMUXER (LMLM4,
REGISTER_DEMUXER (LOAS,
REGISTER_MUXDEMUX(LRC,
REGISTER_DEMUXER (LVF,
REGISTER_DEMUXER (LXF,
REGISTER_MUXDEMUX(M4V,
REGISTER_MUXER
REGISTER_MUXDEMUX(MATROSKA,
matroska);
REGISTER_MUXER
(MATROSKA_AUDIO,
matroska_audio);
REGISTER_DEMUXER (MGSTS,
REGISTER_MUXDEMUX(MICRODVD,
microdvd);
REGISTER_MUXDEMUX(MJPEG,
REGISTER_MUXDEMUX(MLP,
REGISTER_DEMUXER (MLV,
REGISTER_DEMUXER (MM,
REGISTER_MUXDEMUX(MMF,
REGISTER_MUXDEMUX(MOV,
REGISTER_MUXER
REGISTER_MUXDEMUX(MP3,
REGISTER_MUXER
REGISTER_DEMUXER (MPC,
REGISTER_DEMUXER (MPC8,
REGISTER_MUXER
(MPEG1SYSTEM,
mpeg1system);
REGISTER_MUXER
(MPEG1VCD,
mpeg1vcd);
REGISTER_MUXER
(MPEG1VIDEO,
mpeg1video);
REGISTER_MUXER
(MPEG2DVD,
mpeg2dvd);
REGISTER_MUXER
(MPEG2SVCD,
mpeg2svcd);
REGISTER_MUXER
(MPEG2VIDEO,
mpeg2video);
REGISTER_MUXER
(MPEG2VOB,
mpeg2vob);
REGISTER_DEMUXER (MPEGPS,
REGISTER_MUXDEMUX(MPEGTS,
REGISTER_DEMUXER (MPEGTSRAW,
mpegtsraw);
REGISTER_DEMUXER (MPEGVIDEO,
mpegvideo);
REGISTER_MUXER
REGISTER_DEMUXER (MPL2,
REGISTER_DEMUXER (MPSUB,
REGISTER_DEMUXER (MSNWC_TCP,
msnwc_tcp);
REGISTER_DEMUXER (MTV,
REGISTER_DEMUXER (MV,
REGISTER_DEMUXER (MVI,
REGISTER_MUXDEMUX(MXF,
REGISTER_MUXER
REGISTER_DEMUXER (MXG,
REGISTER_DEMUXER (NC,
REGISTER_DEMUXER (NISTSPHERE,
nistsphere);
REGISTER_DEMUXER (NSV,
REGISTER_MUXER
REGISTER_MUXDEMUX(NUT,
REGISTER_DEMUXER (NUV,
REGISTER_MUXER
REGISTER_MUXDEMUX(OGG,
REGISTER_MUXDEMUX(OMA,
REGISTER_MUXER
REGISTER_DEMUXER (PAF,
REGISTER_MUXDEMUX(PCM_ALAW,
pcm_alaw);
REGISTER_MUXDEMUX(PCM_MULAW,
pcm_mulaw);
REGISTER_MUXDEMUX(PCM_F64BE,
pcm_f64be);
REGISTER_MUXDEMUX(PCM_F64LE,
pcm_f64le);
REGISTER_MUXDEMUX(PCM_F32BE,
pcm_f32be);
REGISTER_MUXDEMUX(PCM_F32LE,
pcm_f32le);
REGISTER_MUXDEMUX(PCM_S32BE,
pcm_s32be);
REGISTER_MUXDEMUX(PCM_S32LE,
pcm_s32le);
REGISTER_MUXDEMUX(PCM_S24BE,
pcm_s24be);
REGISTER_MUXDEMUX(PCM_S24LE,
pcm_s24le);
REGISTER_MUXDEMUX(PCM_S16BE,
pcm_s16be);
REGISTER_MUXDEMUX(PCM_S16LE,
pcm_s16le);
REGISTER_MUXDEMUX(PCM_S8,
REGISTER_MUXDEMUX(PCM_U32BE,
pcm_u32be);
REGISTER_MUXDEMUX(PCM_U32LE,
pcm_u32le);
REGISTER_MUXDEMUX(PCM_U24BE,
pcm_u24be);
REGISTER_MUXDEMUX(PCM_U24LE,
pcm_u24le);
REGISTER_MUXDEMUX(PCM_U16BE,
pcm_u16be);
REGISTER_MUXDEMUX(PCM_U16LE,
pcm_u16le);
REGISTER_MUXDEMUX(PCM_U8,
REGISTER_DEMUXER (PJS,
REGISTER_DEMUXER (PMP,
REGISTER_MUXER
REGISTER_DEMUXER (PVA,
REGISTER_DEMUXER (PVF,
REGISTER_DEMUXER (QCP,
REGISTER_DEMUXER (R3D,
REGISTER_MUXDEMUX(RAWVIDEO,
rawvideo);
REGISTER_DEMUXER (REALTEXT,
realtext);
REGISTER_DEMUXER (REDSPARK,
redspark);
REGISTER_DEMUXER (RL2,
REGISTER_MUXDEMUX(RM,
REGISTER_MUXDEMUX(ROQ,
REGISTER_DEMUXER (RPL,
REGISTER_DEMUXER (RSD,
REGISTER_MUXDEMUX(RSO,
REGISTER_MUXDEMUX(RTP,
REGISTER_MUXDEMUX(RTSP,
REGISTER_DEMUXER (SAMI,
REGISTER_MUXDEMUX(SAP,
REGISTER_DEMUXER (SBG,
REGISTER_DEMUXER (SDP,
REGISTER_DEMUXER (SDR2,
#if CONFIG_RTPDEC
ff_register_rtp_dynamic_payload_handlers();
ff_register_rdt_dynamic_payload_handlers();
REGISTER_DEMUXER (SEGAFILM,
segafilm);
REGISTER_MUXER
REGISTER_MUXER
stream_segment);
REGISTER_DEMUXER (SHORTEN,
REGISTER_DEMUXER (SIFF,
REGISTER_DEMUXER (SLN,
REGISTER_DEMUXER (SMACKER,
REGISTER_MUXDEMUX(SMJPEG,
REGISTER_MUXER
(SMOOTHSTREAMING,
smoothstreaming);
REGISTER_DEMUXER (SMUSH,
REGISTER_DEMUXER (SOL,
REGISTER_MUXDEMUX(SOX,
REGISTER_MUXDEMUX(SPDIF,
REGISTER_MUXER
REGISTER_MUXDEMUX(SRT,
REGISTER_DEMUXER (STR,
REGISTER_DEMUXER (SUBVIEWER1,
subviewer1);
REGISTER_DEMUXER (SUBVIEWER,
subviewer);
REGISTER_MUXDEMUX(SWF,
REGISTER_DEMUXER (TAK,
REGISTER_MUXER
REGISTER_DEMUXER (TEDCAPTIONS,
tedcaptions);
REGISTER_MUXER
REGISTER_MUXER
REGISTER_DEMUXER (THP,
REGISTER_DEMUXER (TIERTEXSEQ,
tiertexseq);
REGISTER_MUXER
(MKVTIMESTAMP_V2,
mkvtimestamp_v2);
REGISTER_DEMUXER (TMV,
REGISTER_MUXDEMUX(TRUEHD,
REGISTER_DEMUXER (TTA,
REGISTER_DEMUXER (TXD,
REGISTER_DEMUXER (TTY,
REGISTER_MUXER
(UNCODEDFRAMECRC,
uncodedframecrc);
REGISTER_MUXDEMUX(VC1,
REGISTER_MUXDEMUX(VC1T,
REGISTER_DEMUXER (VIVO,
REGISTER_DEMUXER (VMD,
REGISTER_DEMUXER (VOBSUB,
REGISTER_MUXDEMUX(VOC,
REGISTER_DEMUXER (VPLAYER,
REGISTER_DEMUXER (VQF,
REGISTER_MUXDEMUX(W64,
REGISTER_MUXDEMUX(WAV,
REGISTER_DEMUXER (WC3,
REGISTER_MUXER
REGISTER_MUXDEMUX(WEBM_DASH_MANIFEST, webm_dash_manifest);
REGISTER_MUXDEMUX(WEBVTT,
REGISTER_DEMUXER (WSAUD,
REGISTER_DEMUXER (WSVQA,
REGISTER_MUXDEMUX(WTV,
REGISTER_MUXDEMUX(WV,
REGISTER_DEMUXER (XA,
REGISTER_DEMUXER (XBIN,
REGISTER_DEMUXER (XMV,
REGISTER_DEMUXER (XWMA,
REGISTER_DEMUXER (YOP,
REGISTER_MUXDEMUX(YUV4MPEGPIPE,
yuv4mpegpipe);
/* image demuxers */
REGISTER_DEMUXER (IMAGE_BMP_PIPE,
image_bmp_pipe);
REGISTER_DEMUXER (IMAGE_DPX_PIPE,
image_dpx_pipe);
REGISTER_DEMUXER (IMAGE_EXR_PIPE,
image_exr_pipe);
REGISTER_DEMUXER (IMAGE_J2K_PIPE,
image_j2k_pipe);
REGISTER_DEMUXER (IMAGE_PICTOR_PIPE,
image_pictor_pipe);
REGISTER_DEMUXER (IMAGE_PNG_PIPE,
image_png_pipe);
REGISTER_DEMUXER (IMAGE_SGI_PIPE,
image_sgi_pipe);
REGISTER_DEMUXER (IMAGE_SUNRAST_PIPE,
image_sunrast_pipe);
REGISTER_DEMUXER (IMAGE_TIFF_PIPE,
image_tiff_pipe);
/* protocols */
REGISTER_PROTOCOL(BLURAY,
REGISTER_PROTOCOL(CACHE,
REGISTER_PROTOCOL(CONCAT,
REGISTER_PROTOCOL(CRYPTO,
REGISTER_PROTOCOL(DATA,
REGISTER_PROTOCOL(FFRTMPCRYPT,
ffrtmpcrypt);
REGISTER_PROTOCOL(FFRTMPHTTP,
ffrtmphttp);
REGISTER_PROTOCOL(FILE,
REGISTER_PROTOCOL(FTP,
REGISTER_PROTOCOL(GOPHER,
REGISTER_PROTOCOL(HLS,
REGISTER_PROTOCOL(HTTP,
REGISTER_PROTOCOL(HTTPPROXY,
httpproxy);
REGISTER_PROTOCOL(HTTPS,
REGISTER_PROTOCOL(MMSH,
REGISTER_PROTOCOL(MMST,
REGISTER_PROTOCOL(MD5,
REGISTER_PROTOCOL(PIPE,
REGISTER_PROTOCOL(RTMP,
REGISTER_PROTOCOL(RTMPE,
REGISTER_PROTOCOL(RTMPS,
REGISTER_PROTOCOL(RTMPT,
REGISTER_PROTOCOL(RTMPTE,
REGISTER_PROTOCOL(RTMPTS,
REGISTER_PROTOCOL(RTP,
REGISTER_PROTOCOL(SCTP,
REGISTER_PROTOCOL(SRTP,
REGISTER_PROTOCOL(SUBFILE,
REGISTER_PROTOCOL(TCP,
REGISTER_PROTOCOL(TLS,
REGISTER_PROTOCOL(UDP,
REGISTER_PROTOCOL(UNIX,
/* external libraries */
REGISTER_DEMUXER (LIBGME,
REGISTER_DEMUXER (LIBMODPLUG,
libmodplug);
REGISTER_MUXDEMUX(LIBNUT,
REGISTER_DEMUXER (LIBQUVI,
REGISTER_PROTOCOL(LIBRTMP,
REGISTER_PROTOCOL(LIBRTMPE,
librtmpe);
REGISTER_PROTOCOL(LIBRTMPS,
librtmps);
REGISTER_PROTOCOL(LIBRTMPT,
librtmpt);
REGISTER_PROTOCOL(LIBRTMPTE,
librtmpte);
REGISTER_PROTOCOL(LIBSSH,
REGISTER_PROTOCOL(LIBSMBCLIENT,
libsmbclient);
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:327039次
积分:3080
积分:3080
排名:第7916名
原创:59篇
评论:29条
阅读:31226
文章:16篇
阅读:162217
专注于流媒体技术的研究与开发。PSIP,WebRtc,FEC,QOS等 技术合作工作邮箱:
QQ: 微信:tonglihappy如果有北京的,有创业想法的可以联系我}

我要回帖

更多关于 优先级 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信