yang1372073

yang1372073

0个粉丝

19

问答

0

专栏

2

资料

yang1372073  发布于  2017-08-28 22:06:44
采纳率 0%
19个问答
5514

【已解决】HI3516A HDMI音频

 
本帖最后由 yang1372073 于 2017-8-30 19:38 编辑

hi,求助一下,我想给3516A外接HDMI视频信号(带音频)。
设置了
himm 0x201200E0 0xe

    stAioAttr.enSamplerate   = AUDIO_SAMPLE_RATE_48000; //AUDIO_SAMPLE_RATE_8000;
    stAioAttr.enBitwidth     = AUDIO_BIT_WIDTH_16;
    stAioAttr.enWorkmode     = AIO_MODE_I2S_SLAVE; //AIO_MODE_I2S_MASTER;
    stAioAttr.enSoundmode    = AUDIO_SOUND_MODE_STEREO; //AUDIO_SOUND_MODE_MONO;
    stAioAttr.u32EXFlag      = 0;
    stAioAttr.u32FrmNum      = 30;
    stAioAttr.u32PtNumPerFrm = SAMPLE_AUDIO_PTNUMPERFRM;
    stAioAttr.u32ChnCnt      = 2; //1;
    stAioAttr.u32ClkSel      = 0;

但是AI采集一直是SAMPLE_COMM_AUDIO_AiProc: get ai frame select time out。不只是什么问题,还有哪里需要设置吗?
改成AIO_MODE_I2S_MASTER以后,可以采集数据,但一直是静音。按道理外接HDMI音频,应该是I2S进来的slave,请教一下??
我来回答
回答15个
时间排序
认可量排序

yang1372073

0个粉丝

19

问答

0

专栏

2

资料

yang1372073 2017-08-30 19:39:14
认可0
执行i2s_pin_mux()
{
        himm 0x200f01ac 0x2;        # i2s2_mclk
        himm 0x200f01b0 0x2;        # i2s2_bclk_tx
        himm 0x200f01b4 0x2;        # i2s2_ws_tx
        himm 0x200f01b8 0x2;        # i2s2_sd_tx
        himm 0x200f01bc 0x2;        # i2s2_bclk_rx
        himm 0x200f01c0 0x2;        # i2s2_ws_rx
        himm 0x200f01c4 0x2;        # i2s2_sd_rx
}
就可以了

13915426184

0个粉丝

15

问答

0

专栏

0

资料

13915426184 2017-09-19 14:45:06
认可0
我在调试HDMI输入源sil9135+hi3516a,视频没有问题了,但是音频,一直没有中断产生,
AI属性配置
    stAioAttr.enSamplerate   = AUDIO_SAMPLE_RATE_48000;
    stAioAttr.enBitwidth     = AUDIO_BIT_WIDTH_16;
    stAioAttr.enWorkmode     = AIO_MODE_I2S_SLAVE;
    stAioAttr.enSoundmode    = AUDIO_SOUND_MODE_STEREO;
    stAioAttr.u32EXFlag      = 0;
    stAioAttr.u32FrmNum      = 30;
    stAioAttr.u32PtNumPerFrm = SAMPLE_AUDIO_PTNUMPERFRM;
    stAioAttr.u32ChnCnt      = 2;
    stAioAttr.u32ClkSel      = 0;
ai没有中断产生,
如果把
    stAioAttr.enWorkmode     = AIO_MODE_I2S_SLAVE;
改成
    stAioAttr.enWorkmode     = AIO_MODE_I2S_MASTER;
则有中断,但把AI的数据保存是静音。

已经配置了外部codec,himm 0x201200E0 0xe 以及i2s管脚的复用配置,可是始终不出结果。
请大家帮忙确认一下,要设置成stAioAttr.enWorkmode     = AIO_MODE_I2S_SLAVE;还是master模式。还有其他的需要设置吗?谢谢!!

yang1372073

0个粉丝

19

问答

0

专栏

2

资料

yang1372073 2017-09-20 09:10:44
认可0
本帖最后由 yang1372073 于 2017-9-20 09:17 编辑

[quote][url=forum.php?mod=redirect&goto=findpost&pid=64285&ptid=23304]13915426184 发表于 2017-9-19 14:45[/url]
我在调试HDMI输入源sil9135+hi3516a,视频没有问题了,但是音频,一直没有中断产生,
AI属性配置
    stA ...[/quote]

没啥,其实就3点:1,stAioAttr的参数;2,himm写的内部/外部 codec;3,i2s_pin_mux管脚是否复用。
如果是HDMI音频,48kHz采样,16bits,
那么,
第一点,只要u32ChnCnt=2,那么enSoundmode设为mono或stereo都可以,此外注意stereo只需要对一半的通道处理,比如,
    /********************************************
      step 2: start Ai
    ********************************************/
    s32AiChnCnt = stAioAttr.u32ChnCnt;
    if (stAioAttr.enSoundmode == AUDIO_SOUND_MODE_STEREO)  //stereo, process half
    {
        s32AiChnCnt = 1;
    };
HDMI集成音频,直接slave进来
第二点,如果内部不做如G726等压缩,那么配置为外部codec,同时关闭step 1: config audio codec,,即不要配置内部codec,注释掉;如果要做进一步压缩,那么配置为内部codec,同时启用step1,配置内部codec;
第三点,slave要执行i2s_pin_mux,master不要执行i2s_pin_mux。

另外,再注意1,硬件要连对;2,HDMI输出源要正确,识别要正确。有些电视盒子,HDMI输出不标准,会出现偶尔识别不出来,多重启几次。
下边是一个sample_audio.c  
            case '1':
            {
                SAMPLE_AUDIO_AiAenc();
                break;
            }
的例子,验证过
/******************************************************************************
* function : Ai -> Aenc -> file
*                       -> Adec -> Ao
******************************************************************************/
HI_S32 SAMPLE_AUDIO_AiAenc(HI_VOID)
{
    HI_S32 i, s32Ret;
    AUDIO_DEV   AiDev = SAMPLE_AUDIO_AI_DEV;
    AI_CHN      AiChn;
    AUDIO_DEV   AoDev = SAMPLE_AUDIO_AO_DEV;
    AO_CHN      AoChn = 0;
    ADEC_CHN    AdChn = 0;
    HI_S32      s32AiChnCnt;
    HI_S32      s32AoChnCnt;
    HI_S32      s32AencChnCnt;
    AENC_CHN    AeChn;
    HI_BOOL     bSendAdec = HI_TRUE;
    FILE*        pfd = NULL;
    AIO_ATTR_S stAioAttr;

#ifdef HI_ACODEC_TYPE_AK7756
    /*****for ak7756en 8K24bit to 8K16bit I2S master****/
    stAioAttr.enSamplerate   = AUDIO_SAMPLE_RATE_8000;
    stAioAttr.enBitwidth     = AUDIO_BIT_WIDTH_16;
    stAioAttr.enWorkmode     = AIO_MODE_I2S_MASTER;
    stAioAttr.enSoundmode    = AUDIO_SOUND_MODE_MONO;
    stAioAttr.u32EXFlag      = AI_CUT;
    stAioAttr.u32FrmNum      = 30;
    stAioAttr.u32PtNumPerFrm = SAMPLE_AUDIO_PTNUMPERFRM;
    stAioAttr.u32ChnCnt      = 1;
    stAioAttr.u32ClkSel      = 1;
#elif HI_ACODEC_TYPE_TLV320AIC31
    stAioAttr.enSamplerate   = AUDIO_SAMPLE_RATE_8000;
    stAioAttr.enBitwidth     = AUDIO_BIT_WIDTH_16;
    stAioAttr.enWorkmode     = AIO_MODE_I2S_MASTER;
    stAioAttr.enSoundmode    = AUDIO_SOUND_MODE_MONO;
    stAioAttr.u32EXFlag      = 0;
    stAioAttr.u32FrmNum      = 30;
    stAioAttr.u32PtNumPerFrm = SAMPLE_AUDIO_PTNUMPERFRM;
    stAioAttr.u32ChnCnt      = 1;
    stAioAttr.u32ClkSel      = 1;
#else
    stAioAttr.enSamplerate   = AUDIO_SAMPLE_RATE_48000; //AUDIO_SAMPLE_RATE_8000;
    stAioAttr.enBitwidth     = AUDIO_BIT_WIDTH_16;
    stAioAttr.enWorkmode     = AIO_MODE_I2S_SLAVE; //AIO_MODE_I2S_MASTER;
    stAioAttr.enSoundmode    = AUDIO_SOUND_MODE_STEREO; //AUDIO_SOUND_MODE_MONO;
    stAioAttr.u32EXFlag      = 0;
    stAioAttr.u32FrmNum      = 30;
    stAioAttr.u32PtNumPerFrm = SAMPLE_AUDIO_PTNUMPERFRM;
    stAioAttr.u32ChnCnt      = 2; //1;
    stAioAttr.u32ClkSel      = 0;
#endif
    gs_bAioReSample = HI_FALSE;
    enInSampleRate  = AUDIO_SAMPLE_RATE_BUTT;
    enOutSampleRate = AUDIO_SAMPLE_RATE_BUTT;
    u32AencPtNumPerFrm = stAioAttr.u32PtNumPerFrm;

    /********************************************
      step 1: config audio codec
    ********************************************/
#if(0)
#ifndef HI_ACODEC_TYPE_AK7756
    /* config internal audio codec */
    s32Ret = SAMPLE_COMM_AUDIO_CfgAcodec(&stAioAttr);
    if (HI_SUCCESS != s32Ret)
    {
        SAMPLE_DBG(s32Ret);
        return HI_FAILURE;
    }
#endif
#endif

    /********************************************
      step 2: start Ai
    ********************************************/
    s32AiChnCnt = stAioAttr.u32ChnCnt;
    if (stAioAttr.enSoundmode == AUDIO_SOUND_MODE_STEREO)  //stereo, process half
    {
        s32AiChnCnt = 1;
    }
    s32Ret = SAMPLE_COMM_AUDIO_StartAi(AiDev, s32AiChnCnt, &stAioAttr, enOutSampleRate, gs_bAioReSample, NULL, 0);
    if (s32Ret != HI_SUCCESS)
    {
        SAMPLE_DBG(s32Ret);
        return HI_FAILURE;
    }

    /********************************************
      step 3: start Aenc
    ********************************************/
    s32AencChnCnt = 1;
    s32Ret = SAMPLE_COMM_AUDIO_StartAenc(s32AencChnCnt, u32AencPtNumPerFrm, gs_enPayloadType);
    if (s32Ret != HI_SUCCESS)
    {
        SAMPLE_DBG(s32Ret);
        return HI_FAILURE;
    }
#if(0)
#ifdef HI_ACODEC_TYPE_AK7756
    /* config external audio codec after aio enable*/
    s32Ret = SAMPLE_COMM_AUDIO_CfgAcodec(&stAioAttr, gs_bMicIn);
    if (HI_SUCCESS != s32Ret)
    {
        SAMPLE_DBG(s32Ret);
        return HI_FAILURE;
    }
#endif
#endif

    /********************************************
      step 4: Aenc bind Ai Chn
    ********************************************/
    for (i = 0; i < s32AencChnCnt; i++)
    {
        AeChn = i;
        AiChn = i;

        if (HI_TRUE == gs_bUserGetMode)
        {
            s32Ret = SAMPLE_COMM_AUDIO_CreatTrdAiAenc(AiDev, AiChn, AeChn);
            if (s32Ret != HI_SUCCESS)
            {
                SAMPLE_DBG(s32Ret);
                return HI_FAILURE;
            }
        }
        else
        {
            s32Ret = SAMPLE_COMM_AUDIO_AencBindAi(AiDev, AiChn, AeChn);
            if (s32Ret != HI_SUCCESS)
            {
                SAMPLE_DBG(s32Ret);
                return s32Ret;
            }
        }
        printf("Ai(%d,%d) bind to AencChn:%d ok!\n", AiDev , AiChn, AeChn);
    }

    /********************************************
      step 5: start Adec & Ao. ( if you want )
    ********************************************/
    if (HI_TRUE == bSendAdec)
    {
        s32Ret = SAMPLE_COMM_AUDIO_StartAdec(AdChn, gs_enPayloadType);
        if (s32Ret != HI_SUCCESS)
        {
            SAMPLE_DBG(s32Ret);
            return HI_FAILURE;
        }

        s32AoChnCnt = stAioAttr.u32ChnCnt;
        if (stAioAttr.enSoundmode == AUDIO_SOUND_MODE_STEREO)  //stereo, process half
        {
            s32AoChnCnt = 1;
        }
        s32Ret = SAMPLE_COMM_AUDIO_StartAo(AoDev, s32AoChnCnt, &stAioAttr, enInSampleRate, gs_bAioReSample, NULL , 0);
        if (s32Ret != HI_SUCCESS)
        {
            SAMPLE_DBG(s32Ret);
            return HI_FAILURE;
        }

        pfd = SAMPLE_AUDIO_OpenAencFile(AdChn, gs_enPayloadType);
        if (!pfd)
        {
            SAMPLE_DBG(HI_FAILURE);
            return HI_FAILURE;
        }
        s32Ret = SAMPLE_COMM_AUDIO_CreatTrdAencAdec(AeChn, AdChn, pfd);
        if (s32Ret != HI_SUCCESS)
        {
            SAMPLE_DBG(s32Ret);
            return HI_FAILURE;
        }

        s32Ret = SAMPLE_COMM_AUDIO_AoBindAdec(AoDev, AoChn, AdChn);
        if (s32Ret != HI_SUCCESS)
        {
            SAMPLE_DBG(s32Ret);
            return HI_FAILURE;
        }

        printf("bind adec:%d to ao(%d,%d) ok \n", AdChn, AoDev, AoChn);
    }

    printf("\nplease press twice ENTER to exit this sample\n");
    getchar();
    getchar();

    /********************************************
      step 6: exit the process
    ********************************************/
    if (HI_TRUE == bSendAdec)
    {
        s32Ret = SAMPLE_COMM_AUDIO_DestoryTrdAencAdec(AeChn);
        if (s32Ret != HI_SUCCESS)
        {
            SAMPLE_DBG(s32Ret);
            return HI_FAILURE;
        }

        s32Ret = SAMPLE_COMM_AUDIO_StopAo(AoDev, s32AoChnCnt, gs_bAioReSample, HI_FALSE);
        if (s32Ret != HI_SUCCESS)
        {
            SAMPLE_DBG(s32Ret);
            return HI_FAILURE;
        }

        s32Ret = SAMPLE_COMM_AUDIO_StopAdec(AdChn);
        if (s32Ret != HI_SUCCESS)
        {
            SAMPLE_DBG(s32Ret);
            return HI_FAILURE;
        }

        s32Ret = SAMPLE_COMM_AUDIO_AoUnbindAdec(AoDev, AoChn, AdChn);
        if (s32Ret != HI_SUCCESS)
        {
            SAMPLE_DBG(s32Ret);
            return HI_FAILURE;
        }

    }

    for (i = 0; i < s32AencChnCnt; i++)
    {
        AeChn = i;
        AiChn = i;

        if (HI_TRUE == gs_bUserGetMode)
        {
            s32Ret = SAMPLE_COMM_AUDIO_DestoryTrdAi(AiDev, AiChn);
            if (s32Ret != HI_SUCCESS)
            {
                SAMPLE_DBG(s32Ret);
                return HI_FAILURE;
            }
        }
        else
        {
            s32Ret = SAMPLE_COMM_AUDIO_AencUnbindAi(AiDev, AiChn, AeChn);
            if (s32Ret != HI_SUCCESS)
            {
                SAMPLE_DBG(s32Ret);
                return HI_FAILURE;
            }
        }
    }

    s32Ret = SAMPLE_COMM_AUDIO_StopAenc(s32AencChnCnt);
    if (s32Ret != HI_SUCCESS)
    {
        SAMPLE_DBG(s32Ret);
        return HI_FAILURE;
    }

    s32Ret = SAMPLE_COMM_AUDIO_StopAi(AiDev, s32AiChnCnt, gs_bAioReSample, HI_FALSE);
    if (s32Ret != HI_SUCCESS)
    {
        SAMPLE_DBG(s32Ret);
        return HI_FAILURE;
    }

    return HI_SUCCESS;
}

13915426184

0个粉丝

15

问答

0

专栏

0

资料

13915426184 2017-09-20 09:29:56
认可0
非常感谢您的回复!

关于您提到的第二点,我们的HDMI音频是随着HDMI线缆传递进来的,需要压缩成G711格式。
我配置成外部codec:himm 0x201200E0 0xe。
我看HI3516a资料上说:
Hi35xx SDK 音频的编码类型G711、G726、ADPCM_DVI4、ADPCM_ORG_DVI4、
ADPCM_IMA 均使用CPU 软件编解码。
1 好像G726是软件编码。那我的HDMI音频还需要配置成内部codec吗?
2 根据许多人提供的HDMI音频调试经验,他们配成I2S salve模式居多。
   那就是要SIO提供BCLK和LRCLK。
   但是我发现SIL9135上没有提到如何提供BCLK和LRCLK?那我配置slave模式可以吗?
3 sil9135做HDMI接收器,对声音的处理不多,它在整个音频传递过程中做了什么角色?

问题很多,请拨冗辛苦回复一下。
谢谢!!

yang1372073

0个粉丝

19

问答

0

专栏

2

资料

yang1372073 2017-09-20 13:15:20
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=64348&ptid=23304]13915426184 发表于 2017-9-20 09:29[/url]
非常感谢您的回复!

关于您提到的第二点,我们的HDMI音频是随着HDMI线缆传递进来的,需要压缩成G711格式 ...[/quote]

1.需要。采用G726压缩,要使用内部的codec,HDMI音频配置成内部codec,himm 0x201200E0 0xd       
同时启用step1
    /********************************************
      step 1: config audio codec
    ********************************************/
#if(1)
#ifndef HI_ACODEC_TYPE_AK7756
    /* config internal audio codec */
    s32Ret = SAMPLE_COMM_AUDIO_CfgAcodec(&stAioAttr);
    if (HI_SUCCESS != s32Ret)
    {
        SAMPLE_DBG(s32Ret);
        return HI_FAILURE;
    }
#endif
#endif

2.sil9135不了解,按道理是slave。
3.这个我们用的是ADV7611+HI3516A,ADV7611是个HDMI receiver。sil9135不了解,抱歉。

13915426184

0个粉丝

15

问答

0

专栏

0

资料

13915426184 2017-10-09 10:49:30
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=64375&ptid=23304]yang1372073 发表于 2017-9-20 13:15[/url]
1.需要。采用G726压缩,要使用内部的codec,HDMI音频配置成内部codec,himm 0x201200E0 0xd       
同时启用st ...[/quote]

打扰一下,我的音频没有问题了。
但是视频不可以自适应,就是说720P和1080P的视频发送过来,都可以接收。
但是在HDMI AVI InfoFrame中没有区别,同时芯片自己解析的视频格式一直是720P大小。即使我切换成1080P也是显示720的大小。
我尝试了HDMI接收芯片复位,HI3516a设备重启,乐视盒子重启等,依旧是同样的结果。
另外,我将播放720P视频和1080P视频的寄存器全部比较了一下,没发现什么特别的区别。
请问,您的ADV7611有这种情况吗?HDMI AVI InfoFrame是发送方发过来的,接收方只是解析,怎么会不变那?
请帮忙看一下!谢谢!!

yang1372073

0个粉丝

19

问答

0

专栏

2

资料

yang1372073 2017-10-09 11:31:47
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=79177&ptid=23304]13915426184 发表于 2017-10-9 10:49[/url]
打扰一下,我的音频没有问题了。
但是视频不可以自适应,就是说720P和1080P的视频发送过来,都可以接收 ...[/quote]

哦,ADV7611暂时没有发现这种情况哦。
视频源是1080P或者720P,ADV7611的寄存器显示的分辨率是不一样的哦。
如:i2c_read  2 0x68 0x09 0x0c,在0x9-0x0c这些寄存器会显示分辨率大小,1080p和720p是不一样的哦。

另外,你需要确定你的视频源的真实性哦,确保是真的1080p和720p。某些源可能写着各种分辨率,实际上就是一种。
如果视频确定没有问题的话,那我就不好判断了

mengxp

0个粉丝

18

问答

0

专栏

1

资料

mengxp 2017-10-09 11:53:12
认可0
本帖最后由 mengxp 于 2017-10-9 12:06 编辑

[quote][url=forum.php?mod=redirect&goto=findpost&pid=79190&ptid=23304]yang1372073 发表于 2017-10-9 11:31[/url]
哦,ADV7611暂时没有发现这种情况哦。
视频源是1080P或者720P,ADV7611的寄存器显示的分辨率是不一样的哦 ...[/quote]

厉害厉害!学习了!
mark

[url]https://ezchina.analog.com/message/15120[/url]

crssignup

0个粉丝

4

问答

0

专栏

0

资料

crssignup 2017-10-11 15:27:05
认可0
请教下,为什么采用hisi的硬件编码,要配置成内部codec呢?

yang1372073

0个粉丝

19

问答

0

专栏

2

资料

yang1372073 2017-10-11 17:32:32
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=79292&ptid=23304]crssignup 发表于 2017-10-11 15:27[/url]
请教下,为什么采用hisi的硬件编码,要配置成内部codec呢?[/quote]

对海思来说,你用的是他自己的软硬件编解码器,不是外接的(比如直接HDMI集成进来的,后续也不压缩。也不是其他芯片接收来的,海思不做任何前端编码、前处理)

crssignup

0个粉丝

4

问答

0

专栏

0

资料

crssignup 2017-10-12 09:30:10
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=79304&ptid=23304]yang1372073 发表于 2017-10-11 17:32[/url]
对海思来说,你用的是他自己的软硬件编解码器,不是外接的(比如直接HDMI集成进来的,后续也不压缩。也不 ...[/quote]

额,还是不是很理解,,HDMIIN音频模块不就是相当于外部codec? 将AI采集的数据送往AENC编码(G711、G726编码)的话,这个与AI对接的codec,是内部codec还是外部codec,有什么关系呢?

yang1372073

0个粉丝

19

问答

0

专栏

2

资料

yang1372073 2017-10-12 12:14:16
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=79325&ptid=23304]crssignup 发表于 2017-10-12 09:30[/url]
额,还是不是很理解,,HDMIIN音频模块不就是相当于外部codec? 将AI采集的数据送往AENC编码(G711、G726 ...[/quote]

对的。HDMI音频模块就是外部codec。
将AI采集的数据送往AENC编码(G711、G726编码)的话,这个与AI对接的codec,是内部codec。
粗暴点说,只要你使用了海思内部的编解码器,那就是配置为内部codec。因为你使用海思G726,G711等编码器时,需要配置启用这些编码器,也就是要使用他的内部codec。
如果只是简单地接进来,不做压缩、增强、重采样等处理,直接传输、存储什么的。那就不需要内置启用海思内部codec,配置为外部codec就好。

出手无招

0个粉丝

12

问答

0

专栏

0

资料

出手无招 2019-10-08 13:41:45
认可0
请问有没有调试过hisi外置codec的芯片???

zzyterry

0个粉丝

2

问答

0

专栏

0

资料

zzyterry 2020-04-30 16:47:07
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=79177&ptid=23304]13915426184 发表于 2017-10-9 10:49[/url]
打扰一下,我的音频没有问题了。
但是视频不可以自适应,就是说720P和1080P的视频发送过来,都可以接收 ...[/quote]

你好,我的音频是有中断但是没有采集到声音,有可能是什么原因呢?

qn1615192393

0个粉丝

0

问答

0

专栏

0

资料

qn1615192393 2021-03-08 16:42:03
认可0
您好,我想咨询个问题,我现在也是用的是adv7611+hi3516a进行hdmi音频传输。
由于我需要内部编码,于是我设置成了himm 0x201200E0 0xd,
然后我这边也配置了i2s管脚复用,我的复用管脚是jtag管脚。
海思的sdk配置的是48k,slave模式。
另外我也测试过了,7611的AP管脚确实是有PCM输出的,
您这边能不能提供一些思路?
或将文件直接拖到这里
悬赏:
E币
网盘
* 网盘链接:
* 提取码:
悬赏:
E币

Markdown 语法

  • 加粗**内容**
  • 斜体*内容*
  • 删除线~~内容~~
  • 引用> 引用内容
  • 代码`代码`
  • 代码块```编程语言↵代码```
  • 链接[链接标题](url)
  • 无序列表- 内容
  • 有序列表1. 内容
  • 缩进内容
  • 图片![alt](url)
+ 添加网盘链接/附件

Markdown 语法

  • 加粗**内容**
  • 斜体*内容*
  • 删除线~~内容~~
  • 引用> 引用内容
  • 代码`代码`
  • 代码块```编程语言↵代码```
  • 链接[链接标题](url)
  • 无序列表- 内容
  • 有序列表1. 内容
  • 缩进内容
  • 图片![alt](url)
相关问答
无更多相似问答 去提问
举报反馈

举报类型

  • 内容涉黄/赌/毒
  • 内容侵权/抄袭
  • 政治相关
  • 涉嫌广告
  • 侮辱谩骂
  • 其他

详细说明

易百纳技术社区