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

电商网站建设模板wordpress 添加目录权限

电商网站建设模板,wordpress 添加目录权限,wordpress 外部链接跳转,中国菲律宾最新局势一、引言 通过FFmpeg命令#xff1a; ./ffmpeg -i XXX.ps 可以判断出某个文件是否为PS文件#xff1a; 所以FFmpeg是怎样判断出某个文件是否为PS文件呢#xff1f;它内部其实是通过mpegps_probe函数来判断的。从《FFmpeg源码#xff1a;av_probe_input_format3函数和AVI…一、引言 通过FFmpeg命令 ./ffmpeg -i XXX.ps 可以判断出某个文件是否为PS文件 所以FFmpeg是怎样判断出某个文件是否为PS文件呢它内部其实是通过mpegps_probe函数来判断的。从《FFmpeg源码av_probe_input_format3函数和AVInputFormat结构体分析FFmpeg源码5.0.3版本》和《7.0.1版本的FFmpeg源码中av_probe_input_format3函数和AVInputFormat结构体的改变》 中可以知道FFmpeg源码中实现容器格式检测的函数是av_probe_input_format3函数其内部通过循环while ((fmt1 av_demuxer_iterate(i))) 拿到所有容器格式对应的AVInputFormat结构然后通过score fmt1-read_probe(lpd)语句执行不同容器格式对应的解析函数根据是否能被解析以及匹配程度来判断出这是哪种容器格式。而PS文件对应的解析函数就是mpegps_probe函数。 二、mpegps_probe函数的定义 mpegps_probe函数定义在FFmpeg源码本文演示用的FFmpeg源码版本为7.0.1的源文件libavformat/mpeg.c中 static int mpegps_probe(const AVProbeData *p) {uint32_t code -1;int i;int sys 0, pspack 0, priv1 0, vid 0;int audio 0, invalid 0, score 0;int endpes 0;for (i 0; i p-buf_size; i) {code (code 8) p-buf[i];if ((code 0xffffff00) 0x100) {int len p-buf[i 1] 8 | p-buf[i 2];int pes endpes i check_pes(p-buf i, p-buf p-buf_size);int pack check_pack_header(p-buf i);if (code SYSTEM_HEADER_START_CODE)sys;else if (code PACK_START_CODE pack)pspack;else if ((code 0xf0) VIDEO_ID pes) {endpes i len;vid;}// skip pes payload to avoid start code emulation for private// and audio streamselse if ((code 0xe0) AUDIO_ID pes) {audio; ilen;}else if (code PRIVATE_STREAM_1 pes) {priv1; ilen;}else if (code 0x1fd pes) vid; //VC1else if ((code 0xf0) VIDEO_ID !pes) invalid;else if ((code 0xe0) AUDIO_ID !pes) invalid;else if (code PRIVATE_STREAM_1 !pes) invalid;}}if (vid audio invalid 1) /* invalid VDR files nd short PES streams */score AVPROBE_SCORE_EXTENSION / 2;// av_log(NULL, AV_LOG_ERROR, vid:%d aud:%d sys:%d pspack:%d invalid:%d size:%d \n, // vid, audio, sys, pspack, invalid, p-buf_size);if (sys invalid sys * 9 pspack * 10)return (audio 12 || vid 3 || pspack 2) ? AVPROBE_SCORE_EXTENSION 2: AVPROBE_SCORE_EXTENSION / 2 (audio vid pspack 1); // 1 more than mp3if (pspack invalid (priv1 vid audio) * 10 pspack * 9)return pspack 2 ? AVPROBE_SCORE_EXTENSION 2: AVPROBE_SCORE_EXTENSION / 2; // 1 more than .mpgif ((!!vid ^ !!audio) (audio 4 || vid 1) !sys !pspack p-buf_size 2048 vid audio invalid) /* PES stream */return (audio 12 || vid 6 2 * invalid) ? AVPROBE_SCORE_EXTENSION 2: AVPROBE_SCORE_EXTENSION / 2;// 02-Penguin.flac has sys:0 priv1:0 pspack:0 vid:0 audio:1// mp3_misidentified_2.mp3 has sys:0 priv1:0 pspack:0 vid:0 audio:6// Have\ Yourself\ a\ Merry\ Little\ Christmas.mp3 0 0 0 5 0 1 len:21618return score; } 该函数的作用就是检测某个文件是否为PS文件。 形参p输入型参数为AVProbeData类型的指针。 AVProbeData结构体声明在libavformat/avformat.h中 /*** This structure contains the data a format has to probe a file.*/ typedef struct AVProbeData {const char *filename;unsigned char *buf; /** Buffer must have AVPROBE_PADDING_SIZE of extra allocated bytes filled with zero. */int buf_size; /** Size of buf except extra allocated bytes */const char *mime_type; /** mime_type, when known. */ } AVProbeData; p-filename为需要被推测格式的文件的路径。 p-buf指向“存放从路径为p-filename的PS文件中读取出来的二进制数据”的缓冲区。 p-buf_size缓冲区p-buf的大小单位为字节。注FFmpeg判断某个文件的格式时不会读取完整个文件只会读取它前面的一部分比如最开始的2048个字节。只要根据前面的这些字节就足够判断出它的格式了所以p-buf_size的值一般就是2048。 p-mime_type一般为NULL可忽略。 返回值返回一个类型为整形的分值。返回0表示该文件完全不符合PS格式。返回的值越接近100表示该文件越符合PS格式。 三、mpegps_probe函数的内部实现分析 mpegps_probe函数中首先会定义整形变量。其中变量sys表示这段长度为p-buf_size的码流中system header的个数pspack为这段码流中pack header的个数priv1为这段码流中私有流的个数vid为这段码流中视频流的个数 int sys 0, pspack 0, priv1 0, vid 0; 不断读取出存放在数组p-buf[i]中的二进制码流数据 for (i 0; i p-buf_size; i) {code (code 8) p-buf[i];if ((code 0xffffff00) 0x100) {//...}} 宏SYSTEM_HEADER_START_CODE定义在libavformat/mpeg.h中值为0x000001bb表示system header的起始码system header的system_header_start_code属性 #define SYSTEM_HEADER_START_CODE ((unsigned int)0x000001bb) 根据是否是system header的起始码判断是否读取到了PS流的system header如果读取到了让变量sys的值加1 if (code SYSTEM_HEADER_START_CODE)sys; 宏PACK_START_CODE定义在libavformat/mpeg.h中值为0x000001ba表示pack header的起始码pack header的pack_start_code属性 #define PACK_START_CODE ((unsigned int)0x000001ba) 根据是否是pack header的起始码判断是否读取到了PS流的pack header如果读取到了让变量pspack的值加1 int pack check_pack_header(p-buf i); //...else if (code PACK_START_CODE pack)pspack; 检查是否读取到了PES流。如果读取到了通过PES packet中的stream_id属性判断里面的ES流是否为视频流。如果是视频流让变量vid的值加1 int pes endpes i check_pes(p-buf i, p-buf p-buf_size);//...else if ((code 0xf0) VIDEO_ID pes) {endpes i len;vid;} 返回最终表示符合程度的分数 if (sys invalid sys * 9 pspack * 10)return (audio 12 || vid 3 || pspack 2) ? AVPROBE_SCORE_EXTENSION 2: AVPROBE_SCORE_EXTENSION / 2 (audio vid pspack 1); // 1 more than mp3if (pspack invalid (priv1 vid audio) * 10 pspack * 9)return pspack 2 ? AVPROBE_SCORE_EXTENSION 2: AVPROBE_SCORE_EXTENSION / 2; // 1 more than .mpgif ((!!vid ^ !!audio) (audio 4 || vid 1) !sys !pspack p-buf_size 2048 vid audio invalid) /* PES stream */return (audio 12 || vid 6 2 * invalid) ? AVPROBE_SCORE_EXTENSION 2: AVPROBE_SCORE_EXTENSION / 2;// 02-Penguin.flac has sys:0 priv1:0 pspack:0 vid:0 audio:1// mp3_misidentified_2.mp3 has sys:0 priv1:0 pspack:0 vid:0 audio:6// Have\ Yourself\ a\ Merry\ Little\ Christmas.mp3 0 0 0 5 0 1 len:21618return score; 四、总结 从上面我们可以知道FFmpeg检测某个文件是否为PS文件是通过判断这段码流中读取到的system header、pack header、PES流中视频流的个数等信息实现的。
http://www.w-s-a.com/news/384470/

相关文章:

  • h5游戏平台入口优化是什么梗
  • 建设银行对公网站打不开网络推广活动方案主题和思路
  • 茶叶网站开发目的和意义网页设计需要考什么证
  • 高端企业网站建设公司怎么做实用性建设网站都需要哪些
  • 网站备案必须要幕布吗易企秀网站怎么做轮播图
  • 南昌网站排名优化四线城市网站建设方向及营利点
  • 做网站需要钱吗unity 做网站
  • 呼伦贝尔市规划建设局网站wordpress怎么考别人的
  • 免备案自助建站网站成都神速建站
  • 怎样编写app软件快速刷排名seo软件
  • 江苏做家纺的公司网站宣传型企业网站
  • 网站网上商城建设外国一些做环保袋的网站
  • 做空气开关那个网站推广比较好建站技术有哪些
  • 做网站前需要做什么准备wordpress图片云储存
  • 查楼盘剩余房源的网站地方网站推广
  • 农家乐网站建设方案创意平面设计公司简介
  • 信息化建设 网站作用网络营销的形式网站营销
  • 沈阳出名网站潍坊正规建设网站
  • 计算机软件开发需要学什么沈阳网站关键字优化
  • 关于军队建设网站国内最好的wordpress主题
  • 小视频网站如何建设陪诊app开发
  • 英文网站首页优化国外手机网站源码
  • 网站建设公司如何找客户网站建设应该考虑哪些问题
  • 创新的江苏网站建设wordpress用户绑定手机
  • 自己做网赌网站网站设计者
  • 教育培训网站设计辽宁招标工程信息网
  • 韶关网站推广做网站要哪些人员
  • 建设银行网站链接开发公司与物业公司交接清单
  • 网站定位广告企业建网站有这个必要吗
  • 网站模板 商标黄冈建设工程信息网