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

网站设计软件网络智能营销推广平台

网站设计软件,网络智能营销推广平台,小程序登录入口网址,有了服务器怎么做网站背景 最近整理视频编解码的代码,早前在jetson上封装了jetson multimedia作为视频编解码的类,供其他同事和其他组使用,但该解码接口有一个问题,无法首先获取视频宽高信息,更无法直接获取视频的帧率、比特率等信息。 解…

背景

最近整理视频编解码的代码,早前在jetson上封装了jetson multimedia作为视频编解码的类,供其他同事和其他组使用,但该解码接口有一个问题,无法首先获取视频宽高信息,更无法直接获取视频的帧率、比特率等信息。

解决方法

  1. 使用ffmpeg库,命令行参数不适合代码集成
  2. 使用ffmpeg的API接口进行封装

源码实现

// ffmpeg_videoinfo.h#ifndef FFMPEG_VIDEOINFO_H
#define FFMPEG_VIDEOINFO_H#include <iostream>
#include <memory>struct VideoAsset {float width; float height;float fps;float bitrate; /** bit per second */float duration; /** seconds */
};#ifdef __cplusplus
extern "C" {
#endif /* __cplusplus */int GetVideoInfo(const char *in_file,  std::shared_ptr<VideoAsset> &info);#ifdef __cplusplus
};
#endif#endif  // FFMPEG_VIDEOINFO_H
// ffmpeg_videoinfo.cpp#include "ffmpeg_videoinfo.h"#ifdef __cplusplus
extern "C" {
#endif /* __cplusplus */#include <libavformat/avformat.h>
#include <libavcodec/avcodec.h>
#include <libavutil/avutil.h>int GetVideoInfo(const char *in_file,  std::shared_ptr<VideoAsset> &info){// 注册所有格式和编解码器av_register_all();// 创建一个格式上下文(Format Context)AVFormatContext* formatContext = nullptr;if (avformat_open_input(&formatContext, in_file, nullptr, nullptr) != 0) {fprintf(stderr, "Could not open input file '%s'", in_file);return -1;}// 获取流信息if (avformat_find_stream_info(formatContext, nullptr) < 0) {fprintf(stderr, "Could not find stream information '%s'", in_file);return -1;}// 查找视频流int videoStreamIndex = -1;for (unsigned i = 0; i < formatContext->nb_streams; i++) {if (formatContext->streams[i]->codecpar->codec_type == AVMEDIA_TYPE_VIDEO) {videoStreamIndex = i;break;}}if (videoStreamIndex == -1) {fprintf(stderr, "Could not find video stream '%s'", in_file);return -1;}// 获取视频流的编码参数AVCodecParameters* codecParameters = formatContext->streams[videoStreamIndex]->codecpar;AVStream* videoStream = formatContext->streams[videoStreamIndex];info->fps = av_q2d(videoStream->avg_frame_rate);info->width = codecParameters->width;info->height = codecParameters->height;int64_t totalSize = 0;int64_t totalDuration = 0;AVPacket packet;while (av_read_frame(formatContext, &packet) >= 0) {if (packet.stream_index == 0) {totalSize += packet.size;totalDuration += packet.duration;}av_packet_unref(&packet);}AVRational timeBase = videoStream->time_base; /** 时间基 */info->duration = (float)totalDuration * av_q2d(timeBase);info->bitrate = (totalDuration > 0) ? (totalSize * 8.0 / info->duration) : 0.0;// 清理avformat_close_input(&formatContext);return 0;
}
#ifdef __cplusplus
};
#endif
// 测试脚本 test_single_videoinfo.cpp#include "ffmpeg_videoinfo.h"int main(int argc, char **argv) {if(argc<2){return 1;}const std::string &input_h264=argv[1];std::shared_ptr<VideoAsset> video_info_ptr = std::make_shared<VideoAsset>();// VideoAsset video_info;int status_code = GetVideoInfo(input_h264.c_str(), video_info_ptr);if (status_code < 0) {printf("GetVideoInfo failed\n");return -1;}printf("bitrate:%f, duration:%f, fps:%f, height:%f, width:%f\n",video_info_ptr->bitrate, video_info_ptr->duration, video_info_ptr->fps, video_info_ptr->height, video_info_ptr->width);return 1;
}
# CMakelist.txt核心add_executable(test_video_info test_single_videoinfo.cpp ffmpeg_videoinfo.h ffmpeg_videoinfo.cpp)
target_compile_features(test_video_info PRIVATE cxx_std_14)
target_link_libraries(test_video_info avcodec avutil avformat)
# 测试./test_video_info /data/videos/l4t.h264# 输出信息示例
[h264 @ 0xaaaac14b16a0] Stream #0: not enough frames to estimate rate; consider increasing probesize
bitrate:30681866.000000, duration:164.490005, fps:20.000000, height:2160.000000, width:3840.000000

后记

本人对ffmpeg接口并不熟悉,以上根据文档及搜索结果进行的实现,不敢保证没有bug,如果各位遇到问题,可以留言交流

http://www.yayakq.cn/news/515290/

相关文章:

  • 网站建设知识平台wordpress地址修改
  • 广州市城乡和建设局网站首页局域网
  • 京东网站建设的目标买空间送网站模板
  • 青海网站建设公司哪家好wordpress 插件破解
  • 深圳新型材料网站建设特产网站怎么做
  • 推广型网站制作哪家好东营市建设局官网
  • 网站开发中 登录不上了php网站模板制作软件
  • 网站服务器环境不支持mysql数据库软文推广去哪个平台好
  • 搜索引擎有哪些分类深圳网站维护优化
  • 单位网站建设典型材料中山企业网站推广
  • 广州穗科建设监理有限公司网站wordpress文章表情插件
  • 网站制作公司下免费wordpress网站模板
  • 网站付费推广有哪些湖北网官网
  • 最新网站建设的模板html旅游网页完整代码
  • 做电影网站资源哪里来的管家婆crm123696
  • 如何做网站写手苏州外贸网站制作公司
  • 个人网站作品wordpress缓存插件破解版
  • 网上做效果图网站有哪些软件网店营业执照
  • 中国空间站距离地面多少公里酒店网站建设哪家好
  • 为企业做网站建设优化小程序包年竞价上海网络推广产品
  • 网站内部搜索怎么做seo合作
  • 开展我国电子网站建设建wordpress
  • 建立一个购物网站需要多少钱韩城建设公司网站
  • 国内做的比较简洁的网站北海网站制作
  • 旅游网站建设前的市场分析html5企业网站开发
  • asp.net 2.0网站开发全程解析 下载j2ee网站开发
  • 石龙网站仿做学校部门网站建设
  • 自己做响应式网站难吗武陟县住房和城乡建设局网站
  • 怎么用wordpress建立本地网站wordpress 注册链接
  • 网站推广上首页云浮北京网站建设