- 《音视频:将h264裸流转为YUV》
编程界的小学生、
音视频开发音视频嵌入式
文章目录一,前言二,分解步骤2.1初始化解码器2.2释放解码器资源2.3获取完整帧数据2.4h264转yuv2.5h264裸流文件转yuv2.6解RTP包后h264转yuv三,完整代码一,前言本文旨在将h264裸流数据转为yuv数据,分为两种情况一种是读取h264文件,一次性将读取到的所有h264数据给到解码器转为yuv,一种是从网络中接收含h264数据的RTP,这种情况下需要先对RTP包进行解包
- OpenHarmony AVCodec模块分析(五):扩展新的视频编解码格式
少年的云河月
#OpenHarmony媒体编解码组件视频编解码
一、简介目前AVCodec支持的视频编解码格式有限,只支持H264和H265视频编解码格式,但实际场景可能需要其他的编解码格式,本篇介绍如何扩展新的视频编解码格式。二、前言版本信息:OpenHarmony-4.0-Release(不同版本代码可能略有不同)新增格式:以添加视频解码AV1为例,mimetype为"video/x-av1"备注:下面代码中“+”代表新增,“-”代表删除三、扩展流程1、C
- H.264---序列参数集(SPS)---宽高获取
SXM19940913sxm
H264
SequenceParamaterSet(NALUnit=7)SPS和PPS一般处于码流的起始位置,但也可能出现在码流中间,主要原因是:1、解码器需要在码流中间开始解码;2、编码器在编码的过程中改变了码流的参数(如图像分辨率等);SPS结构(H264文档7.3.2.1)/**
[email protected]*
- FFmpeg 4.3 音视频-多路H265监控录放C++开发十三:将AVFrame转换成AVPacket。视频编码原理.编码相关api,H264特殊参数说明
hunandede
FFmpeg4.3ffmpeg音视频c++
前提:从前面的学习我们知道AVFrame中是最原始的视频数据,这一节开始我们需要将这个最原始的视频数据压缩成AVPacket数据,我们前面,将YUV数据或者RGBA数据装进入了AVFrame里面,并且在SDL中显示。也就是说:对于安防项目来说,我们将原始从摄像头数据(YUV,RGB)转换成AVFrame后,可以直接显示出来。但是如果我们将要数据存储,则要将AVFrame转成AVPacket.视频编
- RV1126视频采集
weixin_45281309
嵌入式Linux音视频c++嵌入式硬件
简介:将摄像头采集的视频以H264编码存储在本地文件test_out.h264里,并以ffmpeg播放**1.**流程图2.源代码bananapeelx_h264.h#ifndefBANANAPEELX_H264_H#defineBANANAPEELX_H264_H#include#include#include#include#include#include#include#include#in
- FFmpeg--解码:mp4文件解码为音频aac和视频h264
八月的雨季997
ffmpegaac
mp4文件解封装:视频文件(mp4)–解封装—音频流(aac),视频流(h264)流程code命令行参数:input.mp4out.h264out.aac#include#include"libavutil/log.h"#include"libavformat/avformat.h"#defineERROR_STRING_SIZE1024#defineADTS_HEADER_LEN7;intadt
- 2025-03-06 ffmpeg提取SPS/PPS/SEI ( extradata )
ihmhm12345
ffmpegffmpeg
一、需求在某些情况下,可能需要直接使用H264/H265等原始数据流进行解码,比较常用的udp下的h264/h265。这时需要av_parser_parse2来组AVPacket,但对于视频的信息:宽高、格式等,可以根据AVCodecParserContext来获取,也可以直接提取sps/pps/sei这些原始数据extradata本文讲如何从原始数据流(AVPacket)中找出extradata
- WebRTC新增FFmpeg视频编解码模块
程序员老舅
音视频开发进阶webrtc视频编解码实时音视频音视频c++
1整体描述目前webrtc内置的视频编解码器包括:VP8、VP9、AV1和H264。一般情况下载pc端基本可以满足大部分的需求,但是有时候为了进行编解码器的扩展包括支持H265或者是支持硬件编解码以提升效率时需要新增编解码模块。2新增外部编码器编码器实现的要点包括两个部分:一是需要实现以VideoEncoder为基类的编码器对象,核心API实现如下:(1)初始化编码器,将编码参数传入进行初始化。v
- Linux音视频学习--音视频编解码相关基本概念介绍
文艺小少年
IPC项目实践之音视频相关整理音视频linuxdspisp
一、引言二、ISP、DSP------>1、ISP------------>内置isp------>2、DSP三、编解码------>1、视频编码------------>各个格式(H264/H265)的编码------------>码率调节------>2、音频编码------>3、码流、采样率、比特率、采样点数概念介绍------>4、采样点数一、引言入职的事终于告一段落,现在要慢慢开始熟悉新
- RV1126的OSD模块和SDL_TTF结合输出H264文件
weixin_51931174
ffmpeg
目录一.RV1126多线程处理输出OSD字符叠加图层的流程1.1.VI模块的初始化1.2.初始化VENC模块:1.3.初始化RGN模块:1.4.绑定VI模块和VENC模块,伪代码如下1.5.创建多线程进行OSD字库的叠加:1.6.获取每一帧处理过后的VENC数据:二.程序代码三.运行结果一.RV1126多线程处理输出OSD字符叠加图层的流程用RV1126多线程输出OSD叠加需要经过上面几个重要步骤
- 【FFMPEG】各种音视频编解码学习详解 h264 ,mpeg4 ,aac 等所有音视频格式
weixin_30906425
ffmpeg大数据操作系统
目录(?)[-]编解码学习笔记二codec类型编解码学习笔记三Mpeg系列Mpeg1和Mpeg2编解码学习笔记四Mpeg系列Mpeg4编解码学习笔记五Mpeg系列AAC音频编解码学习笔记六H26x系列编解码学习笔记七微软WindowsMedia系列编解码学习笔记八Real系列编解码学习笔记九QuickTime系列编解码学习笔记十Ogg系列编解码学习笔记十一FlashVideo系列编解码学习笔记十二
- 基于RK3588 Gstreamer 硬件解码MPP 代码实例
家有工程师
RK3568Android12RK3588MPPNV12
目录1:在此之前先看比较2条指令2:重要的输出信息3:代码说明3.1appsink元素说明3.2GstCaps收到数据的格式3.3完整代码3.4CMakeList及文件结构1:在此之前先看比较2条指令gst-launch-1.0rtspsrclocation=rtsp://admin:
[email protected]:554/ch01.264!rtph264depay!h264parse
- 3.1 RK3588 MPP硬件编码YUYV为H264(待更新)
kw23571113
RK3588入门教程h.264
3.1.1资源功能描述获取USB摄像头1080P@5fpsYUYV格式图片,经过MPP编码成H264,然后写入文件。3.1.2开发环境准备(使用rock5b_debain开发)#下载依赖应用sudoaptinstall-ygitmakecmakegccg++wget#下载mpp库githttps://github.com/rockchip-linux/mpp.gitcd./mpp/build/li
- ffmpeg拉流rtmp保存h264和aac
农民工-IT
ffmpeg源码解析ffmpegaac
代码实现#include#include#includeextern"C"{#include#include}intmp4toannexb(AVBSFContext*bsf_ctx,AVPacket*pkt,std::ofstream&out){intret;ret=av_bsf_send_packet(bsf_ctx,pkt);if(retdata,pkt->size);}return0;}in
- 【音视频】 H264 H265
gma999
音视频
概述项目中接触到一些音视频领域的技术,主要对自己接触到的技术,结合自己的学习内容,进行阶段性总结,如有不正确的地方恳请指正安防领域摄像头的编码格式目前主流的是H265,但是也存在H264的视频流。项目中经常需要获取H264H265的视频流或者是将这两种视频流推送到指定的客户端,测试可以使用ZLM这种流媒体框架,具体应用开发中遇到了将视频流推送到GB28181平台。文章的主要重点也只聚焦在编解码H2
- 【音视频】RTP封包H264信息
gma999
音视频
H264-RTP封包逻辑单个NALU结构分析012301234567890123456789012345678901+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+|F|NRI|Type||+-+-+-+-+-+-+-+-+||||Bytes2..nofasingleNALunit||||+-+-+-+-+-+-+-
- H264视频编码系列教程-3关键参数集与解码初始化
TogetherWeShare
音视频人工智能算法
H264关键参数集与解码初始化1.参数集整体架构1.1层级包含关系视频码流VPS层SPS层PPS层约束约束图像参数PPS工具参数序列参数SPS工具配置编码能力VPS性能限制H264参数集采用三层架构设计,这种设计充分体现了参数管理的层次化和模块化思想。让我们深入分析每一层的功能和特点:===H264参数集层级结构===+-------------------VPS层----------------
- linux中流设备_设备端SDK(Linux)文档
知酒僧
linux中流设备
设备端SDK(Linux)文档更新时间:2019-03-1421:55:00功能描述摄像头直播:支持RTMP推流,当前视频支持H264,音频支持G711a以及AAC_LC格式.存储卡录像查看:将存储在SD卡等外存中的录像文件推到服务端,支持seek到指定位置操作.语音对讲:与App端建立双向语音通道,设备端采集录音并实时发送至App端,同时接收到App端发送的语音进行播放.拍照:抓拍当前摄像头画面
- 前端视频开发之初始化MSE SourceBuffer时正确传参——H264 codecs生成
前端mseh264codecs
本片文章主要是对H264格式的视频源进行介绍以及生成的codecs只考虑视频源不考虑音频一、场景介绍使用MSE进行视频播放时,首先需要创建一个sourceBuffer用于推流,例如constmediaSource=newMediaSource();constsourceBuffer=mediaSource.addSourceBuffer('video/mp4;codecs="avc1.64001f
- TX2+FFmpeg+OpenCV读取显示网络摄像头
宗而研之
#NVIDIAJetson
作者:JasonDing链接:https://www.jianshu.com/p/6ef3c18d61b0來源:简书著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。引子OpenCV中有自己的用于处理图片和视频的类VideoCapture,可以很方便的读入文件和显示。现在视频数据流是ffmpeg解码h264文件得到的,由于要依赖该数据源进行相应的后续处理,所以需要将ffmpeg中
- 【音视频】RTSP拉流: RTP协议头部详解(二)
自由柿
音视频
此文为系列文章,此系列主要讲解RTSP客户端的拉流及播放,文章持续更新,会从rtsp的基本协议讲起,如何一步步实现音视频的拉流过程,包括一系列涉及到的协议,rtsp,sdp,rtp(本系列文章的核心内容会放在rtp协议,会重点介绍讲解rtp负载部分),rtcp,从rtp解析aac,h264数据帧,得到帧后如何交给解码库(ffmpeg,libVLC,live555等)进行解码,音视频同步并播放音
- h264和h265视频流SDP描述详解
艾浅觅
流媒体协议开发知识音视频
h264和h265视频流SDP描述详解文章目录h264和h265视频流SDP描述详解1SDP概述2.SDP媒体描述极其扩展属性2.1m属性介绍2.2a=control附加属性介绍2.3a=rtpmap附加属性介绍2.4a=fmtp附加属性介绍SDP(SessionDescriptionProtocol)会话描述协议,是一种用来描述信息格式的标准,它不是一种用于传输的协议而是由ITEF组织下的MMu
- webrtc报错:Unable to load:src/third_party/usrsctp/BUILD.gn
、、、、南山小雨、、、、
webrtcwebrtc音视频ffmpeg
gngenout/linux--args=‘is_debug=truetarget_os=“linux”target_cpu=“x64”is_clang=falsetreat_warnings_as_errors=falsertc_include_tests=falsertc_use_h264=trueis_component_build=falseuse_custom_libcxx=falser
- cefsharp131升级132测试(WinForms.NETCore)
久爱物联网
久爱CefsharpCsharp久爱学习cefsharpcefsharp132.3WinForm.NetCorecef132
一、升级(Nuget)版本说明(readme):最低.NETCore3.1(NET5.0+)+VisualC++2019Redist二、试运行、兼容性测试三、后记说明支持H264版本推荐版本63,79,84,88,100,111,125(支持h264和pdf预览)其他H264版本109,124,126,128,131.0.x(支持h264,支持pdf预览有异常)私聊jiuailtd留言CefSha
- OrangePi香橙派usb摄像头+srs服务+ffmpeg+h264解码
Fatfish_treeFans
ffmpegh.264linuxwebrtc视频编解码
1、香橙派用的zero2,debian系统,usb免驱摄像头usb摄像头默认地址:/dev/video0查看usb是否识别:lsusb。查看可以用:ls/dev/video*,查看所有设备。2、安装srs服务,并推流webrtc参考:Build|SRS下载镜像到当前命令行路径:gitclone-bdevelophttps://gitee.com/ossrs/srs.git编译,注意需要切换到srs
- ffmpeg 硬件解码 264 265 各个平台
爱学习的大牛123
音视频ffmpeg
一.命令行介绍FFmpeg支持多种平台的硬件解码,包括H.264(AVC)和H.265(HEVC)编解码器。以下是在不同平台上使用FFmpeg进行硬件解码的概述:1.NVIDIAGPU(NVDEC)适用于Windows、Linux和macOS(较旧的Mac设备)。-H.264:`-c:vh264_cuvid`-H.265:`-c:vhevc_cuvid`示例:```ffmpeg-hwaccelcu
- mpp rtsp 硬解码
AI算法网奇
嵌入式c++入门宝典网络
目录opencv保存mp4linux系统RK3588MPP硬解码rtsp源代码内存泄露问题硬编码和硬解码mpp保存mp4h264格式判断ffmpeg把mp4转为h264裸流有的电脑报错:Unabletofindasuitableoutputformatfor'output.264'ffmpeg_rtsp_mpp:ffmpeg拉取rtsph264流,使用mpp解码,目前在firefly板子上跑通了m
- html5 h265播放器,PC端播放H265
健康和谐男哥
html5h265播放器
说明需要在PC端浏览器(Chrome)中播放直播视频,视频格式有H264/H265。有不少三方库可以实现。通过video.js(支持H264,不支持H265)videojs-contrib-hlsembedVideo.jsExampleEmbeddata-setup='{}'>参考地址:通过hls.js(支持H264,不支持H265)pcplaym3u8(hlsjs)video{width:600
- Ubuntu 20.04 x64下 编译安装ffmpeg
daqinzl
linuxffmpegubuntuFFmpeg编译安装
试验的ffmpeg版本4.1.3本文使用的config命令./configure--prefix=host--enable-shared--disable-static--disable-doc--enable-postproc--enable-gpl--enable-swscale--enable-nonfree--enable-libfdk-aac--enable-decoder=h264--
- H264原始码流格式分析
程序猿玖月柒
音视频开发语言音视频
1.H264码流结构组成H.264裸码流(RawBitstream)数据主要由一系列的NALU(网络抽象层单元)组成。每个NALU包含一个NAL头和一个RBSP(原始字节序列载荷)。1.1H.264码流层次H.264码流的结构可以分为两个层次:VCL(视频编码层)和NAL(网络抽象层)。下图为H.264码流中的层次图:VCL层:负责对视频的原始数据进行压缩。VCL数据编码器直接输出的原始数据比特串
- java杨辉三角
3213213333332132
java基础
package com.algorithm;
/**
* @Description 杨辉三角
* @author FuJianyong
* 2015-1-22上午10:10:59
*/
public class YangHui {
public static void main(String[] args) {
//初始化二维数组长度
int[][] y
- 《大话重构》之大布局的辛酸历史
白糖_
重构
《大话重构》中提到“大布局你伤不起”,如果企图重构一个陈旧的大型系统是有非常大的风险,重构不是想象中那么简单。我目前所在公司正好对产品做了一次“大布局重构”,下面我就分享这个“大布局”项目经验给大家。
背景
公司专注于企业级管理产品软件,企业有大中小之分,在2000年初公司用JSP/Servlet开发了一套针对中
- 电驴链接在线视频播放源码
dubinwei
源码电驴播放器视频ed2k
本项目是个搜索电驴(ed2k)链接的应用,借助于磁力视频播放器(官网:
http://loveandroid.duapp.com/ 开放平台),可以实现在线播放视频,也可以用迅雷或者其他下载工具下载。
项目源码:
http://git.oschina.net/svo/Emule,动态更新。也可从附件中下载。
项目源码依赖于两个库项目,库项目一链接:
http://git.oschina.
- Javascript中函数的toString()方法
周凡杨
JavaScriptjstoStringfunctionobject
简述
The toString() method returns a string representing the source code of the function.
简译之,Javascript的toString()方法返回一个代表函数源代码的字符串。
句法
function.
- struts处理自定义异常
g21121
struts
很多时候我们会用到自定义异常来表示特定的错误情况,自定义异常比较简单,只要分清是运行时异常还是非运行时异常即可,运行时异常不需要捕获,继承自RuntimeException,是由容器自己抛出,例如空指针异常。
非运行时异常继承自Exception,在抛出后需要捕获,例如文件未找到异常。
此处我们用的是非运行时异常,首先定义一个异常LoginException:
/**
* 类描述:登录相
- Linux中find常见用法示例
510888780
linux
Linux中find常见用法示例
·find path -option [ -print ] [ -exec -ok command ] {} \;
find命令的参数;
- SpringMVC的各种参数绑定方式
Harry642
springMVC绑定表单
1. 基本数据类型(以int为例,其他类似):
Controller代码:
@RequestMapping("saysth.do")
public void test(int count) {
}
表单代码:
<form action="saysth.do" method="post&q
- Java 获取Oracle ROWID
aijuans
javaoracle
A ROWID is an identification tag unique for each row of an Oracle Database table. The ROWID can be thought of as a virtual column, containing the ID for each row.
The oracle.sql.ROWID class i
- java获取方法的参数名
antlove
javajdkparametermethodreflect
reflect.ClassInformationUtil.java
package reflect;
import javassist.ClassPool;
import javassist.CtClass;
import javassist.CtMethod;
import javassist.Modifier;
import javassist.bytecode.CodeAtt
- JAVA正则表达式匹配 查找 替换 提取操作
百合不是茶
java正则表达式替换提取查找
正则表达式的查找;主要是用到String类中的split();
String str;
str.split();方法中传入按照什么规则截取,返回一个String数组
常见的截取规则:
str.split("\\.")按照.来截取
str.
- Java中equals()与hashCode()方法详解
bijian1013
javasetequals()hashCode()
一.equals()方法详解
equals()方法在object类中定义如下:
public boolean equals(Object obj) {
return (this == obj);
}
很明显是对两个对象的地址值进行的比较(即比较引用是否相同)。但是我们知道,String 、Math、I
- 精通Oracle10编程SQL(4)使用SQL语句
bijian1013
oracle数据库plsql
--工资级别表
create table SALGRADE
(
GRADE NUMBER(10),
LOSAL NUMBER(10,2),
HISAL NUMBER(10,2)
)
insert into SALGRADE values(1,0,100);
insert into SALGRADE values(2,100,200);
inser
- 【Nginx二】Nginx作为静态文件HTTP服务器
bit1129
HTTP服务器
Nginx作为静态文件HTTP服务器
在本地系统中创建/data/www目录,存放html文件(包括index.html)
创建/data/images目录,存放imags图片
在主配置文件中添加http指令
http {
server {
listen 80;
server_name
- kafka获得最新partition offset
blackproof
kafkapartitionoffset最新
kafka获得partition下标,需要用到kafka的simpleconsumer
import java.util.ArrayList;
import java.util.Collections;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.
- centos 7安装docker两种方式
ronin47
第一种是采用yum 方式
yum install -y docker
 
- java-60-在O(1)时间删除链表结点
bylijinnan
java
public class DeleteNode_O1_Time {
/**
* Q 60 在O(1)时间删除链表结点
* 给定链表的头指针和一个结点指针(!!),在O(1)时间删除该结点
*
* Assume the list is:
* head->...->nodeToDelete->mNode->nNode->..
- nginx利用proxy_cache来缓存文件
cfyme
cache
user zhangy users;
worker_processes 10;
error_log /var/vlogs/nginx_error.log crit;
pid /var/vlogs/nginx.pid;
#Specifies the value for ma
- [JWFD开源工作流]JWFD嵌入式语法分析器负号的使用问题
comsci
嵌入式
假如我们需要用JWFD的语法分析模块定义一个带负号的方程式,直接在方程式之前添加负号是不正确的,而必须这样做:
string str01 = "a=3.14;b=2.71;c=0;c-((a*a)+(b*b))"
定义一个0整数c,然后用这个整数c去
- 如何集成支付宝官方文档
dai_lm
android
官方文档下载地址
https://b.alipay.com/order/productDetail.htm?productId=2012120700377310&tabId=4#ps-tabinfo-hash
集成的必要条件
1. 需要有自己的Server接收支付宝的消息
2. 需要先制作app,然后提交支付宝审核,通过后才能集成
调试的时候估计会真的扣款,请注意
- 应该在什么时候使用Hadoop
datamachine
hadoop
原帖地址:http://blog.chinaunix.net/uid-301743-id-3925358.html
存档,某些观点与我不谋而合,过度技术化不可取,且hadoop并非万能。
--------------------------------------------万能的分割线--------------------------------
有人问我,“你在大数据和Hado
- 在GridView中对于有外键的字段使用关联模型进行搜索和排序
dcj3sjt126com
yii
在GridView中使用关联模型进行搜索和排序
首先我们有两个模型它们直接有关联:
class Author extends CActiveRecord {
...
}
class Post extends CActiveRecord {
...
function relations() {
return array(
'
- 使用NSString 的格式化大全
dcj3sjt126com
Objective-C
格式定义The format specifiers supported by the NSString formatting methods and CFString formatting functions follow the IEEE printf specification; the specifiers are summarized in Table 1. Note that you c
- 使用activeX插件对象object滚动有重影
蕃薯耀
activeX插件滚动有重影
使用activeX插件对象object滚动有重影 <object style="width:0;" id="abc" classid="CLSID:D3E3970F-2927-9680-BBB4-5D0889909DF6" codebase="activex/OAX339.CAB#
- SpringMVC4零配置
hanqunfeng
springmvc4
基于Servlet3.0规范和SpringMVC4注解式配置方式,实现零xml配置,弄了个小demo,供交流讨论。
项目说明如下:
1.db.sql是项目中用到的表,数据库使用的是oracle11g
2.该项目使用mvn进行管理,私服为自搭建nexus,项目只用到一个第三方 jar,就是oracle的驱动;
3.默认项目为零配置启动,如果需要更改启动方式,请
- 《开源框架那点事儿16》:缓存相关代码的演变
j2eetop
开源框架
问题引入
上次我参与某个大型项目的优化工作,由于系统要求有比较高的TPS,因此就免不了要使用缓冲。
该项目中用的缓冲比较多,有MemCache,有Redis,有的还需要提供二级缓冲,也就是说应用服务器这层也可以设置一些缓冲。
当然去看相关实现代代码的时候,大致是下面的样子。
[java]
view plain
copy
print
?
public vo
- AngularJS浅析
kvhur
JavaScript
概念
AngularJS is a structural framework for dynamic web apps.
了解更多详情请见原文链接:http://www.gbtags.com/gb/share/5726.htm
Directive
扩展html,给html添加声明语句,以便实现自己的需求。对于页面中html元素以ng为前缀的属性名称,ng是angular的命名空间
- 架构师之jdk的bug排查(一)---------------split的点号陷阱
nannan408
split
1.前言.
jdk1.6的lang包的split方法是有bug的,它不能有效识别A.b.c这种类型,导致截取长度始终是0.而对于其他字符,则无此问题.不知道官方有没有修复这个bug.
2.代码
String[] paths = "object.object2.prop11".split("'");
System.ou
- 如何对10亿数据量级的mongoDB作高效的全表扫描
quentinXXZ
mongodb
本文链接:
http://quentinXXZ.iteye.com/blog/2149440
一、正常情况下,不应该有这种需求
首先,大家应该有个概念,标题中的这个问题,在大多情况下是一个伪命题,不应该被提出来。要知道,对于一般较大数据量的数据库,全表查询,这种操作一般情况下是不应该出现的,在做正常查询的时候,如果是范围查询,你至少应该要加上limit。
说一下,
- C语言算法之水仙花数
qiufeihu
c算法
/**
* 水仙花数
*/
#include <stdio.h>
#define N 10
int main()
{
int x,y,z;
for(x=1;x<=N;x++)
for(y=0;y<=N;y++)
for(z=0;z<=N;z++)
if(x*100+y*10+z == x*x*x
- JSP指令
wyzuomumu
jsp
jsp指令的一般语法格式: <%@ 指令名 属性 =”值 ” %>
常用的三种指令: page,include,taglib
page指令语法形式: <%@ page 属性 1=”值 1” 属性 2=”值 2”%>
include指令语法形式: <%@include file=”relative url”%> (jsp可以通过 include