ffmpeg 命令行详解

一、三个自带程序的功能

  • ffmpeg 超快音视频编码器
  • ffplay 简单媒体播放器
  • ffprobe 简单多媒体流分析器

二、常用命令

1. 播放文件

  • 播放本地视频

ffplay .\testvideo1.mp4

  • 播放网络视频

ffplay rtmp://ns8.indexforce.com/home/mystream

2. 剪辑多媒体文件

  • 按时间裁剪指定长度

ffmpeg -i .\testvideo1.mp4 -ss 00:00:10 -t 00:00:20 -codec copy testvideo1_out.mp4

  • 提取音频或视频

提取音频

ffmpeg -i .\testvideo1.mp4 -acodec copy -vn testvideo1_out.aac

保留封装格式 提取视频

ffmpeg -i .\testvideo1.mp4 -acodec copy -an testvideo1_out.mp4

3. yuv相关

  • mp4 转 yuv

ffmpeg -ss 00:00:30 -t 10 -i testvideo1.mp4 -pix_fmt yuv420p -s 640x480 testvideo1_yuv420p_640x480.yuv

  • 播放yuv

ffplay -pixel_format yuv420p -video_size 640x480 -framerate 25 .\testvideo1_yuv420p_640x480.yuv

4. rgb相关

  • mp4 转 rgb

ffmpeg -ss 00:00:30 -t 10 -i testvideo1.mp4 -pix_fmt rgb24 -s 640x480 testvideo1_rgb24_640x480.rgb

  • 播放rgb

ffplay -pixel_format rgb24 -video_size 640x480 -framerate 25 .\testvideo1_rgb24_640x480.rgb

5. YUV 转 RGB

ffmpeg -s 640x480 -pix_fmt yuv420p -i testvideo1_yuv420p_640x480.yuv -pix_fmt rgb24 -s 320x240 testvideo1_rgb24_320x240.rgb

6. pcm 相关

参数解释

-f s32le PCM signed 32-bit little-endian samples

-ac 2 2 channel

-ar 48000 sample rate 48000Hz

  • mp3 转 pcm

`ffmpeg -i testvideo1_48000_129_2.mp3 -ar 48000 -ac 2 -f f32le testvideo1_48000_129_2.pcm`

  • mp4 转 pcm

ffmpeg -ss 00:00:30 -t 10 -i testvideo1.mp4 -ar 48000 -ac 2 -f f32le testvideo1_48000_2_f32le.pcm

ffmpeg -muxers | findstr PCM

ffmpeg -ss 00:00:30 -t 10 -i testvideo1.mp4 -ar 48000 -ac 2 -sample_fmt s16 testvideo1_48000_2_s16.wav

ffmpeg -sample_fmts

ffmpeg -ss 00:00:30 -t 10 -i testvideo1.mp4 -ar 48000 -ac 2 -codec:a pcm_s16le testvideo1_48000_2_s16le.wav

 ffmpeg -encoders | findstr pcm

  • 播放 pcm

ffplay -ar 48000 -ac 2 -f f32le testvideo1_48000_2_f32le.pcm

7. 转封装格式

  • 保持编码格式

ffmpeg -i .\testvideo3.mp4 -vcodec copy -acodec copy testvideo3.ts

ffmpeg -i .\testvideo3.mp4 -codec copy testvideo3_2.ts

  • 改变编码格式

ffmpeg -i .\testvideo3.mp4 -vcodec libx265 -acodec libmp3lame testvideo3_h265_mp3.mkv

  • 修改帧率

ffmpeg -i .\testvideo3.mp4 -r 15 testvideo3_r15.mp4

  • 修改视频码率

ffmpeg -i .\testvideo3.mp4 -b:v 400k testvideo3_400k.mp4

ffmpeg -i .\testvideo3.mp4 -b 400k testvideo3_400k_b.mkv (此时音频也被重新编码)

  • 修改音频码率

如果不想重新编码video 需要加上 -vcodec copy

ffmpeg -i .\testvideo3.mp4 -b:a 192k testvideo3_ba_192k.mp4

  • 修改视频分辨率

ffmpeg -i .\testvideo3.mp4 -s 640x320 testvideo3_640x320.mp4

  • 修改音频采样率

ffmpeg -i .\testvideo3.mp4 -ar 48000 testvideo3_48000hz.mp4

8. 命令行查看帮助文档

  • 基本信息 ffmpeg -h
  • 高级信息 ffmpeg -h longm
  • 所有信息 ffmpeg -h full ffplay -h
  • 搜索指定内容 ffmpeg -h full | findstr 264
  • 分页查找 ffmpeg -h full | more
  • 指定查找 ffmpeg -encoders | findstr 265
  • 查找指定属性的内容 ffmpeg -h encoder=libx264

9. ffplay 简单过滤器

  • 视频旋转 ffplay -i .\testvideo1.mp4 -vf transpose=1
  • 视频翻转
    • 垂直翻转 ffplay -i .\testvideo1.mp4 -vf vflip
    • 水平翻转 ffplay -i .\testvideo1.mp4 -vf hflip
  • 视频旋转和翻转

ffplay -i .\testvideo1.mp4 -vf transpose=1,hflip

  • 视频变速

ffplay -i .\testvideo1.mp4 -vf setpts=PTS/2 2倍速

  • 音频变速

ffplay -i .\testvideo1.mp4 -af atempo=2 2倍速

  • 视频音频同时变速

ffplay -i .\testvideo1.mp4 -af atempo=2 -vf setpts=PTS/2 2倍速

10. 视频裁剪合并

  1. 如果音视频格式不统一,则先统一格式

ffmpeg -i .\testvideo1.mp4 -ss 30 -t 10 -vcodec libx264 -acodec aac clip_1.mp4

ffmpeg -i .\testvideo2.mp4 -ss 30 -t 10 -vcodec libx264 -acodec aac clip_2.mp4

ffmpeg -i .\testvideo3.mp4 -ss 30 -t 10 -vcodec libx264 -acodec aac clip_3.mp4

  1. 将统一格式后的文件转成ts格式(-vbsf 提高兼容性)

ffmpeg -i .\clip_1.mp4 -codec copy -vbsf h264_mp4toannexb clip_1.ts

ffmpeg -i .\clip_2.mp4 -codec copy -vbsf h264_mp4toannexb clip_2.ts

ffmpeg -i .\clip_3.mp4 -codec copy -vbsf h264_mp4toannexb clip_3.ts

  1. mp4 转 flv

ffmpeg -i .\clip_1.mp4 -codec copy clip_1.flv

ffmpeg -i .\clip_2.mp4 -codec copy clip_2.flv

ffmpeg -i .\clip_3.mp4 -codec copy clip_3.flv

  1. 拼接
  • 以mp4格式拼接
    • 方法一:ffmpeg -i "concat:clip_1.mp4|clip_2.mp4|clip_3.mp4" -codec copy out_mp4_1.mp4 (失败)
    • 方法二:ffmpeg -f concat -i .\clip_mp4.txt -codec copy out_mp4_2.mp4 (成功)
  • 以flv格式拼接
    • 方法一:ffmpeg -i "concat:clip_1.flv|clip_2.flv|clip_3.flv" -codec copy out_flv_1.mp4 (失败)
    • 方法二:ffmpeg -f concat -i .\clip_flv.txt -codec copy out_flv_2.mp4 (成功)
  • 以ts格式拼接
    • 方法一:ffmpeg -i "concat:clip_1.ts|clip_2.ts|clip_3.ts" -codec copy out_ts_1.mp4 (成功)
    • 方法二:ffmpeg -f concat -i .\clip_ts.txt -codec copy out_ts_2.mp4 (成功)

注意:

  1. 建议使用方法二进行拼接
  2. 转成ts格式进行拼接
  3. 视频分辨率可以不同,但是(视频、音频)编码格式需要统一

11. 图片和视频相互转换

  • 截取一张图

ffmpeg -i .\clip_2.mp4 -y -f image2 -ss 5 -vframes 1 -s 640x360 clip_2.bmp

ffmpeg -i .\clip_2.mp4 -y -f image2 -ss 5 -vframes 1 -s 640x360 clip_2.jpg

  • 截图多张图

ffmpeg -i .\clip_2.mp4 -ss 5 -r 15 -s 640x360 clip_2_%02d.jpg

  • 多图转视频

ffmpeg -i clip_2_%02d.jpg -r 25 iamge_to_video.mp4

  • 视频转gif

ffmpeg -i .\clip_2.mp4 -ss 5 -r 1 -s 640x360 clip_2_1.gif

ffmpeg -i .\clip_2.mp4 -ss 5 -r 25 -s 640x360 clip_2_25.gif

  • gif转视频

ffmpeg -f gif -i clip_2_25.gif gif_to_video.mp4

12. 录制

安装dshow

Screen Capturer

查看设备名字

ffmpeg -list_devices true -f dshow -i dummy

  • 录制视频

使用 dshow 下边的ffmpeg C:\Program Files (x86)\Screen Capturer Recorder\configuration_setup_utility\vendor\ffmpeg\bin(新版本ffmpeg 不支持)

    • 录制桌面

.\ffmpeg.exe -f dshow -i video="screen-capture-recorder" record_desktop.mp4

生成的文件在 C:\Users\wangkun\AppData\Local\VirtualStore\Program Files (x86)\Screen Capturer Recorder\configuration_setup_utility\vendor\ffmpeg\bin

    • 录制摄像头

.\ffmpeg.exe -f dshow -i video="HD Camera" record_camera.mp4

  • 录制声音
    • 系统声音

.\ffmpeg.exe -f dshow -i audio="virtual-audio-capturer" record_system.aac

    • 系统+麦克风声音

.\ffmpeg.exe -f dshow -i audio="virtual-audio-capturer" -f dshow -i audio=" " -filter_complex amix=inputs=2:duration=first:dropout_transition=2 record_system_realtek.aac

  • 同时录制视频和声音

.\ffmpeg.exe -f dshow -i audio="virtual-audio-capturer" -f dshow -i audio="麦克风 (Earbuds X3)" -filter_complex amix=inputs=2:duration=first:dropout_transition=2 -f dshow -i video="screen-capture-recorder" record_system_realtek_screencapture.mp4

  • 查看音视频录制的可选参数

./ffmpeg.exe -f dshow -list_options true -i video="screen-capture-recorder"

./ffmpeg.exe -f dshow -list_options true -i audio="麦克风 (Earbuds X3)"

  • 指定参数录制音视频

.\ffmpeg.exe -f dshow -i audio="virtual-audio-capturer" -f dshow -i audio="麦克风 (Earbuds X3)" -filter_complex amix=inputs=2:duration=first:dropout_transition=2 -f dshow -video_size 1920x1080 -framerate 15 -i video="screen-capture-recorder" -vcodec libx264 -b:v 3M record_system_realtek_screencapture_custom_param.mp4

13. 拉流

  • 播放

ffplay rtmp://la.sinsam.com/v/sinsam_h264

  • 下载

ffmpeg -i rtmp://la.sinsam.com/v/sinsam_h264 -codec copy dump.flv

对于不是rtmp的协议 -codec copy 需要谨慎使用,不写会自动转码

14. 裁剪

  • 输出到文件

ffmpeg -i .\image.jpg -vf crop=iw/3:ih:0:0 out1.jpg

ffmpeg -i .\image.jpg -vf crop=iw/3:ih:iw/3:0 out2.jpg

  • ffplay直接查看输出效果

ffplay -i .\image.jpg -vf crop=iw/3:ih:iw/3:0

  • 视频

ffmpeg -i .\video.mp4 -vf crop=iw/3:ih:iw/3:0 out.mp4

ffplay -i .\video.mp4 -vf crop=iw/3:ih:iw/3:0

15. 水印

  1. 文字水印
  • drawtext 参数列表

参数

类型

说明

text

字符串

文字

textfile

字符串

文字文件

box

布尔

文字区域背景框

boxcolor

色彩

文字区域背景框颜色

font

字符串

字体名称 默认为Sans字体

fontsize

整数

字体大小

x

数字

文字位置默认为0

y

数字

文字位置默认为0

alpha

浮点数

透明度 0-1之间

fontfile

字符串

字体文件路径

  • 查看效果

ffplay -i .\video.mp4 -vf "drawtext=text='hello':box=true:boxcolor=red:fontfile=C\\:/Windows/fonts/simhei.ttf:fontcolor=yellow:fontsize=100:x=50:y=100:alpha=0.5"

  • 直接输出文件

ffmpeg -i .\video.mp4 -vf "drawtext=text='hello':box=true:boxcolor=red:fontfile=C\\:/Windows/fonts/simhei.ttf:fontcolor=yellow:fontsize=100:x=50:y=100:alpha=0.5" video_drawtext.mp4

  • 水印内容显示本地时间

ffplay -i .\video.mp4 -vf "drawtext=text='%{localtime\:%Y\-%m\-%d %H_%M_%S}':box=true:boxcolor=red:fontfile=C\\:/Windows/fonts/simhei.ttf:fontcolor=yellow:fontsize=100:x=50:y=100:alpha=0.5"

显示本地时间存储到文件时,需要加上-re 否则时间不对

ffmpeg -re -i .\video.mp4 -vf "drawtext=text='%{localtime\:%Y\-%m\-%d %H_%M_%S}':box=true:boxcolor=red:fontfile=C\\:/Windows/fonts/simhei.ttf:fontcolor=yellow:fontsize=100:x=50:y=100:alpha=0.5" video_drawtext_localtime.mp4

  • 定时显示水印

3秒显示一次

lt(x,y) x<y ? 1:0

ffplay -i .\video.mp4 -vf "drawtext=text='hello':box=true:boxcolor=red:fontfile=C\\:/Windows/fonts/simhei.ttf:fontcolor=yellow:fontsize=100:x=50:y=100:alpha=0.5:enable=lt(mod(t\,3)\,1)"

  • 跑马灯效果

ffplay -i .\video.mp4 -vf "drawtext=text='hello':box=true:boxcolor=red:fontfile=C\\:/Windows/fonts/simhei.ttf:fontcolor=yellow:fontsize=100:x=mod(100*t\,w):y=abs(sin(t)*h*0.7):alpha=0.5"

  1. 图片水印
  • movie 参数列表

参数

类型

说明

filename

字符串

输入的文件名(文件、协议、设备)

format_name,f

字符串

输入的封装格式

stream_index,si

整数

输入的流索引编号

seek_point,sp

浮点数

seek输入流的时间位置

streams,s

字符串

输入多个流的流信息

loop

整数

循环次数

discontinuity

时间差值

支持跳动的时间戳差值

  • 水印在左上角

ffplay -i .\video.mp4 -vf "movie=logo.png[watermark];[in][watermark]overlay=x=20:y=20[out]"

  • 水印在右下角

ffplay -i .\video.mp4 -vf "movie=logo.png[watermark];[in][watermark]overlay=x=main_w-overlay_w-10:y=main_h-overlay_h-10[out]"

main_w 视频单帧宽

main_h 视频单帧高

overlay_w 水印图片宽

overlay_h 水印图片高

  • 水印跑马灯

ffplay -i .\video.mp4 -vf "movie=logo.png[watermark];[in][watermark]overlay=x=mod(100*t\,main_w):y=abs(sin(t)*h*0.7)[out]"

ffplay -i .\video.mp4 -vf "movie=logo.png[watermark];[in][watermark]overlay=x=mod(100*t\,w):y=abs(sin(t)*h*0.7)[out]"

ffmpeg -i .\video.mp4 -vf "movie=logo.png[watermark];[in][watermark]overlay=x=mod(100*t\,main_w):y=abs(sin(t)*h*0.7)[out]" video_movie.mp4

16. 画中画

  • overlay 参数列表

参数

类型

说明

x

整数

x坐标

y

整数

y坐标

eof_action

整数

遇到eof表示时的处理方式,默认为重复

  • repeat(0):重复前一帧
  • endcall(1):停止所有流
  • pass(2):保留主图层

shortest

布尔

终止最短的视频时全部终止(默认 false)

format

整数

设置output的像素格式,默认为yuv420p

  • yuv420(0)
  • yuv422(1)
  • yuv444(2)
  • rgb(3)

ffplay -i .\video.mp4 -vf "movie=video.mp4,scale=400x300[subvideo];[in][subvideo]overlay=x=mod(100*t\,main_w):y=abs(sin(t)*h*0.7):eof_action=2[out]"

17. 多宫格

  • 2X2

ffmpeg -i .\video.mp4 -i .\video.mp4 -i .\video.mp4 -i .\video.mp4 -filter_complex "nullsrc=size=640x480[base];[0:v]setpts=PTS-STARTPTS,scale=320x240[upperleft];[1:v]setpts=PTS-STARTPTS,scale=320x240[upperright];[2:v]setpts=PTS-STARTPTS,scale=320x240[lowerleft];[3:v]setpts=PTS-STARTPTS,scale=320x240[lowerright];[base][upperleft]overlay=shortest=1[tmp1];[tmp1][upperright]overlay=shortest=1:x=320[tmp2];[tmp2][lowerleft]overlay=shortest=1:y=240[tmp3];[tmp3][lowerright]overlay=shortest=1:x=320:y=240" out_video_2x2.mp4

  • 2x1

ffmpeg -i .\video.mp4 -i .\video.mp4 -filter_complex "nullsrc=size=640x480[base];[0:v]setpts=PTS-STARTPTS,scale=320x240[upperleft];[1:v]setpts=PTS-STARTPTS,scale=320x240[upperright];[base][upperleft]overlay=shortest=1[tmp1];[tmp1][upperright]overlay=shortest=1:x=320" out_video_2x1.mp4

三、转码流程

ffmpeg -i .\testvideo1.mp4 -acodec copy -vcodec libx264 -s 960x360 testvideo1_960x360.flv

ffmpeg -i .\testvideo1.mp4 -acodec copy -vcodec libx265 -s 960x360 testvideo1_960x360.mkv

ffmpeg调用libavformat库(包含解复用器)来读取输入文件,并从中获取包含编码数据的数据包。当有多个输入文件时,ffmpeg试图通过跟踪任何活动输入流上的最低时间戳来保持它们的同步。

编码后的数据包随后被传递到解码器(除非流选择了streamcopy,请参阅进一步的描述)。解码器产生未压缩的帧(原始视频/PCM音频/…),可以通过滤波进行进一步处理(见下一节)。在滤波之后,帧被传递到编码器,编码器对它们进行编码并输出编码的分组。最后,这些数据被传递给复用器,复用器将编码的数据包写入输出文件。

四、ffplay 主要选项

1. -x width

指定显示宽度

2. -y height

指定显示高度

3. -fs

全屏模式

4. -an

不显示音频

5. -vn

不显示视频

6. -sn

不显示字幕

7. -ss pos

Seek 位置

8. -t duration

播放的时间长度

9. -bytes

按字节seek

10. -seek_interval

设置使用左/右键seek的自定义时间间隔(以秒为单位)默认值为10秒

11. -nodisp

禁用图形显示

12. -noborder

窗口无边框

13. -alwaysontop

窗口总是在最上边 适用于: X11 with SDL >= 2.0.5, Windows SDL >= 2.0.6.

14. -volume

设置启动音量。0表示静音,最大100

15. -f fmt

指定格式

16. -window_title title

设置窗口名称 默认显示流名称

17. -left title

设置窗口x位置 默认居中

18. -top title

设置窗口y位置 默认居中

19. -loop number

循环播放次数 0表示不循环

20. -showmode mode

设置显示模式:

‘0, video’ 显示视频

‘1, waves’显示音频波形图

‘2, rdft’

使用RDFT((逆)实离散傅立叶变换)显示音频频带

默认值为“视频”,如果视频不存在或无法播放,则自动选择“rdft”。

通过按w键,可以交互式地循环使用可用的显示模式。

21. -vf filtergraph

过滤视频流

22. -af filtergraph

过滤音频流

23. -i input_url

输入源

24. -stats

打印几个播放统计信息,特别是显示流持续时间、编解码器参数、流中的当前位置以及音频/视频同步漂移。除非日志级别低于信息,否则默认情况下会显示它。可以通过手动指定此选项来强制显示。要禁用它,您需要指定-nostats。

25. -fast

不符合规范的优化

26. -genpts

生成 pts.

27. -sync type

将主时钟设置为音频(类型=音频)、视频(类型=视频)或外部(类型=文本)。默认为音频。主时钟用于控制音频-视频同步。大多数媒体播放器使用音频作为主时钟,但在某些情况下(流媒体或高质量广播)有必要改变这一点。此选项主要用于调试目的

28. -ast audio_stream_specifier

使用给定的流说明符选择所需的音频流。流说明符在流说明符一章中进行了描述。如果未指定此选项,则在已选择的视频流的程序中选择“最佳”音频流。

29. -vst video_stream_specifier

使用给定的流说明符选择所需的视频流。流说明符在流说明符一章中进行了描述。如果未指定此选项,则会选择“最佳”视频流。

30. -sst subtitle_stream_specifier

使用给定的流说明符选择所需的字幕流。流说明符在流说明符一章中进行了描述。如果未指定此选项,则在已选择的视频或音频流的节目中选择“最佳”字幕流。

31. -autoexit

视频播放完之后自动退出

32. -exitonkeydown

按任意键退出

33. -exitonmousedown

如果按下任何鼠标按钮,则退出

34. -codec:media_specifier codec_name

为media_specifier标识的流强制执行特定的解码器实现,该解码器可以采用值a(音频)、v(视频)和s字幕

35. -acodec codec_name

指定音频编码器

36. -vcodec codec_name

指定视频编码器

37. -scodec codec_name

指定字幕编码器

38. -autorotate

根据文件元数据自动旋转视频。默认情况下已启用,使用-nautorotate将其禁用

39. -framedrop

如果视频不同步,则丢弃视频帧。如果主时钟未设置为视频,则默认启用。使用此选项可以为所有主时钟源启用帧丢弃,使用-noframedrop可以禁用它

40. -infbuf

不要限制输入缓冲区的大小,尽快从输入中读取尽可能多的数据。默认情况下为实时流启用,如果不及时读取,数据可能会被丢弃。使用此选项可以为所有输入启用无限缓冲区,使用-noinfbuf可以禁用它

41. -filter_threads nb_threads

定义用于处理筛选器管道的线程数。每个管道将产生一个线程池,其中有这么多线程可用于并行处理。默认值为0,这意味着线程计数将由可用CPU的数量决定

42. -enable_vulkan

使用vulkan渲染器,而不是SDL内置的渲染器。取决于libplacebo

43. -vulkan_params

使用由“:”分隔的键=值对列表的Vulkan配置

44. -hwaccel

使用硬件加速解码。启用此选项将自动启用vulkan渲染器

五、ffmpeg 主要选项

1. -i

设定输入流i

2. -f

设定输出格式(format)

3. -ss

开始时间

4. -t

duration 时间长度

5. -y

覆盖之前的同名文件

6. 音频参数

  • -aframes 设置要输出的音频帧数
  • -b:a 音频码率
  • -ar 设置采样率
  • -ac 设置声音的通道数
  • -acodec 设置声音编解码器,如果用copy表示原始编解码数据必须被拷贝
  • -an 不处理音频
  • -af 音频过滤器
     

使用实例 MP4 转 指定 MP3

ffmpeg -i testvideo1.mp4 -ss 60 -aframes 250 -b:a 129k -ar 48000 -ac 2 -acodec libmp3lame testvideo1_48000_129_2.mp3

7. 视频参数

  • -vframes 设置要输出的视频帧数 如果 大于1 输出 加%03d 如 test%03d.jpg
  • -b 设置视频码率
  • -b:v 视频码率
  • -r 设置帧速率
  • -s 设置画面的宽与高
  • -vn 不处理视频
  • -aspect aspect 设置横纵比 4:3 16:9 或1.3333 1.7777
  • -vcodec 设置视频编解码器,如果用copy表示原始编解码数据必须被拷贝
  • -vf 音频过滤器

使用实例 MP4 转 265编码

ffmpeg -i testvideo1.mp4 -ss 60 -vframes 250 -b:v 1000k -r 30 -s 640x480 -aspect 4:3 -vcodec libx265 testvideo1_265.h265

8. 滤镜(filter)内置变量

  • t 以秒表示的时间戳,如果输入时间是未知则为NAN
  • n 输入帧的顺序编号,从0开始
  • pos 输入帧的位置 ,如果未知则为NAN
  • w 输入视频帧的宽度
  • h 输入视频帧的高度

测试音视频素材文件

【免费】素材(mp4、flv、ts、h264、h265、mkv、yuv、rgb、mp3、wav、pcm、aac、jpg、bmp、gif)资源-CSDN文库

  • 21
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值