directshow播放网络复合流
本人想用directhow和ffmpeg播放网络传过来的码流,有几点不是很清楚
1 如果传输的是PS流,播放端在不知什么类型码流的情况下(例如不知是mpeg4编码或是h264编码),能不能根据码流判断出 音视频的编码类型,ffmpeg能不能从码流解析出码流包含的音频流或者视频流的编码类型?
2 如果1不行的话,假如传输用ts流,ffmpeg应该能解析出码流的音频流或者视频流的编码类型吧?
3 用directshow写一个音视频分离filter,因为sourcefilter是用的推模式,那么这个音视频分离filter能不能写成推模式的,应该从哪个基类派生比较好?
[解决办法]
个人观点:
1、2不管是PS流还是TS流,FFMPEG应该都可以解析分离出视频、音频。
3、基类可以从CTransformFilter派生,当然,熟悉DSHOW的话,直接从CBaseFilter继承实现也是可以的。
[解决办法]
输入输出的数量,可以自己控制的,动态生成PIN也是可以的。
未确定输入的媒体类型时,输出与下级FILTER之间可以不连接。
Graph手动连接时,一般都是从sourcefilter开始,一级级往下连的。
[解决办法]
不用猜测,只要sourcefilter丢书stream流,下游接splitterFilter,有合适的匹配上了自然会分离出视频、音频码流。就像系统的文件sourcefilter。