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

单页面个人网站企业建网站的意义

单页面个人网站,企业建网站的意义,开网店的流程及程序,汽车网站模版播放器有个功能#xff0c;当用户打开视频时#xff0c;需要读取媒体文件的总时长等信息#xff0c;不巧的时#xff0c;获取FLV时总失败#xff0c;下面来具体分析下FLV和MP4获取总时长的原因和区别#xff1a; 播放器有个获取MediaInfo的接口#xff0c;功能如下当用户打开视频时需要读取媒体文件的总时长等信息不巧的时获取FLV时总失败下面来具体分析下FLV和MP4获取总时长的原因和区别 播放器有个获取MediaInfo的接口功能如下 int MediaFFmpeg::DecoderGetMediaInfo(MediaInfo *mi,AVCodecContext *decodec_ctx,AVStream *stream){if(!mi || !stream || !decodec_ctx){return -1;}//videoif(stream-codecpar-codec_type AVMEDIA_TYPE_VIDEO){//获取视频总时长if(AV_NOPTS_VALUE ! stream-duration){mi-duration stream-duration * av_q2d(stream-time_base);std::cout video_time : (mi-duration / 3600) : (mi-duration % 3600) / 60 : (mi-duration % 60) std::endl;char formatStr[128] {0,};sprintf(formatStr, %02d:%02d:%02d,(mi-duration / 3600),((mi-duration % 3600) / 60),(mi-duration % 60));mi-durationFormatStr formatStr;}else{printf(audio duration unknown ! \n);}mi-width stream-codecpar-width;mi-height stream-codecpar-height;}//audioelse if(stream-codecpar-codec_type AVMEDIA_TYPE_AUDIO){mi-sample_fmt AV_SAMPLE_FMT_S16;mi-sample_rate decodec_ctx-sample_rate; //采样率/*48000; */mi-channels decodec_ctx-channels; //通道数/*1; */mi-nb_samples decodec_ctx-frame_size;/*1024; */mi-audio_buffer_size av_samples_get_buffer_size(NULL, mi-channels, mi-nb_samples, (enum AVSampleFormat)mi-sample_fmt, 1); //输出buff}return 0; }有经验的人可能很快就能看出来是否存在问题。 总是打印duration不合法 很奇怪的是使用av_dump_format函数可以看到Duration: Input #0, flv, from /home/zhenghui/视频/1080P.flv:Metadata:major_brand : isomminor_version : 512compatible_brands: isomiso2avc1mp41description : Packed by Bilibili XCoder v2.0.2encoder : Lavf60.3.100Duration: 00:03:46.53, start: 0.000000, bitrate: 3309 kb/sStream #0:0: Video: flv1, yuv420p, 1920x1080, 200 kb/s, 30 fps, 30 tbr, 1k tbnStream #0:1: Audio: adpcm_swf, 44100 Hz, stereo, s16, 352 kb/s就翻了翻ffmpeg的源码找到了av_dump_format的源码 void av_dump_format(AVFormatContext *ic, int index,const char *url, int is_output) {int i;uint8_t *printed ic-nb_streams ? av_mallocz(ic-nb_streams) : NULL;if (ic-nb_streams !printed)return;av_log(NULL, AV_LOG_INFO, %s #%d, %s, %s %s:\n,is_output ? Output : Input,index,is_output ? ic-oformat-name : ic-iformat-name,is_output ? to : from, url);dump_metadata(NULL, ic-metadata, );if (!is_output) {av_log(NULL, AV_LOG_INFO, Duration: );if (ic-duration ! AV_NOPTS_VALUE) {int64_t hours, mins, secs, us;int64_t duration ic-duration (ic-duration INT64_MAX - 5000 ? 5000 : 0);secs duration / AV_TIME_BASE;us duration % AV_TIME_BASE;mins secs / 60;secs % 60;hours mins / 60;mins % 60;av_log(NULL, AV_LOG_INFO, %02PRId64:%02PRId64:%02PRId64.%02PRId64, hours, mins, secs,(100 * us) / AV_TIME_BASE);} else {av_log(NULL, AV_LOG_INFO, N/A);}if (ic-start_time ! AV_NOPTS_VALUE) {int secs, us;av_log(NULL, AV_LOG_INFO, , start: );secs llabs(ic-start_time / AV_TIME_BASE);us llabs(ic-start_time % AV_TIME_BASE);av_log(NULL, AV_LOG_INFO, %s%d.%06d,ic-start_time 0 ? : -,secs,(int) av_rescale(us, 1000000, AV_TIME_BASE));}av_log(NULL, AV_LOG_INFO, , bitrate: );if (ic-bit_rate)av_log(NULL, AV_LOG_INFO, %PRId64 kb/s, ic-bit_rate / 1000);elseav_log(NULL, AV_LOG_INFO, N/A);av_log(NULL, AV_LOG_INFO, \n);}if (ic-nb_chapters)av_log(NULL, AV_LOG_INFO, Chapters:\n);for (i 0; i ic-nb_chapters; i) {const AVChapter *ch ic-chapters[i];av_log(NULL, AV_LOG_INFO, Chapter #%d:%d: , index, i);av_log(NULL, AV_LOG_INFO,start %f, , ch-start * av_q2d(ch-time_base));av_log(NULL, AV_LOG_INFO,end %f\n, ch-end * av_q2d(ch-time_base));dump_metadata(NULL, ch-metadata, );}if (ic-nb_programs) {int j, k, total 0;for (j 0; j ic-nb_programs; j) {const AVProgram *program ic-programs[j];const AVDictionaryEntry *name av_dict_get(program-metadata,name, NULL, 0);av_log(NULL, AV_LOG_INFO, Program %d %s\n, program-id,name ? name-value : );dump_metadata(NULL, program-metadata, );for (k 0; k program-nb_stream_indexes; k) {dump_stream_format(ic, program-stream_index[k],index, is_output);printed[program-stream_index[k]] 1;}total program-nb_stream_indexes;}if (total ic-nb_streams)av_log(NULL, AV_LOG_INFO, No Program\n);}for (i 0; i ic-nb_streams; i)if (!printed[i])dump_stream_format(ic, i, index, is_output);av_free(printed); } av_dump_format函数中使用的是AVFormatContext中的duration而我使用的是AVStream的duration。 Debug了一下AVFormatContext中的duration确实存在 继续跟踪到AVStream的调用位置确实不存在 最终修改如下得已解决 int MediaFFmpeg::DecoderGetMediaInfo(MediaInfo *mi,AVFormatContext *ic,AVCodecContext *decodec_ctx,AVStream *stream){if(!mi || !stream || !decodec_ctx){return -1;}//videoif(stream-codecpar-codec_type AVMEDIA_TYPE_VIDEO){//获取视频总时长if(AV_NOPTS_VALUE ! ic-duration){int64_t hours, mins, secs, us;int64_t duration ic-duration (ic-duration INT64_MAX - 5000 ? 5000 : 0);secs duration / AV_TIME_BASE;us duration % AV_TIME_BASE;mins secs / 60;secs % 60;hours mins / 60;mins % 60;mi-duration duration;char formatStr[128] {0,};sprintf(formatStr, %02ld:%02ld:%02ld,hours,mins,secs); // mi-duration ic-duration * av_q2d(stream-time_base); // std::cout video_time : // (mi-duration / 3600) : // (mi-duration % 3600) / 60 : // (mi-duration % 60) std::endl;// char formatStr[128] {0,}; // sprintf(formatStr, %02d:%02d:%02d, // (mi-duration / 3600), // ((mi-duration % 3600) / 60), // (mi-duration % 60));std::cout video_time : formatStr;mi-durationFormatStr formatStr;}else{printf(audio duration unknown ! \n);}mi-width stream-codecpar-width;mi-height stream-codecpar-height;}.........return 0; }
http://www.pierceye.com/news/67566/

相关文章:

  • 南宁企业网站制作哪家好企业所得税怎么缴纳
  • 贵阳北京小学网站建设域名购买成功后网站怎么建设
  • 网站开发的项目经验下载网站如何做
  • 搭建网站兼职app简易开发平台
  • wordpress建站教程jiuyou嘉兴制作网站机构
  • 上海沙龙网站建设做食品企业网站的费用
  • 做营销网站建设挣钱吗深圳做外贸网站哪家好
  • 阜新网站优化电脑培训班在哪里有最近的
  • 免费域名 网站企业app定制开发设计方案
  • 网站没有备案可以做百度推广吗哪个网站可以接广告做
  • 仿站小工具wordpress兰州网站建设哪家公司好
  • 网站建设公司收费wordpress仪表盘登陆
  • 广州网站建设是什么意思wordpress自定义查询详解
  • 苏州网站制作好的公司电子工程网介绍
  • 整容网站模板成都建设信息网官网
  • 网站没备案免费的个人网站注册
  • 在哪几个网站里可以做淘客惠州网站设计
  • 品辰设计的网站谁做的小程序商城哪家好服务
  • 想开一个外企的网站怎么超做上海公司注册网上查名
  • 网站流量分成北京软件公司有多少家
  • 一级 爰做片免费网站企业招聘网站大全免费
  • 韩雪冬网站设计现在建设网站都用什么软件
  • 公司网站建设的环境分析内蒙古网站建设价格
  • 百度站长工具平台网站备案幕布怎么申请
  • 做网站的公司前三名视频制作软件教程
  • 免费查找企业信息的网站中国排名前十互联网公司
  • nike网站建设方案成都管控最新通告
  • 简述企业网站推广的一般策略wordpress优化搜索引擎
  • wordpress 分类目录图片如何做公司网站优化
  • 哈尔滨品牌建站软件专门做投标书的网站