FMUSER更轻松地传输视频和音频!

[电子邮件保护] WhatsApp的+ 8618078869184
语言

    Android手机直播(1)概述

     

    3.收藏
    采集主要包括两个方面:视频采集和音频采集。 摄像机收集视频,这涉及摄像机的相关操作以及摄像机的参数设置。 由于各种手机制造商的相机有所不同,因此在这方面存在一些陷阱,有关该相机的文章将对此进行介绍。 音频通过麦克风收集。 不同手机的麦克风支持不同的音频采样率,有时需要回音消除才能支持麦克风功能。

     

    视频捕获技术的要点:

    检查是否可以使用相机;
    相机拍摄的图像是水平的,拍摄的图像需要旋转一定程度后才能显示。
    相机拍摄时,有一系列图像尺寸可供选择。 当拍摄的图像尺寸与手机的屏幕尺寸不一致时,需要进行特殊处理。
    Android手机摄像头具有一系列状态,摄像头的相应操作需要处于正确的状态;
    Android手机摄像头的许多参数都存在兼容性问题,因此需要更好地解决这些兼容性问题。


    音频捕获技术的要点:

    检查是否可以使用麦克风;
    需要检测手机是否支持一定的音频采样率;
    在某些情况下,有必要对音频执行回声消除处理。
    在音频捕获期间设置正确的缓冲区大小。
    注意:稍后将有关于该系列的特别文章

     

    4.加工


    视频处理


    现在,Beauty几乎是手机直播软件的标准配置。 美化之后,主机具有更高的外观,并且对粉丝更具吸引力。 还有一些Android直播应用程序可以识别主持人的脸并添加有趣的动画。 特殊效果,有时我们还需要在视频中添加水印。


    实际上,美化视频和添加特殊效果是通过OpenGL处理​​的。 Android中有GLSurfaceView,与SurfaceView类似,但可以使用Renderer进行渲染。 可以通过OpenGL生成纹理,可以通过纹理ID生成SurfaceTexture,然后可以将SurfaceTexture移交给Camera,最后通过纹理将相机预览屏幕和OpenGL连接起来,从而可以通过OpenGL执行一系列操作。


    美化的整个过程无非就是通过OpenGL中的FBO技术基于Camera预览的纹理生成新纹理,然后使用新纹理在Renderer中的onDrawFrame()上绘制。 添加水印是先将图片转换为纹理,然后使用OpenGL进行绘制。 添加动态吊坠特殊效果更加复杂。 首先,需要基于当前预览图像执行算法分析以识别人脸的相应部分,然后在每个相应的部分上绘制相应的图像。 整个过程的实现有些困难。


    下图是整个美容过程的流程图:


    美容过程

    下图很好地显示了美感和动画效果。
    美容

    动画效果和水印

    注意:将会有一篇关于OpenGL及其整个过程实现的特别文章。


    音频处理


    在某些情况下,主持人需要添加一些其他声音以增加现场广播的气氛,例如掌声等等。 处理它的一种方法是直接播放其他声音,以便麦克风将其收集起来然后记录下来,但是当锚点戴着耳机或需要对声音执行回声消除处理时,这种处理将不起作用。 。 由于尚未将相应功能添加到我们的项目中,因此暂时没有相关经验可以分享,我们可能会在以后添加此功能,然后与您共享。

     

    5. 编码
    通过摄像机和麦克风,我们可以收集相应的视频和音频数据,但是这些都是固定格式的原始数据。 一般而言,相机一帧一帧地收集,而麦克风则收集PCM音频数据。 如果直接发送这些数据,则数据量通常非常大,导致带宽浪费很大,因此通常需要在发送之前对视频和音频进行编码。

     

    视频编码
    1.预测编码
    众所周知,图像由许多所谓的像素组成。 大量统计数据表明,同一图像中的像素之间存在很强的相关性。 两个像素之间的距离越短,相关性越强。 用外行的话来说,两个像素的值越接近。 因此,人们可以利用像素之间的这种相关性来执行压缩编码。 该压缩方法称为帧内预测编码。 不仅如此,相邻帧之间的相关性通常强于帧内像素之间的相关性,并且压缩率也更大。 可以看出,通过使用像素之间的相关性(帧内)和帧之间的相关性,即找到相应的参考像素或参考帧作为预测值,可以实现视频压缩编码。

     

    2.转换编码
    大量统计数据表明,视频信号包含最耗能的DC和低频成分,即图像的平坦部分,以及少量高频成分,即图像的细节。图像。 因此,另一种方法可以用于视频编码。 图像经过一定的数学变换后,即可获得变换域中的图像(如图所示),其中u和v分别为空间频率坐标。


    转换编码


    3.基于波形的编码
    基于波形的编码使用结合了预测编码和变换编码的基于块的混合编码方法。 为了降低编码复杂度并使视频编码操作更容易执行,在使用混合编码方法时,首先将图像划分为固定大小的块,例如块8×8(即每个块8行,8每行像素数),块16×16(每块16行,每行16像素)等等,然后对块进行压缩和编码。


    自从ITU-T在261年发布第一个数字视频编码标准-H.1989以来,它已经相继发布了诸如H.263之类的视频编码标准以及诸如H.320和H.323之类的多媒体终端标准。 ISO下的运动图像专家组(MPEG)已定义MPEG-1,MPEG-2,MPEG-4和其他娱乐和数字电视压缩编码国际标准。
    ITU-T在2003年264月发布了H.XNUMX视频编码标准。 它不仅使视频压缩比以前的标准有了显着提高,而且还具有良好的网络亲和力,特别是对于IP互联网,无线移动网络和其他易于出错,易阻塞且不容易保证QoS的网络视频传输性能。 。 所有这些视频编码都使用基于块的混合编码,它们都是基于波形的编码。

     

    4.基于内容的编码
    还有一种基于内容的编码技术,其中视频帧首先被划分为对应于不同对象的区域,然后进行编码。 具体来说,它对不同对象的形状,运动和纹理进行编码。 在最简单的情况下,二维轮廓用于描述对象的形状,运动矢量用于描述对象的运动状态,纹理由彩色波形描述。


    当已知视频序列中的对象类型时,可以使用基于知识或基于模型的编码。 例如,对于人脸,已经开发了一些预定义的线框以编码脸部特征。 此时,编码效率非常高,仅需几个比特即可描述其功能。 对于面部表情(例如生气,高兴等),可能的行为可以通过语义进行编码。 由于对象的可能行为的数量非常少,因此可以获得非常高的编码效率。


    MPEG-4采用的编码方法是基于块的混合编码和基于内容的编码方法。

     

    5.软硬编织
    在Android平台上有两种方法可以实现视频编码,一种是软编码,另一种是硬编码。 对于软编辑,它通常依赖于cpu并使用cpu的计算能力来执行编码。 例如,我们可以下载x264编码库,编写相关的jni界面,然后传入相应的图像数据。 经过x264库处理后,原始图像将转换为h264格式的视频。


    硬代码使用Android本身提供的MediaCodec。 要使用MediaCodec,您需要传递相应的数据。 这些数据可以是yuv图像信息或Surface。 通常建议使用Surface,这样效率更高。 Surface直接使用本地视频数据缓冲区,而无需将其映射或复制到ByteBuffer; 因此,这种方法将更加有效。 使用Surface时,通常不能直接访问原始视频数据,但是可以使用ImageReader类访问不可靠的解码(或原始)视频帧。 这可能仍然比使用ByteBuffer更为有效,因为某些本地缓冲区可以映射为直接的ByteBuffer。 使用ByteBuffer模式时,可以使用Image类和getInput / OutputImage(int)方法访问原始视频数据帧。

     

    注意:以下文章将专门介绍如何执行视频编码

     

    音频编码


    可以在Android中使用AudioRecord录制声音,并且录制的声音是PCM声音。 如果要用计算机语言表达声音,则必须数字化声音。 数字化声音的最常见方法是通过脉冲编码调制(PCM)。 声音通过麦克风,然后转换为一系列电压变化信号。 将此类信号转换为PCM格式的方法是使用三个参数表示声音。 它们是:通道数,采样位数和采样频率。

     

    1.采样频率
    即,采样频率是指每秒获得声音采样的次数。 采样频率越高,声音质量越好,声音再现越真实,但同时占用更多资源。 由于人耳的分辨率有限,因此无法分辨出太高的频率。 22位声卡中有44KHz,16KHz和其他级别。 其中,22KHz相当于普通FM广播的音质,44KHz相当于CD的音质。 当前的通用采样频率不超过48KHz。

     

    2.采样位数
    即,采样值或采样值(即,采样样本的振幅被量化)。 它是用于测量声音波动的参数,也可以说是声卡的分辨率。 其值越大,分辨率越高,声音功率越强。
    在计算机中,采样位数通常为8位和16位,但是请注意,8位并不意味着将纵坐标分为8个部分,而是分为2到8的幂,即256个部分。 16位也是如此。 它将纵坐标分为2到16的65,536次方。

     

    3.频道数
    不难理解,有单声道和立体声的。 单声道声音只能由一个扬声器产生(某些声音也被处理成两个扬声器以输出相同的声道声音),而立体声pcm可以使两个扬声器同时发出声音(通常左右声道之间存在分工),这样您就可以感受到更多的空间效果。

     

    因此,现在我们可以获取pcm文件容量的公式:
    存储容量=(采样频率✖️采样位数✖️通道✖️时间)➗8(单位:字节数)

    如果全部以PCM格式传输音频,则占用的带宽相对较大,因此需要在传输之前对音频进行编码。


    已经有一些广泛使用的声音格式,例如wav,MIDI,MP3,WMA,AAC,Ogg等。与pcm格式相比,这些格式压缩声音数据,可以减少传输带宽。


    音频编码也可以分为两种类型:软编码和硬编码。 要进行软编辑,请下载相应的编码库,编写相应的jni,然后传入数据进行编码。 硬代码使用Android本身提供的MediaCodec。

    注意:以下文章将专门介绍如何执行音频编码

    6,包装
    视频和音频在传输过程中需要定义相应的格式,以便在将其传输到另一端时可以正确地对其进行解析。

     

    1.HTTP-FLV
    在Web 2.0时代,最受欢迎的网站类型自然是国外的Youtube,中国的优酷和土豆网。 可以说由这些站点提供的视频内容各有千秋,但是它们都毫无例外地将Flash用作视频播放载体。 支持这些视频站点的技术基础是Flash视频(FLV)。 FLV是一种全新的流媒体视频格式,它利用网页上广泛使用的Flash Player平台将视频集成到Flash动画中。 换句话说,只要网站的访问者可以观看Flash动画,他们自然就可以观看FLV格式的视频,而无需安装其他视频插件。 FLV视频的使用为视频分发带来了极大的便利。


    HTTP-FLV将音频和视频数据封装到FLV中,然后通过HTTP协议将其传输到客户端。 作为上传者,仅需要将FLV格式的视频和音频传输到服务器。


    一般来说,FLV格式的视频和音频通常使用h264格式的视频,而音频通常使用AAC-LC格式。


    FLV格式是先发送FLV标头信息,然后发送带有视频和音频参数(元数据)的元数据,然后发送视频和音频参数信息,然后发送视频和音频数据。
    注意:以下文章将详细描述FLV

     

    2.RTMP
    RTMP是实时消息协议的缩写。 该协议基于TCP,是一个协议集群,包括RTMP基本协议和RTMPT / RTMPS / RTMPE和许多其他变体。 RTMP是一种用于实时数据通信的网络协议。 它主要用于Flash / AIR平台与支持RTMP协议的流媒体/交互式服务器之间的音频,视频和数据通信。


    RTMP协议是Adobe发布的一种实时传输协议,主要用于基于flv格式的音频和视频流的实时传输。 在获取编码的视频和音频数据之后,首先需要进行FLV打包,然后将其打包为rtmp格式,然后进行传输。


    要使用RTMP格式进行传输,您需要首先连接到服务器,然后创建一个流,然后发布该流,然后传输相应的视频和音频数据。 整个传输由消息定义,rtmp定义了各种形式的消息,为了更好地发送消息,将消息划分为块,这使整个协议更加复杂。


    注意:以后的文章将详细介绍RTMP

     

    协议还有其他几种形式,例如RTP等。一般原理相似,因此我不会一一解释。

    7.网络处理不良
    视音频可以在良好的网络下及时发送,而不会造成本地视音频数据的积累,直播效果流畅,时延小。 在恶劣的网络环境中,如果无法发送音频和视频数据,则需要处理音频和视频数据。 在恶劣的网络环境中,通常有四种处理视频和音频数据的方法:缓冲区设计,网络检测,帧丢失处理和比特率降低处理。

     

    1.缓冲设计
    视频和音频数据被传输到缓冲区,发送方从缓冲区获取数据并将其发送,从而形成异步的生产者-消费者模式。 生产者只需要将收集和编码的视频和音频数据推送到缓冲区,而消费者则负责从缓冲区中取出数据并将其发送。


    视频和音频缓冲区

    上图中仅显示了视频帧,并且显然内部有相应的音频帧。 为了构建异步的生产者-消费者模型,Java提供了一个很好的类。 由于帧丢失,插入,删除等需要稍后处理,因此显然LinkedBlockingQueue是一个很好的选择。

     

    2.网络检测
    网络处理不佳过程中的一个重要过程是网络检测。 当网络变差时,可以快速检测到它,然后进行相应的处理。 这将使网络响应更加敏感,效果会更好。


    我们每秒计算输入缓冲区中的数据,并实时发送数据。 如果发送的数据小于输入缓冲区中的数据,则网络带宽不好。 此时,缓冲区中的数据将继续增加。 激活相应的机制。

     

    3.丢帧处理
    当检测到网络降级时,帧丢失是一种很好的响应机制。 视频编码后,有关键帧和非关键帧。 关键帧是完整的图片,非关键帧描述了图像的相对变化。
    丢帧策略可以自己定义。 需要注意的一件事是:如果要放置P帧(非关键帧),则需要在两个关键帧之间放置所有非关键帧,否则将发生拼接。 丢帧策略的设计取决于需求,您可以自己设计。

     

    4.代码减少率
    在Android中,如果使用硬编码进行编码,则在恶劣的网络环境中,我们可以实时更改硬编码的比特率以使直播更加流畅。 当检测到网络环境较差时,我们还可以在丢帧的同时降低视频和音频的比特率。 当Android sdk版本大于或等于19时,您可以将参数传递给MediaCodec来更改来自硬编码编码器的数据的比特率。

     

    捆绑包比特率= new Bundle(); bitrate.putInt(MediaCodec.PARAMETER_KEY_VIDEO_BITRATE,bps * 1024);
    mMediaCodec.setParameters(bitrate);

     

    8.发送
    经过各种处理后,数据最终需要发送出去,这一步比较简单。 无论是HTTP-FLV还是RTMP,我们都使用TCP建立连接。 在进行实时广播之前,您需要通过套接字连接到服务器,以验证是否可以连接到服务器。 连接后,使用此套接字将数据发送到服务器,并在发送数据后关闭套接字。

     

     

     

     

     

     

    多远(长)发射机盖?

    传输范围取决于许多因素。 真正的距离是基于该天线安装高度,天线增益,使用环境像建筑物和其他障碍物,接收机的灵敏度,接收机的天线。 安装天线更高,并使用在农村,距离将更为深远。

    实例5W FM发射器在城市和家乡使用:

    我有GP天线的美国客户使用5W调频发射器在他的家乡,他与汽车进行测试,它涵盖10km(6.21mile)。

    我测试与GP天线5W FM发射器在我的家乡,它覆盖约2km(1.24mile)。

    我测试在广州市GP天线5W FM发射,它覆盖大约只有300meter(984ft)。

    下面是不同的功率调频发射机的大致范围。 (范围为直径)

    0.1W〜5W FM发射器:100M〜1KM

    5W〜15W FM Ttransmitter:1KM〜3KM

    15W〜80W FM发射器:3KM〜10KM

    80W〜500W FM发射器:10KM〜30KM

    500W〜1000W FM发射器:30KM〜50KM

    1KW〜2KW FM发射器:50KM〜100KM

    2KW〜5KW FM发射器:100KM〜150KM

    5KW〜10KW FM发射器:150KM〜200KM

    如何联系我们的发射器?

    叫我+ 8618078869184或
    给我发电子邮件 [电子邮件保护]
    1.How远远要在直径覆盖?
    2.How高大的塔你?
    3.Where你从哪里来?
    我们会给你更多专业意见。

    关于我们

    FMUSER.ORG是一家专注于射频无线传输/录音室视频音频设备/流媒体和数据处理的系统集成公司。我们提供从建议和咨询到机架集成到安装,调试和培训的所有方面。
     
    我们提供调频发射器,模拟电视发射器,数字电视发射器,甚高频UHF发射器,天线,同轴电缆连接器,STL,空中处理,工作室广播产品,射频信号监测,RDS编码器,音频处理器和远程现场控制单元, IPTV产品,视频/音频编码器/解码器,旨在满足大型国际广播网络和小型私人电台的需求。
     
    我们的解决方案包括FM广播电台/模拟电视台/数字电视台/音频视频演播室设备/演播室发射机链接/发射机遥测系统/酒店电视系统/ IPTV直播/流直播/电视会议/ CATV广播系统。
     
    我们正在为所有系统使用先进技术产品,因为我们知道高可靠性和高性能对系统和解决方案非常重要。 同时我们还必须确保我们的产品系统具有非常合理的价格。
     
    我们拥有公共和商业广播公司,电信运营商和监管机构的客户,我们还为数百家小型,本地和社区广播公司提供解决方案和产品。
     
    FMUSER.ORG的出口已超过15年,并在世界各地拥有客户。 在这一领域拥有13年的经验,我们拥有一支专业的团队来解决客户的各种问题。 我们致力于提供极为合理的专业产品和服务价格。
    联系电子邮件 : [电子邮件保护]

    我们的工厂

    我们有 现代化 的工厂。 欢迎你,当你来到中国参观我们的工厂。

    目前,已经有 客户1095 世界各地的参观了我们的广州天河办事处。 如果你来到中国,欢迎您光临惠顾。

    以公允

    这是我们在2012环球资源参与 香港电子展 . 来自世界各地的客户 终于有机会走到一起。

    哪里Fmuser?

    您可以搜索此号码“ 23.127460034623816,113.33224654197693 在谷歌地图中,​​您可以找到我们的fmuser办公室。

    FMUSER广州办公室在广州市天河区这是 广州中心 。 非常   广交会 , 广州火车站, 小贝公路和大沙头 , 只需要 10分钟 如果拿 出租车 。 欢迎世界各地朋友前来参观,洽谈。

    联系方式:天蓝
    手机:+ 8618078869184
    WhatsApp的:+ 8618078869184
    微信:+ 8618078869184
    电子邮箱: [电子邮件保护]
    QQ:727926717
    Skype的:sky198710021
    地址:No.305室慧兰大厦No.273黄埔大道广州中国邮编:510620

    英语: 我们接受所有付款方式,例如PayPal,信用卡,西联汇款,支付宝,Money Bookers,电汇,LC,DP,DA,OA,Payoneer,如果您有任何疑问,请与我联系 [电子邮件保护] 或WhatsApp + 8618078869184

    • 贝宝。  www.paypal.com

      我们建议您使用支付宝购买我们的项目,贝宝是购买互联网上的安全方式。

      我们的每一个项目列表页面底部的顶部有一个贝宝标识支付。

      信用卡。如果您没有贝宝,但你有信用卡,你也可以点击黄色的PayPal按钮与您的信用卡支付。

      -------------------------------------------------- -------------------

      但是,如果你没有信用卡,没有一个PayPal帐户或很难得了一个PayPal户头,您可以使用以下方法:

      西联汇款。  www.westernunion.com

       

      西联支付对我说:

      名字/名字:迎风
      姓氏/姓/姓:张
      全名:张迎峰
      国家:中国
      城市:广州 

      -------------------------------------------------- -------------------

      T / T。  通过付费 T / T(电汇/电汇/银行转帐)
       
      第一银行信息(公司账户):
      SWIFT BIC:BKCHHKHHXXX
      银行名称:中国银行(香港)有限公司,香港
      银行地址:香港中环1花园道中国银行大厦
      银行代码:012
      账户名称:FMUSER INTERNATIONAL GROUP LIMITED
      户口号码。 :012-676-2-007855-0
      -------------------------------------------------- -------------------
      第二个银行信息(公司账户):
      受益人:Fmuser International Group Inc
      帐号:44050158090900000337
      收款银行:中国建设银行广东分行
      SWIFT 代码:PCBCCNBJGDX
      地址:中国广东省广州市天河区天河路553号
      **注意:当您转账到我们的银行账户时,请不要在备注区写任何东西,否则由于政府对国际贸易业务的政策,我们将无法收到付款。

    *它将1-2发送付款时明确工作日。

    *我们将它发送到您的PayPal地址。 如果你想更改地址,请将您的正确的地址和电话号码给我的电子邮件 [电子邮件保护]

    *如果包低于2kg,我们将通过邮寄的空运邮寄,需时约15-25days你手上。

    如果包比2kg多,我们将通过EMS,DHL,UPS发货,联邦快递快捷速递,大约需要7〜15days你手上。

    如果包比100kg多,我们将通过DHL或空运发送。 这将需要大约3〜7days你手上。

    所有套餐的形式中国广州。

    *包裹将作为“礼物”发送,并尽可能少地清除,买方无需支付“ TAX”。

    *舰后,我们会向您发送电子邮件,给你跟踪号码。

    保修期。
    与我们联系--- >>将物品退回给我们--- >>接收并发送另一个替换物品。

    名称:刘晓霞
    地址:305Fang HuiLanGe HuangPuDaDaoXi 273Hao TianHeQu中国广州。
    ZIP:510620
    热线: +8618078869184

    请返回到这个地址并记写你的PayPal地址,姓名,提出问题:

    列出所有问题

    昵称

    电子邮件

    有疑问吗?

      输入电子邮件以获取惊喜

      fmuser.org

      es.fmuser.org
      it.fmuser.org
      fr.fmuser.org
      de.fmuser.org
      af.fmuser.org ->荷兰语
      sq.fmuser.org ->阿尔巴尼亚人
      ar.fmuser.org ->阿拉伯语
      hy.fmuser.org - >亚美尼亚
      az.fmuser.org ->阿塞拜疆
      eu.fmuser.org ->巴斯克
      be.fmuser.org ->白俄罗斯语
      bg.fmuser.org - >保加利亚
      ca.fmuser.org ->加泰罗尼亚语
      zh-CN.fmuser.org ->中文(简体)
      zh-TW.fmuser.org - >中国(繁体)
      hr.fmuser.org ->克罗地亚语
      cs.fmuser.org ->捷克
      da.fmuser.org ->丹麦语
      nl.fmuser.org - >荷兰
      et.fmuser.org ->爱沙尼亚语
      tl.fmuser.org ->菲律宾
      fi.fmuser.org ->芬兰语
      fr.fmuser.org - >法国
      gl.fmuser.org ->加利西亚语
      ka.fmuser.org ->乔治亚
      de.fmuser.org ->德语
      el.fmuser.org - >希腊
      ht.fmuser.org ->海地克里奥尔语
      iw.fmuser.org ->希伯来语
      hi.fmuser.org ->印地语
      hu.fmuser.org - >匈牙利
      is.fmuser.org ->冰岛语
      id.fmuser.org ->印尼语
      ga.fmuser.org ->爱尔兰
      it.fmuser.org - >意大利
      ja.fmuser.org ->日语
      ko.fmuser.org ->韩文
      lv.fmuser.org ->拉脱维亚
      lt.fmuser.org - >立陶宛
      mk.fmuser.org ->马其顿语
      ms.fmuser.org ->马来语
      mt.fmuser.org ->马耳他语
      no.fmuser.org - >挪威
      fa.fmuser.org ->波斯语
      pl.fmuser.org ->波兰语
      pt.fmuser.org ->葡萄牙语
      ro.fmuser.org - >罗马尼亚
      ru.fmuser.org ->俄语
      sr.fmuser.org ->塞尔维亚语
      sk.fmuser.org ->斯洛伐克
      sl.fmuser.org - >斯洛文尼亚
      es.fmuser.org ->西班牙语
      sw.fmuser.org ->斯瓦希里语
      sv.fmuser.org ->瑞典语
      th.fmuser.org - >泰国
      tr.fmuser.org ->土耳其语
      uk.fmuser.org ->乌克兰语
      ur.fmuser.org ->乌尔都语
      vi.fmuser.org - >越南
      cy.fmuser.org ->威尔士语
      yi.fmuser.org - >意第绪语

       
  •  

    FMUSER更轻松地传输视频和音频!

  • 联系我们

    地址:
    305广州市环浦路273号汇兰大厦510620室

    电子邮箱:
    [电子邮件保护]

    电话/ WhatApps:
    +8618078869184

  • 分类目录

  • 订阅电子邮件

    名字或全名

    邮箱

  • 贝宝的解决方案  西联汇款中国银行
    电子邮箱:[电子邮件保护]   WhatsApp:+8618078869184 Skype:sky198710021 跟我聊天
    版权所有2006-2020技术支持 www.fmuser.org

    联系我们