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

网站开发设计图片丝印网版制作

网站开发设计图片,丝印网版制作,电子商务网站建设的评估,自己网站做seo该方法只能解码裸流。 1、使用avcodec_find_decoder查找解码器 根据使用解码器类型#xff0c;决定是解码音频还是解码视频。 2、 使用av_parser_init获取裸流解析器和方法 3、使用avcodec_alloc_context3分配编解码器上下文 4、使用avcodec_open2将解码器和解码器上下文…该方法只能解码裸流。 1、使用avcodec_find_decoder查找解码器 根据使用解码器类型决定是解码音频还是解码视频。 2、 使用av_parser_init获取裸流解析器和方法 3、使用avcodec_alloc_context3分配编解码器上下文 4、使用avcodec_open2将解码器和解码器上下文进行关联 5、使用fopen打开输入、输出文件 6、使用fread读取文件 7、使用av_frame_alloc分配存储解码数据结构体以接收解码数据 8、使用av_parser_parse2解析数据包获取到编码后的音视频帧将获取到的音视频帧使用avcodec_send_packet发送到解码器上下文使用avcodec_receive_frame接收解码后的数据将解码后的数据根据相应格式写入文件中 /** * projectName 07-05-decode_audio * brief 解码音频主要的测试格式aac和mp3 * author Liao Qingfu * date 2020-01-16 */ #include stdio.h #include stdlib.h #include string.h#include libavutil/frame.h #include libavutil/mem.h#include libavcodec/avcodec.h#define AUDIO_INBUF_SIZE 20480 #define AUDIO_REFILL_THRESH 4096static char err_buf[128] {0}; static char* av_get_err(int errnum) {av_strerror(errnum, err_buf, 128);return err_buf; }static void print_sample_format(const AVFrame *frame) {printf(ar-samplerate: %uHz\n, frame-sample_rate);printf(ac-channel: %u\n, frame-channels);printf(f-format: %u\n, frame-format);// 格式需要注意实际存储到本地文件时已经改成交错模式 }static void decode(AVCodecContext *dec_ctx, AVPacket *pkt, AVFrame *frame,FILE *outfile) {int i, ch;int ret, data_size;/* send the packet with the compressed data to the decoder */ret avcodec_send_packet(dec_ctx, pkt);if(ret AVERROR(EAGAIN)){fprintf(stderr, Receive_frame and send_packet both returned EAGAIN, which is an API violation.\n);}else if (ret 0){fprintf(stderr, Error submitting the packet to the decoder, err:%s, pkt_size:%d\n,av_get_err(ret), pkt-size); // exit(1);return;}/* read all the output frames (infile general there may be any number of them */while (ret 0){// 对于frame, avcodec_receive_frame内部每次都先调用ret avcodec_receive_frame(dec_ctx, frame);if (ret AVERROR(EAGAIN) || ret AVERROR_EOF)return;else if (ret 0){fprintf(stderr, Error during decoding\n);exit(1);}data_size av_get_bytes_per_sample(dec_ctx-sample_fmt);if (data_size 0){/* This should not occur, checking just for paranoia */fprintf(stderr, Failed to calculate data size\n);exit(1);}static int s_print_format 0;if(s_print_format 0){s_print_format 1;print_sample_format(frame);}/**P表示Planar平面其数据格式排列方式为 :LLLLLLRRRRRRLLLLLLRRRRRRLLLLLLRRRRRRL...每个LLLLLLRRRRRR为一个音频帧而不带P的数据格式即交错排列排列方式为LRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLRL...每个LR为一个音频样本播放范例 ffplay -ar 48000 -ac 2 -f f32le believe.pcm*/for (i 0; i frame-nb_samples; i){for (ch 0; ch dec_ctx-channels; ch) // 交错的方式写入, 大部分float的格式输出fwrite(frame-data[ch] data_size*i, 1, data_size, outfile);}} } // 播放范例 ffplay -ar 48000 -ac 2 -f f32le believe.pcm int main(int argc, char **argv) {const char *outfilename;const char *filename;const AVCodec *codec;AVCodecContext *codec_ctx NULL;AVCodecParserContext *parser NULL;int len 0;int ret 0;FILE *infile NULL;FILE *outfile NULL;uint8_t inbuf[AUDIO_INBUF_SIZE AV_INPUT_BUFFER_PADDING_SIZE];uint8_t *data NULL;size_t data_size 0;AVPacket *pkt NULL;AVFrame *decoded_frame NULL;if (argc 0){fprintf(stderr, Usage: %s input file output file\n, argv[0]);exit(0);}filename believe.aac;outfilename believe.pcm;pkt av_packet_alloc();// 如果需要解码视频则修改为对应视频解码器IDenum AVCodecID audio_codec_id AV_CODEC_ID_AAC;if(strstr(filename, aac) ! NULL){audio_codec_id AV_CODEC_ID_AAC;}else if(strstr(filename, mp3) ! NULL){audio_codec_id AV_CODEC_ID_MP3;}else{printf(default codec id:%d\n, audio_codec_id);}// 查找解码器codec avcodec_find_decoder(audio_codec_id); // AV_CODEC_ID_AACif (!codec) {fprintf(stderr, Codec not found\n);exit(1);}// 获取裸流的解析器 AVCodecParserContext(数据) AVCodecParser(方法)parser av_parser_init(codec-id);if (!parser) {fprintf(stderr, Parser not found\n);exit(1);}// 分配codec上下文codec_ctx avcodec_alloc_context3(codec);if (!codec_ctx) {fprintf(stderr, Could not allocate audio codec context\n);exit(1);}// 将解码器和解码器上下文进行关联if (avcodec_open2(codec_ctx, codec, NULL) 0) {fprintf(stderr, Could not open codec\n);exit(1);}// 打开输入文件infile fopen(filename, rb);if (!infile) {fprintf(stderr, Could not open %s\n, filename);exit(1);}// 打开输出文件outfile fopen(outfilename, wb);if (!outfile) {av_free(codec_ctx);exit(1);}// 读取文件进行解码data inbuf;data_size fread(inbuf, 1, AUDIO_INBUF_SIZE, infile);while (data_size 0){if (!decoded_frame){if (!(decoded_frame av_frame_alloc())){fprintf(stderr, Could not allocate audio frame\n);exit(1);}}ret av_parser_parse2(parser, codec_ctx, pkt-data, pkt-size,data, data_size,AV_NOPTS_VALUE, AV_NOPTS_VALUE, 0);if (ret 0){fprintf(stderr, Error while parsing\n);exit(1);}data ret; // 跳过已经解析的数据data_size - ret; // 对应的缓存大小也做相应减小if (pkt-size)decode(codec_ctx, pkt, decoded_frame, outfile);if (data_size AUDIO_REFILL_THRESH) // 如果数据少了则再次读取{memmove(inbuf, data, data_size); // 把之前剩的数据拷贝到buffer的起始位置data inbuf;// 读取数据 长度: AUDIO_INBUF_SIZE - data_sizelen fread(data data_size, 1, AUDIO_INBUF_SIZE - data_size, infile);if (len 0)data_size len;}}/* 冲刷解码器 */pkt-data NULL; // 让其进入drain modepkt-size 0;decode(codec_ctx, pkt, decoded_frame, outfile);fclose(outfile);fclose(infile);avcodec_free_context(codec_ctx);av_parser_close(parser);av_frame_free(decoded_frame);av_packet_free(pkt);printf(main finish, please enter Enter and exit\n);return 0; }
文章转载自:
http://www.morning.sgrdp.cn.gov.cn.sgrdp.cn
http://www.morning.nhpmn.cn.gov.cn.nhpmn.cn
http://www.morning.clndl.cn.gov.cn.clndl.cn
http://www.morning.wkpfm.cn.gov.cn.wkpfm.cn
http://www.morning.lqqqh.cn.gov.cn.lqqqh.cn
http://www.morning.srbmc.cn.gov.cn.srbmc.cn
http://www.morning.dqxph.cn.gov.cn.dqxph.cn
http://www.morning.xpmwt.cn.gov.cn.xpmwt.cn
http://www.morning.qggcc.cn.gov.cn.qggcc.cn
http://www.morning.cykqb.cn.gov.cn.cykqb.cn
http://www.morning.rdqzl.cn.gov.cn.rdqzl.cn
http://www.morning.zwmjq.cn.gov.cn.zwmjq.cn
http://www.morning.ydhmt.cn.gov.cn.ydhmt.cn
http://www.morning.bqfpm.cn.gov.cn.bqfpm.cn
http://www.morning.fhxrb.cn.gov.cn.fhxrb.cn
http://www.morning.srltq.cn.gov.cn.srltq.cn
http://www.morning.dzqr.cn.gov.cn.dzqr.cn
http://www.morning.mtcnl.cn.gov.cn.mtcnl.cn
http://www.morning.krkwh.cn.gov.cn.krkwh.cn
http://www.morning.zfhzx.cn.gov.cn.zfhzx.cn
http://www.morning.rhkq.cn.gov.cn.rhkq.cn
http://www.morning.dpsyr.cn.gov.cn.dpsyr.cn
http://www.morning.pbtrx.cn.gov.cn.pbtrx.cn
http://www.morning.qfgxk.cn.gov.cn.qfgxk.cn
http://www.morning.pmtky.cn.gov.cn.pmtky.cn
http://www.morning.sfsjh.cn.gov.cn.sfsjh.cn
http://www.morning.rjmb.cn.gov.cn.rjmb.cn
http://www.morning.llllcc.com.gov.cn.llllcc.com
http://www.morning.kstlm.cn.gov.cn.kstlm.cn
http://www.morning.fykrm.cn.gov.cn.fykrm.cn
http://www.morning.bkfdf.cn.gov.cn.bkfdf.cn
http://www.morning.lsfbb.cn.gov.cn.lsfbb.cn
http://www.morning.nqfxq.cn.gov.cn.nqfxq.cn
http://www.morning.rtsx.cn.gov.cn.rtsx.cn
http://www.morning.nxpqw.cn.gov.cn.nxpqw.cn
http://www.morning.rqnhf.cn.gov.cn.rqnhf.cn
http://www.morning.cttti.com.gov.cn.cttti.com
http://www.morning.pxlsh.cn.gov.cn.pxlsh.cn
http://www.morning.gwsll.cn.gov.cn.gwsll.cn
http://www.morning.tntqr.cn.gov.cn.tntqr.cn
http://www.morning.dbrpl.cn.gov.cn.dbrpl.cn
http://www.morning.trjp.cn.gov.cn.trjp.cn
http://www.morning.ngjpt.cn.gov.cn.ngjpt.cn
http://www.morning.ysqb.cn.gov.cn.ysqb.cn
http://www.morning.dmtld.cn.gov.cn.dmtld.cn
http://www.morning.tqhpt.cn.gov.cn.tqhpt.cn
http://www.morning.wjdgx.cn.gov.cn.wjdgx.cn
http://www.morning.jpnfm.cn.gov.cn.jpnfm.cn
http://www.morning.yrddl.cn.gov.cn.yrddl.cn
http://www.morning.wsxxq.cn.gov.cn.wsxxq.cn
http://www.morning.gnbfj.cn.gov.cn.gnbfj.cn
http://www.morning.wlggr.cn.gov.cn.wlggr.cn
http://www.morning.ltfnl.cn.gov.cn.ltfnl.cn
http://www.morning.xxsrm.cn.gov.cn.xxsrm.cn
http://www.morning.xhfky.cn.gov.cn.xhfky.cn
http://www.morning.tzrmp.cn.gov.cn.tzrmp.cn
http://www.morning.gwhjy.cn.gov.cn.gwhjy.cn
http://www.morning.ltksw.cn.gov.cn.ltksw.cn
http://www.morning.xhkgl.cn.gov.cn.xhkgl.cn
http://www.morning.bctr.cn.gov.cn.bctr.cn
http://www.morning.djpps.cn.gov.cn.djpps.cn
http://www.morning.dnjwm.cn.gov.cn.dnjwm.cn
http://www.morning.ymyhg.cn.gov.cn.ymyhg.cn
http://www.morning.lgqdl.cn.gov.cn.lgqdl.cn
http://www.morning.fqtdz.cn.gov.cn.fqtdz.cn
http://www.morning.skdhm.cn.gov.cn.skdhm.cn
http://www.morning.gqjqf.cn.gov.cn.gqjqf.cn
http://www.morning.srhqm.cn.gov.cn.srhqm.cn
http://www.morning.cgtfl.cn.gov.cn.cgtfl.cn
http://www.morning.kqzt.cn.gov.cn.kqzt.cn
http://www.morning.lsnnq.cn.gov.cn.lsnnq.cn
http://www.morning.zrwlz.cn.gov.cn.zrwlz.cn
http://www.morning.mbrbk.cn.gov.cn.mbrbk.cn
http://www.morning.lkjzz.cn.gov.cn.lkjzz.cn
http://www.morning.mxgpp.cn.gov.cn.mxgpp.cn
http://www.morning.jfjfk.cn.gov.cn.jfjfk.cn
http://www.morning.yzygj.cn.gov.cn.yzygj.cn
http://www.morning.xnnpy.cn.gov.cn.xnnpy.cn
http://www.morning.dfbeer.com.gov.cn.dfbeer.com
http://www.morning.fhbhr.cn.gov.cn.fhbhr.cn
http://www.tj-hxxt.cn/news/250239.html

相关文章:

  • 三维网站是怎么做的建立什么填词语
  • 广告推广媒体外贸网站优化排名
  • 网站开发 自动生成缩略图郑州网站建设开拓者
  • 建设网站过程1000学习做网站贵吗
  • 比特币做空网站京东网站开发费用
  • 最新提升关键词排名软件关键词如何优化排名
  • wordpress网站的根目录在哪里河南纯手工seo
  • 网站建设包括深圳网站建设服务哪些便宜
  • 网站开发一个模板费用wordpress列表提取文章第一张图
  • 自己做的网站改变字体如何下载js做的网站
  • 电商网站设计注意事项wordpress 判断文章页
  • 石狮app网站开发价格什么叫网站策划书
  • 怎样把自己做的网站发到网上美食网站开发报告
  • 双一流建设网站网站建设公司业务提成多少
  • 乐清建设路小学网站外贸soho怎么建网站
  • 海南网站建设小强网站建设和管理存在的问题
  • 网站底部怎么做需要放些什么网站建设菜鸟教程
  • 中国建设监理协会网站个人会员系统栏wordpress apache2
  • 铜陵网站制作如何做营销推广
  • 网站建设合同附件格式社区app网站模板下载
  • 建筑设计网站网址wordpress模板帮助文档
  • 大连网站网络公司企业网站的重要性
  • php学多久可以做网站dw个人网站模板下载
  • 南通长城建设集团有限公司网站系部网站建设方案
  • 公司网站建站要多少钱天津做推广的公司
  • 东莞企业自助建站系统企业网站策划论文
  • 企业网站seo维护如何修改asp网站栏目
  • 徐州建立网站成都有实力的网站建设
  • 电商网站规划论文中移电子商务有限公司为什么扣款
  • 网站开发西安手机网站怎样建设