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

深圳制作公司网页百度快照优化公司

深圳制作公司网页,百度快照优化公司,揭阳自助建站,广州网站设计成功刻官网下载的ffmpeg目前只能下载到X64版本的库#xff0c;具体编译请参考windows编译ffmpeg源码#xff08;32位库#xff09;_windows 32位ffmpeg动态库-CSDN博客 直接上代码 int VideoDecodeModule::Open(std::string strUrl) {AVFormatContext *pFormatCtx nullptr;AVCo…官网下载的ffmpeg目前只能下载到X64版本的库具体编译请参考windows编译ffmpeg源码32位库_windows 32位ffmpeg动态库-CSDN博客 直接上代码 int VideoDecodeModule::Open(std::string strUrl) {AVFormatContext *pFormatCtx nullptr;AVCodec *pCodec nullptr;AVCodecContext* pCodecCtx nullptr;AVDictionary *opt nullptr;std::string decodeName ;AVBufferRef* pBufferRef nullptr;int ret 0;int videoStream -1;char errorbuf[1024] { 0 };av_dict_set(opt, buffer_size, 1024000, 0); // 缓冲区大小 单位字节 解决高画质模糊的问题av_dict_set(opt, max_delay, 100, 0); // 最大延时 单位微妙av_dict_set(opt, stimeout, 3000000, 0); // 设置超时断开连接时间 3s 单位微妙av_dict_set(opt, rtsp_transport, tcp, 0); // 以tcp方式打开如果以udp方式打开将tcp替换为udpav_dict_set(opt, fflags, nobuffer, 0);av_dict_set(opt, rtbufsize, 6, 0);av_dict_set(opt, start_time_realtime, 0, 0);if ((ret avformat_open_input(pFormatCtx, strUrl.data(), nullptr, opt)) ! 0){av_strerror(ret, errorbuf, sizeof(errorbuf));return -1;}m_spFormatContext std::shared_ptrAVFormatContext(pFormatCtx, [](AVFormatContext* ctx){avformat_close_input(ctx);});if ((ret avformat_find_stream_info(pFormatCtx, nullptr)) 0){av_strerror(ret, errorbuf, sizeof(errorbuf));return -1;}if ((ret av_find_best_stream(pFormatCtx, AVMEDIA_TYPE_VIDEO, -1, -1, pCodec, 0)) 0){av_strerror(ret, errorbuf, sizeof(errorbuf));return -1;}videoStream ret;m_video pFormatCtx-streams[videoStream];if (m_decodeType DT_CPU){if (!(pCodec avcodec_find_decoder(m_video-codecpar-codec_id))){int error AVERROR(ENOMEM);return -1;}}else if (m_decodeType DT_INTER_QSV){decodeName GetCodeName(m_video-codecpar-codec_id, DT_INTER_QSV);if (av_hwdevice_ctx_create(pBufferRef, AV_HWDEVICE_TYPE_QSV, auto, nullptr, 0) ! 0){return -1;}if (!(pCodec avcodec_find_decoder_by_name(decodeName.data()))){int error AVERROR(ENOMEM);return -1;}}else if (m_decodeType DT_NVIDIA_CUDA){decodeName GetCodeName(m_video-codecpar-codec_id, DT_NVIDIA_CUDA);if (av_hwdevice_ctx_create(pBufferRef, AV_HWDEVICE_TYPE_CUDA, auto, nullptr, 0) ! 0){return -1;}if (!(pCodec avcodec_find_decoder_by_name(decodeName.data()))){int error AVERROR(ENOMEM);return -1;}}if (auto frame av_frame_alloc()){m_spSwFrame std::shared_ptrAVFrame(frame, [](AVFrame* p) {av_frame_free(p); });}if (!(pCodecCtx avcodec_alloc_context3(pCodec))){return -1;}m_spCodecContext std::shared_ptrAVCodecContext(pCodecCtx, [](AVCodecContext* ctx){avcodec_free_context(ctx);});m_spCodecContext-codec_id m_video-codecpar-codec_id;if (m_video-codecpar-extradata_size){m_spCodecContext-extradata (uint8_t*)av_mallocz(m_video-codecpar-extradata_size AV_INPUT_BUFFER_PADDING_SIZE);if (!m_spCodecContext-extradata){return -1;}memcpy(m_spCodecContext-extradata, m_video-codecpar-extradata, m_video-codecpar-extradata_size);m_spCodecContext-extradata_size m_video-codecpar-extradata_size;}m_spCodecContext-flags2 | AV_CODEC_FLAG2_FAST; // 允许不符合规范的加速技巧。m_spCodecContext-thread_count 8; // 使用8线程解码if ((ret avcodec_parameters_to_context(m_spCodecContext.get(), m_video-codecpar)) 0){av_strerror(ret, errorbuf, sizeof(errorbuf));return -1;}if (m_decodeType DT_INTER_QSV){m_spCodecContext-opaque pBufferRef;m_spCodecContext-get_format GetHWQsvFormat;}else if (m_decodeType DT_NVIDIA_CUDA){m_spCodecContext-hw_device_ctx av_buffer_ref(pBufferRef);m_spCodecContext-opaque this;m_spCodecContext-get_format GetHWCudaFormat;}if ((ret avcodec_open2(m_spCodecContext.get(), pCodec, nullptr)) 0){av_strerror(ret, errorbuf, sizeof(errorbuf));return -1;}m_isConnect true;return ret; } if (!spFrame)return;/// 解码的图片宽int width spFrame-width;/// 解码的图片高int height spFrame-height;// 计算转码后的图片裸数据需要的大小int nSrcbuffSize av_image_get_buffer_size(m_pixelFormat, width, height, 1);if (nSrcbuffSize m_dstBuffer.size()){m_dstBuffer.resize(nSrcbuffSize, \0);}std::shared_ptrSwsContext spSwsContext nullptr;/// 判断是否需要格式转换if (m_pixelFormat ! (AVPixelFormat)spFrame-format){AVPixelFormat srcFmt (AVPixelFormat)spFrame-format;SwsContext* image_sws_ctx sws_getContext(width, height, srcFmt,width, height, m_pixelFormat, SWS_FAST_BILINEAR, nullptr, nullptr, nullptr);spSwsContext std::shared_ptrSwsContext(image_sws_ctx, [](SwsContext* p) {sws_freeContext(p); });uint8_t* data[4] { nullptr };int linesize[4] { 0 };av_image_fill_arrays(data, linesize, m_dstBuffer.data(), m_pixelFormat, width, height, 1);int ret sws_scale(spSwsContext.get(), (uint8_t const* const*)spFrame-data, spFrame-linesize, 0, height, data, linesize);if (ret 0)return;}if (m_pFrameDataCallBack){FrameInfo info;info.format GetVideoFormatByAVPixelFormat(m_pixelFormat);info.width width;info.height height;info.pts spFrame-pts / 1000;m_pFrameDataCallBack-cbFrameDataCallBack(m_dstBuffer.data(), m_dstBuffer.size(), info, m_pFrameDataCallBack-pUser);} 解码显示效果图 英伟达显卡播放效果因本人没有显卡不在这里展示可以看出通过硬解降低将近一半的cpu。 代码参考 https://download.csdn.net/download/weixin_38887743/88748651
http://www.zqtcl.cn/news/859117/

相关文章:

  • 南宁北京网站建设网站代理合作
  • 网站备案要多少钱包装设计接单网站
  • 涵江网站建设超市营销型网站建设策划书
  • 无锡定制网站建设织梦笑话网站
  • 网站开发的安全性原则潍坊 logo设计公司
  • 宜春市城乡规划建设局网站网站设计师联盟
  • 重庆施工员证查询网站广告设计专业认知报告
  • 网站建设费用要多少黑糖不苦还做网站么
  • 公司网站改版 目的好知网做网站
  • 华强北手机网站建设哈尔滨网站建设oeminc
  • 公司简介网站模板新浪云存储 wordpress
  • 阿里云个人网站建设威海建设集团网站
  • 湖南城乡住房建设厅网站中石化网站群建设
  • 网站关键词怎么做排名大连网站建设方案案例
  • 西安做网站上海建设资质审批网站
  • 平阳高端网站建设广州凡科公司是外包吗
  • 购物网站项目经验公司的八个主要部门
  • 绿色大气网站模板株洲58同城网站建设电话
  • 网站建设 总体思路福州建设高端网站
  • 做网站需要什么配置北京工信部网站备案查询
  • 奇信建设集团官方网站专题网站建站
  • 站点推广策略包括黄山旅游必去十大景点
  • 佛山龙江做网站的信宜做网站
  • 推广自己的网站需要怎么做wordpress 正计时
  • 做网站工资怎么样织梦的官方网站
  • python制作视频网站开发互动网站建设公司
  • 网站软文代写广西网站设计公司排行榜
  • c2c网站代表和网址mirages WordPress
  • 网站建设开发案例教程wordpress中国区官方论坛
  • 王晴儿网站建设做啊录音网站