DTSCD 在VLC中播放原因

问题提出,播放.dts全是噪音?

在做媒体播放器,测试报一些*.dts播放不了,用MediaInfo去查,显示PCM音频,原以为是封装错了,发现用VLC KMPlayer都能播放,而且显示是5.1声道的DTS,于是在网上一查,是DTSCD格式。


DTSCD是什么?

具体详细的描述可以参考baidu或者google,讲的很清楚。


为什么VLC可以播放?

用VLC可以正常播放,用MPlayer噪音,用ffmpeg检测也是PCM,而且播放噪音,可以定位,肯定是VLC中做了特殊处理。

这个文件有wav头,检测了下,没什么特殊的,标识就是PCM 2ch,看VLC的wav代码也没有做什么特殊处理啊,没办法,debug吧

看了下log,发现了个特殊的demuxer:es

vlc/modules/demux/mpeg/es.c

static int MpgaProbe( demux_t *p_demux, int64_t *pi_offset );
static int MpgaInit( demux_t *p_demux );

static int AacProbe( demux_t *p_demux, int64_t *pi_offset );
static int AacInit( demux_t *p_demux );

static int EA52Probe( demux_t *p_demux, int64_t *pi_offset );
static int A52Probe( demux_t *p_demux, int64_t *pi_offset );
static int A52Init( demux_t *p_demux );

static int DtsProbe( demux_t *p_demux, int64_t *pi_offset );
static int DtsInit( demux_t *p_demux );

static int MlpProbe( demux_t *p_demux, int64_t *pi_offset );
static int MlpInit( demux_t *p_demux );


看到这些瞬间明白了,它提供了这些audio的ES检测,其中就有DTS,也就是*.dts实际上是通过DtsProbe,一帧一帧检测出来,然后打上DTS标识的。





你可能感兴趣的:(DTSCD 在VLC中播放原因)