定位到问题是pmt写入信息默认带了视频字段,用ffplay定位到警告。
Could not find codec parameters for stream 1 (Video: h264 ([27][0][0][0] / 0x001B)
查代码发现对应函数 SrsTsPacket::create_pmt ,纯音频情况不应该push_back视频类型;
// if h.264 specified, use video to carry pcr.
if (vs == SrsTsStreamVideoH264) {
pmt->PCR_PID = vpid;
pmt->infos.push_back(new SrsTsPayloadPMTESInfo(vs, vpid));
}
4条答案
按热度按时间6qfn3psc1#
👍 可以提交个PR,麻烦参考 https://github.com/ossrs/srs/blob/develop/CONTRIBUTING.md
bksxznpy2#
ios 15+ hls全部播放不了,经检查 必须 生成
z2acfund3#
m3u8文件中的#EXTINF:2.000000 类似点后面不能有数值。必须是整数,或者类似4.000,而不是4.001
#EXTM3U
#EXT-X-VERSION:3
#EXT-X-TARGETDURATION:2
#EXT-X-MEDIA-SEQUENCE:13
#EXTINF:2.000000,
abc13.ts
#EXTINF:2.000000,
abc14.ts
#EXTINF:2.000000,
abc15.ts
#EXTINF:2.000000,
abc16.ts
#EXTINF:2.000000,
abc17.ts
6xfqseft4#
因为这个问题,临时方案只能使用ffmpeg,导致原来几佰路视频,srs内置hls分割就ok的,必须额外增加ffmpeg来做hls分割,硬件资源需求陡增