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

请描述网站开发的一般流程图做影视网站需要多大硬盘

请描述网站开发的一般流程图,做影视网站需要多大硬盘,南通网站排名公司,做湲网站文章目录 流程api核心代码muxer.hmuxer.cpp aac 和 h264 封装为视频流#xff0c;封装为c的Muxter类 流程 分配视频文件上下文 int Init(const char *url); 创建流#xff0c;赋值给视频的音频流和视频流 int AddStream(AVCodecContext *codec_ctx); 写视频流的head int Se… 文章目录 流程api核心代码muxer.hmuxer.cpp aac 和 h264 封装为视频流封装为c的Muxter类 流程 分配视频文件上下文 int Init(const char *url); 创建流赋值给视频的音频流和视频流 int AddStream(AVCodecContext *codec_ctx); 写视频流的head int SendHeader(); 写视频流的packet需要转换packet的pts和dts , 值为 原有pts * 编码时间基/ 视频流的时间基 int SendPacket(AVPacket *packet) 写视频流的trail int SendTrailer(); 释放资源 void DeInit(); api int64_t av_rescale_q(int64_t a, AVRational bq, AVRational cq) av_const // 时间基转换函数 , 计算结果为 a * bq / cq 核心代码 muxer.h #ifndef MUXER_H #define MUXER_H #include iostream extern C { #include libavformat/avformat.h #include libavcodec/avcodec.h }class Muxer { public:Muxer();~Muxer();// 输出文件 返回0值异常// 初始化int Init(const char *url);// 资源释放void DeInit();// 创建流int AddStream(AVCodecContext *codec_ctx);// 写流int SendHeader();int SendPacket(AVPacket *packet);int SendTrailer();int Open(); // avio open private:AVFormatContext *fmt_ctx_ NULL;std::string url_ ;// 编码器上下文AVCodecContext *aud_codec_ctx_ NULL;AVStream *aud_stream_ NULL;AVCodecContext *vid_codec_ctx_ NULL;AVStream *vid_stream_ NULL;int audio_index_ -1;int video_index_ -1; };#endif // MUXER_H muxer.cpp #include muxer.hMuxer::Muxer() {}Muxer::~Muxer() {}int Muxer::Init(const char *url) {int ret avformat_alloc_output_context2(fmt_ctx_, NULL, NULL,url);if(ret ! 0) {char errbuf[1024] {0};av_strerror(ret, errbuf, sizeof(errbuf) - 1);printf(avformat_alloc_output_context2 failed:%s\n, ret);return -1;}url_ url;return 0; }void Muxer::DeInit() {if(fmt_ctx_) {avformat_close_input(fmt_ctx_);}url_ ;aud_codec_ctx_ NULL;aud_stream_ NULL;audio_index_ -1;vid_codec_ctx_ NULL;vid_stream_ NULL;video_index_ -1; }int Muxer::AddStream(AVCodecContext *codec_ctx) {if(!fmt_ctx_) {printf(fmt ctx is NULL\n);return -1;}if(!codec_ctx) {printf(codec ctx is NULL\n);return -1;}AVStream *st avformat_new_stream(fmt_ctx_, NULL);if(!st) {printf(avformat_new_stream failed\n);return -1;}// st-codecpar-codec_tag 0;// 从编码器上下文复制, 根据提供的编解码器的值填充参数结构avcodec_parameters_from_context(st-codecpar, codec_ctx);av_dump_format(fmt_ctx_, 0, url_.c_str(), 1);// 判断当前的是视频流还是音频流if(codec_ctx-codec_type AVMEDIA_TYPE_AUDIO) {aud_codec_ctx_ codec_ctx;aud_stream_ st;audio_index_ st-index;} else if(codec_ctx-codec_type AVMEDIA_TYPE_VIDEO) {vid_codec_ctx_ codec_ctx;vid_stream_ st;video_index_ st-index;}return 0; }int Muxer::SendHeader() {if(!fmt_ctx_) {printf(fmt ctx is NULL\n);return -1;}int ret avformat_write_header(fmt_ctx_, NULL);if(ret ! 0) {char errbuf[1024] {0};av_strerror(ret, errbuf, sizeof(errbuf) - 1);printf(avformat_write_header failed:%s\n, ret);return -1;}return 0; }int Muxer::SendPacket(AVPacket *packet) {int stream_index packet-stream_index;if(!packet || packet-size 0 || !packet-data) {printf(packet is null\n);if(packet)av_packet_free(packet);return -1;}AVRational src_time_base; // 编码后的包AVRational dst_time_base; // mp4输出文件对应流的time_baseif(vid_stream_ vid_codec_ctx_ stream_index video_index_) {src_time_base vid_codec_ctx_-time_base;dst_time_base vid_stream_-time_base;} else if(aud_stream_ aud_codec_ctx_ stream_index audio_index_) {src_time_base aud_codec_ctx_-time_base;dst_time_base aud_stream_-time_base;}// 时间基转换// int64_t av_rescale_q(int64_t a, AVRational bq, AVRational cq) av_const;// 时间基转换函数 a * bq / cqpacket-pts av_rescale_q(packet-pts, src_time_base, dst_time_base);packet-dts av_rescale_q(packet-dts, src_time_base, dst_time_base);packet-duration av_rescale_q(packet-duration, src_time_base, dst_time_base);int ret 0;//写packetret av_interleaved_write_frame(fmt_ctx_, packet); // 不是立即写入文件内部缓存主要是对pts进行排序// ret av_write_frame(fmt_ctx_, packet);av_packet_free(packet);if(ret 0) {return 0;}else {char errbuf[1024] {0};av_strerror(ret, errbuf, sizeof(errbuf) - 1);printf(avformat_write_header failed:%s\n, ret);return -1;} }int Muxer::SendTrailer() {if(!fmt_ctx_) {printf(fmt ctx is NULL\n);return -1;}int ret av_write_trailer(fmt_ctx_);if(ret ! 0) {char errbuf[1024] {0};av_strerror(ret, errbuf, sizeof(errbuf) - 1);printf(av_write_trailer failed:%s\n, ret);return -1;}return 0; }
http://www.hkea.cn/news/14499513/

相关文章:

  • 高端网站建设定制百度统计数据
  • 网站后台管理系统用什么软件做鄂州网站制作
  • 网站开通宣传怎么写asp做网站安全性
  • 潍坊响应式网站建设系统工具
  • 手机网站seo免费软件郑州高端网站定制公司
  • 网站设计的创新点单人网站制作
  • 好看的个人网站设计wordpress加入HTML失败
  • 网站的备案可以管几年wordpress主题摘要字数
  • 做公司网站需注意什么dw软件代码大全
  • z怎么建设视频网站株洲网站建设联系方式
  • 汕头如何建设网站设计电子商务网站建设子项目
  • 公司展示网站制作wordpress自定义字段数据库
  • 在线小公司网站制作海淀网站开发的公司
  • 汝阳网站开发沈阳健网站
  • 手机端网站建设的注意事项文安做网站shijuewang
  • 江西建网站做优化怎样免费建企业网站
  • 校园综合门户网站建设方案网站换服务器 备案
  • 网站cms现代网站制作
  • 网站建设推广话术上海网站建设品牌
  • 建设企业网站需要哪些东西应用市场app下载安装到手机
  • 房天下怎样快速做网站如何开发网站
  • 美团网站建设中企动力员工邮箱忘记密码
  • 安全网站建设陕西网站建设陕icp备
  • 建站快车的功能介绍邯郸网站设计报价
  • 电子商务网站建设应用网页设计培训班一般多少人
  • 天津市武清区网站建设西安哪有建网站的
  • 自建房设计网站推荐深圳设计网站建设公司
  • 衡水网站网站建设西安淘宝网站建设公司排名
  • 网站的设计过程潍坊网站建设服务跟
  • 深圳哪家公司做网站如何建设提卡网站