Compare commits

..

2 Commits

Author SHA1 Message Date
xia-chu
8a27e11c4c 防止ps/ts不支持编码类型时警告日志打印
Some checks failed
Android / build (push) Has been cancelled
CodeQL / Analyze (cpp) (push) Has been cancelled
CodeQL / Analyze (javascript) (push) Has been cancelled
Docker / build (push) Has been cancelled
Linux / build (push) Has been cancelled
macOS / build (push) Has been cancelled
Windows / build (push) Has been cancelled
2024-12-01 10:26:50 +08:00
xia-chu
8cf8e4ed5f 防止rtmp打包不支持的编码类型时频繁打印警告日志 2024-12-01 10:20:01 +08:00
2 changed files with 8 additions and 5 deletions

View File

@ -178,8 +178,9 @@ RtmpCodec::Ptr Factory::getRtmpDecoderByTrack(const Track::Ptr &track) {
RtmpCodec::Ptr Factory::getRtmpEncoderByTrack(const Track::Ptr &track) { RtmpCodec::Ptr Factory::getRtmpEncoderByTrack(const Track::Ptr &track) {
auto it = s_plugins.find(track->getCodecId()); auto it = s_plugins.find(track->getCodecId());
if (it == s_plugins.end()) { if (it == s_plugins.end()) {
WarnL << "Unsupported codec: " << track->getCodecName() << ", use CommonRtmpEncoder"; auto amf = Factory::getAmfByCodecId(track->getCodecId());
return std::make_shared<CommonRtmpEncoder>(track); WarnL << "Unsupported codec: " << track->getCodecName() << (amf ? ", use CommonRtmpEncoder" : "");
return amf ? std::make_shared<CommonRtmpEncoder>(track) : nullptr;
} }
return it->second->getRtmpEncoderByTrack(track); return it->second->getRtmpEncoderByTrack(track);
} }

View File

@ -91,9 +91,11 @@ void DecoderImp::onStream(int stream, int codecid, const void *extra, size_t byt
// G711传统只支持 8000/1/16的规格FFmpeg貌似做了扩展但是这里不管它了 [AUTO-TRANSLATED:851813f7] // G711传统只支持 8000/1/16的规格FFmpeg貌似做了扩展但是这里不管它了 [AUTO-TRANSLATED:851813f7]
// G711 traditionally only supports the 8000/1/16 specification. FFmpeg seems to have extended it, but we'll ignore that here. // G711 traditionally only supports the 8000/1/16 specification. FFmpeg seems to have extended it, but we'll ignore that here.
auto codec = getCodecByMpegId(codecid); auto codec = getCodecByMpegId(codecid);
auto track= Factory::getTrackByCodecId(codec); if (codec != CodecInvalid) {
if (track) { auto track = Factory::getTrackByCodecId(codec);
onTrack(stream, std::move(track)); if (track) {
onTrack(stream, std::move(track));
}
} }
// 防止未获取视频track提前complete导致忽略后续视频的问题用于兼容一些不太规范的ps流 [AUTO-TRANSLATED:d6b349b5] // 防止未获取视频track提前complete导致忽略后续视频的问题用于兼容一些不太规范的ps流 [AUTO-TRANSLATED:d6b349b5]
// Prevent the problem of ignoring subsequent video due to premature completion of the video track before it is obtained. This is used to be compatible with some non-standard PS streams. // Prevent the problem of ignoring subsequent video due to premature completion of the video track before it is obtained. This is used to be compatible with some non-standard PS streams.