ts文件不能正常播放的问题

我们对ts文件的播放流程是:

 ts文件不能正常播放的问题_第1张图片

 

我们之所以将audio通路放到一个单独的bin里,是因为我们录出的文件可能只有视频,没有音频。

我们录出的视频文件频繁的出现不能播放的情况,我大概一下几个步骤debug这个问题:

1、首先发现了sink audiobin did not post STREAM_START yet,发现其调用的过程是:

ts文件不能正常播放的问题_第2张图片

2、发现sink alsasink did not post STREAM_START yet,

3、怀疑音频解码出错了(faad是一个bad级别的element),没有解码数据,所以在gst_audio_decoder_push_buffers中打印信息,发现解码函数gst_audio_decoder_handle_frame始终没有被调到。说明parse部分出来问题,aac的parser就是一个解adts头的过程,到gst_faad_parse发现是因为gst_faad_sync返回false造成的。gst_faad_sync是一个解析adts头的函数,最后分析发现,是因为gst_faad_sync找错了adts头,所以,找到的aac的frame_length特别的大,使得pipeline总是得不到音频数据。所以,对aac的framelength做了保护,发现不正常(特别长)的frame_length后,不承认这是一个adts头。

你可能感兴趣的:(gstreamer)