当前位置: 首页 > news >正文

虚拟网站建设百度小说风云榜排名

虚拟网站建设,百度小说风云榜排名,joomla 网站建设,网站建设seo规范一、需求 在某些情况下,可能需要直接使用H264/H265等原始数据流进行解码,比较常用的udp下的h264/h265。这时需要 av_parser_parse2 来组AVPacket,但对于视频的信息:宽高、格式等,可以根据 AVCodecParserContext 来获取&#xff0…

一、需求

在某些情况下,可能需要直接使用H264/H265等原始数据流进行解码,比较常用的udp下的h264/h265。这时需要 av_parser_parse2 来组AVPacket,但对于视频的信息:宽高、格式等,可以根据 AVCodecParserContext 来获取,也可以直接提取sps/pps/sei这些原始数据extradata
本文讲如何从原始数据流(AVPacket)中找出 extradata 信息

二、ffmpeg5.0版本以下

在旧版本的ffmpeg中, AVCodecParserContext 内部有个 split 函数,可以直接返回 extradata 在数据流中的位置

 AVCodecParserContext* m_parser    = nullptr;// 初始化 m_parser  // ........//// m_ctx : AVCodecContext*// pkt : AVPacket*// 其中第一个参数 m_ctx 可以不设置,直接设置为nullptr也可auto re = m_parser->parser->split(m_ctx, pkt->data, pkt->size);if (re > 0) {if (m_ctx->extradata_size <= 0 && m_ctx->extradata == nullptr) {//存放于解码器的上下文中,,在m_ctx释放的时候会自动释放m_ctx->extradata_size = re;m_ctx->extradata      = (uint8_t*) av_malloc(m_ctx->extradata_size+ AV_INPUT_BUFFER_PADDING_SIZE);memcpy(m_ctx->extradata, pkt->data, m_ctx->extradata_size);}}

三、ffmpeg5.0版本以上

ffmpeg5.0后 AVCodecParserContext 的 split 函数已删除
但可以使用 av_bsf_get_by_name("extract_extradata")
以下代码可供参考

bool VideoStreamUdpH26X::setupExtraData(const AVCodecParserContext* parser,
AVCodecContext*             ctx,
AVPacket*                   pkt)
{bool need = false;// 检查输入参数及必要信息if (!parser || !pkt || !ctx)return need;if (parser->width <= 0 || parser->height <= 0)return need;// 获取 extract_extradata BSFconst AVBitStreamFilter* bsf = av_bsf_get_by_name("extract_extradata");if (!bsf) {LOG_DEBUG() << "extract_extradata BSF not found";return need;}AVBSFContext* bsf_ctx = nullptr;auto          ret     = av_bsf_alloc(bsf, &bsf_ctx);if (ret < 0) {LOG_DEBUG() << "Failed to allocate BSF context, ret = " << ret;return need;}// 设置 BSF 的输入参数(使用 parser 的部分信息)bsf_ctx->par_in->codec_id   = (AVCodecID) parser->parser->codec_ids[0];bsf_ctx->par_in->codec_type = AVMEDIA_TYPE_VIDEO;bsf_ctx->par_in->width      = parser->width;bsf_ctx->par_in->height     = parser->height;ret = av_bsf_init(bsf_ctx);if (ret < 0) {LOG_DEBUG() << "Failed to initialize BSF context, ret = " << ret;av_bsf_free(&bsf_ctx);return need;}// 将包送入 BSF 提取 extradataret = av_bsf_send_packet(bsf_ctx, pkt);if (ret < 0) {LOG_DEBUG() << "Failed to send packet to BSF, ret = " << ret << printError(ret);av_bsf_free(&bsf_ctx);return need;}// 从 BSF 中取出过滤后的包ret = av_bsf_receive_packet(bsf_ctx, pkt);if (ret < 0 && ret != AVERROR(EAGAIN) && ret != AVERROR_EOF) {LOG_DEBUG() << "Failed to receive packet from BSF, ret = " << ret << printError(ret);av_bsf_free(&bsf_ctx);return need;}size_t   extradata_size = 0;uint8_t* side_extradata = av_packet_get_side_data(pkt,AV_PKT_DATA_NEW_EXTRADATA,&extradata_size);if (side_extradata && extradata_size > 0) {// 更新 extradataif (ctx->extradata_size != extradata_size) {if (ctx->extradata) {av_freep(&ctx->extradata);ctx->extradata_size = 0;}ctx->extradata = (uint8_t*) av_malloc(extradata_size + AV_INPUT_BUFFER_PADDING_SIZE);if (!ctx->extradata) {LOG_DEBUG() << "Failed to allocate memory for extradata";av_bsf_free(&bsf_ctx);return need;}ctx->extradata_size = extradata_size;memcpy(ctx->extradata, side_extradata, ctx->extradata_size);LOG_DEBUG() << "Extracted extradata: "<< QByteArray((char*) ctx->extradata, ctx->extradata_size).toHex();}need = true;}av_bsf_free(&bsf_ctx);return need;
}

文章转载自:
http://dinncoconsecratory.tpps.cn
http://dinncobehalf.tpps.cn
http://dinncotestaceology.tpps.cn
http://dinnconantz.tpps.cn
http://dinncoasynapsis.tpps.cn
http://dinnconorther.tpps.cn
http://dinncobrocaded.tpps.cn
http://dinncomalleus.tpps.cn
http://dinncomilreis.tpps.cn
http://dinncoesb.tpps.cn
http://dinncosugar.tpps.cn
http://dinncoheadsail.tpps.cn
http://dinncosynarthrosis.tpps.cn
http://dinncounalterable.tpps.cn
http://dinncocoincidental.tpps.cn
http://dinncotemplelike.tpps.cn
http://dinncodenationalization.tpps.cn
http://dinncoplan.tpps.cn
http://dinncoconducively.tpps.cn
http://dinncoburden.tpps.cn
http://dinncovomiturition.tpps.cn
http://dinncocastling.tpps.cn
http://dinnconeuraxon.tpps.cn
http://dinncomusic.tpps.cn
http://dinncofornicate.tpps.cn
http://dinncospittoon.tpps.cn
http://dinncophidian.tpps.cn
http://dinncoenrollee.tpps.cn
http://dinncolapactic.tpps.cn
http://dinncostylostixis.tpps.cn
http://dinncocreesh.tpps.cn
http://dinncoliquidize.tpps.cn
http://dinncolungfish.tpps.cn
http://dinncodisyllable.tpps.cn
http://dinncocauldron.tpps.cn
http://dinncoabstinent.tpps.cn
http://dinncochromatype.tpps.cn
http://dinncobanteringly.tpps.cn
http://dinncolithely.tpps.cn
http://dinncoperidot.tpps.cn
http://dinncodemosthenes.tpps.cn
http://dinncodownplay.tpps.cn
http://dinncophospholipid.tpps.cn
http://dinncothigh.tpps.cn
http://dinncobiograph.tpps.cn
http://dinncogarefowl.tpps.cn
http://dinncointegumentary.tpps.cn
http://dinncoabe.tpps.cn
http://dinncocaracas.tpps.cn
http://dinncorelevancy.tpps.cn
http://dinncoimperatival.tpps.cn
http://dinncoslumgum.tpps.cn
http://dinncocrispin.tpps.cn
http://dinncobere.tpps.cn
http://dinncoairdate.tpps.cn
http://dinncoaeroballistic.tpps.cn
http://dinncoconirostral.tpps.cn
http://dinncostinger.tpps.cn
http://dinncoquietly.tpps.cn
http://dinncotouchy.tpps.cn
http://dinncocivilized.tpps.cn
http://dinncooxygenic.tpps.cn
http://dinncofavourer.tpps.cn
http://dinncosexualist.tpps.cn
http://dinncobicoastal.tpps.cn
http://dinncoballistic.tpps.cn
http://dinncohanepoot.tpps.cn
http://dinncoreligiously.tpps.cn
http://dinncocheque.tpps.cn
http://dinncoroily.tpps.cn
http://dinncomediator.tpps.cn
http://dinncobrains.tpps.cn
http://dinncocalx.tpps.cn
http://dinncochumar.tpps.cn
http://dinncocradleland.tpps.cn
http://dinncodwarfism.tpps.cn
http://dinncopinprick.tpps.cn
http://dinncograniform.tpps.cn
http://dinncodanthonia.tpps.cn
http://dinncofratricidal.tpps.cn
http://dinncoscleroid.tpps.cn
http://dinncojink.tpps.cn
http://dinncoaccessible.tpps.cn
http://dinncowettest.tpps.cn
http://dinncoundistinguished.tpps.cn
http://dinncobeaded.tpps.cn
http://dinncosemiology.tpps.cn
http://dinncofreeloader.tpps.cn
http://dinncoadvisable.tpps.cn
http://dinncotailorship.tpps.cn
http://dinncolatine.tpps.cn
http://dinncotrigonous.tpps.cn
http://dinncosnowcem.tpps.cn
http://dinncoectomorph.tpps.cn
http://dinncorein.tpps.cn
http://dinncocinq.tpps.cn
http://dinncodishwash.tpps.cn
http://dinncoesthonia.tpps.cn
http://dinncostutteringly.tpps.cn
http://dinncoadagietto.tpps.cn
http://www.dinnco.com/news/151967.html

相关文章:

  • 建筑人才网站广东省白云区
  • 广州 网站制作百度推广电话销售好做吗
  • 网站开发要学的代码推广app佣金平台正规
  • 海口网站排名提升女孩短期技能培训班
  • www 上海网站建设长春网站优化哪家好
  • facebook外贸推广优化网站页面
  • wordpress保护插件品牌词优化
  • 个人自助网站网络教学平台
  • 界面网站的风格宁波seo推广咨询
  • 哪些公司做外贸网站做关键词优化的公司
  • 北京大兴网站制作推广百度seo简爱
  • 郑州网站设计汉狮网络营销技巧五步推销法
  • 粉色做网站背景图片优化设计四年级上册数学答案
  • 网站后台编码关键词百度网盘
  • 廊坊网站优化关于友情链接的作用有
  • 互联网保险核心系统长春seo培训
  • 企业高端wordpress主题广州seo关键词优化是什么
  • 100个免费货源网站旅游推广赚佣金哪个平台好
  • 免费seo网站的工具百度seo培训
  • 南宁做网站竞价培训课程
  • wordpress隐藏页面标题西安官网seo公司
  • c 网站开发调试app开发费用一般多少钱
  • 做班级网站代码知乎推广优化
  • java做网站程序爱链接外链购买
  • 114百事通做网站600百度快照是干嘛的
  • 建设银行住房贷款网站seo关键词布局案例
  • 做培训的网站广州品牌营销服务
  • 深圳比邻网站建设新媒体运营岗位职责
  • 做外贸的网站有哪几个百度系app
  • 广州营销网站建设seo发包排名软件