国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【FFmpeg實戰(zhàn)】Flutter音視頻裁剪

這篇具有很好參考價值的文章主要介紹了【FFmpeg實戰(zhàn)】Flutter音視頻裁剪。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

作者:JianLee 鏈接:https://www.jianshu.com/p/868c8536a9b2

flutter_ffmpeg是什么?

ffmpeg是一個音視頻處理庫,通過命令行的形式,對音視頻進行處理,而MobileFFmpeg
則是ffmpeg在移動端的實現(xiàn),flutter_ffmpeg是對MobileFFmpeg的封裝,是的在flutter下能夠輕松的使用ffmpeg對音視頻進行處理。flutter_ffmpeg包括兩部分FFmpeg和FFprobe,其中FFmpeg負責音視頻處理,而FFprobe主要負責查詢音視頻的媒體信息。

flutter_ffmpeg地址

flutter_ffmpeg使用
第一步:安裝
// 在pubspec.yaml的dependencies下添加:
  flutter_ffmpeg: ^0.3.1
第二步:配置

android工程下的配置

// 在工程目錄下的 /android/build.gradle下添加
ext {
    flutterFFmpegPackage  = "full-lts" 
}

注意:上面配置中的”full-lts” 是flutter__ffmpeg各個發(fā)布版本的報名,可以查看官方文檔的說明。有一個值得說明的地方是,flutter_ffmpeg有中發(fā)行包,一種是 Main Release,一種是LTS Release 發(fā)行包,而他們兩者支持的 Android API Level/iOS SDK和硬件架構(gòu)是不一樣的,總的來說,LTS版本支持的更廣泛,LTS支持度大于MAIN,所以我們最好使用LTS版本。
這里我遇到一個問題,使用full-lts編碼格式,會出現(xiàn)上傳到服務(wù)器無法播放視頻的情況。
所以我這里是用的:

ext {
    flutterFFmpegPackage = "full-gpl-lts"
}

另外在使用flutter_ffmpeg的時候出現(xiàn)類似問題:

Caused by: java.lang.UnsatisfiedLinkError: dalvik.system.PathClassLoader[DexPathList[[zip file "/data/app/app.domain.name-Lq_GxP1CfMArHTpLoII-YA==/base.apk"],nativeLibraryDirectories=[/data/app/app.domain.name-Lq_GxP1CfMArHTpLoII-YA==/lib/arm64, /data/app/app.domain.name-Lq_GxP1CfMArHTpLoII-YA==/base.apk!/lib/arm64-v8a, /system/lib64, /system/vendor/lib64]]] couldn't find "libmobileffmpeg_abidetect.so"
        at java.lang.Runtime.loadLibrary0(Runtime.java:1011)
        at java.lang.System.loadLibrary(System.java:1657)
        at com.arthenica.mobileffmpeg.AbiDetect.<clinit>(Unknown Source:13)
        at com.arthenica.mobileffmpeg.AbiDetect.getNativeAbi(Native Method)
        at com.arthenica.mobileffmpeg.Config.<clinit>(Unknown Source:96)
        at com.arthenica.mobileffmpeg.Config.nativeFFmpegExecute(Native Method)
        at com.arthenica.mobileffmpeg.b.a(Unknown Source:0)
        at d.b.a.a.a.a(Unknown Source:31)
        at d.b.a.a.a.doInBackground(Unknown Source:2)
        at android.os.AsyncTask$2.call(AsyncTask.java:333)
        at java.util.concurrent.FutureTask.run(FutureTask.java:266)
        at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:245) 
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1162) 
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:636) 
        at java.lang.Thread.run(Thread.java:764) 

通過clean可以解決

flutter clean
flutter build [artificat]

使用gpl保證裁剪視頻默認使用x264(不然會出現(xiàn)上傳視頻無法播放的問題),具體可以查看flutter_ffmpeg封裝編碼

ffmpeg音頻剪輯,音視頻,ffmpeg,flutter,音視頻

image.png

第三步:使用

flutter_ffmpge是ffmpeg在flutter上的一個實現(xiàn),ffmpeg是通過命令行還進行音視頻編輯的工具,因此我們使用fluter_ffmpeg自然也是運行一些命令來實現(xiàn)我們的功能。具體使用方法可以直接看ffluter_ffmpeg官方文檔和ffmpeg官方文檔,或者看一下更加通俗易懂的阮一峰文檔。接下來我們主要看看flutter_ffmpeg能干什么?

flutter_ffmpge能做什么?

查看視頻信息

做音視頻處理,首先我們肯定想知道我們的處理是否成功,或者效果好不好,那么我們只能通過處理的視頻前后的參數(shù)進行對比,因此第一步我們要求這個視頻處理庫詳細的給我們提供音視頻的信息,flutter_ffmpeg的FFProde能夠很好的實現(xiàn)這一點,而且使用很方便:

final FlutterFFprobe _flutterFFprobe = new FlutterFFprobe();

_flutterFFprobe.getMediaInformation("<file path or uri>").then((info) {
    print("Media Information");

    print("Path: ${info.getMediaProperties()['filename']}");
    print("Format: ${info.getMediaProperties()['format_name']}");
    print("Duration: ${info.getMediaProperties()['duration']}");
    print("Start time: ${info.getMediaProperties()['start_time']}");
    print("Bitrate: ${info.getMediaProperties()['bit_rate']}");
    Map<dynamic, dynamic> tags = info.getMediaProperties()['tags'];
    if (tags != null) {
        tags.forEach((key, value) {
            print("Tag: " + key + ":" + value + "\n");
        });
    }

    if (info.getStreams() != null) {
        List<StreamInformation> streams = info.getStreams();

        if (streams.length > 0) {
            for (var stream in streams) {
                print("Stream id: ${stream.getAllProperties()['index']}");
                print("Stream type: ${stream.getAllProperties()['codec_type']}");
                print("Stream codec: ${stream.getAllProperties()['codec_name']}");
                print("Stream full codec: ${stream.getAllProperties()['codec_long_name']}");
                print("Stream format: ${stream.getAllProperties()['pix_fmt']}");
                print("Stream width: ${stream.getAllProperties()['width']}");
                print("Stream height: ${stream.getAllProperties()['height']}");
                print("Stream bitrate: ${stream.getAllProperties()['bit_rate']}");
                print("Stream sample rate: ${stream.getAllProperties()['sample_rate']}");
                print("Stream sample format: ${stream.getAllProperties()['sample_fmt']}");
                print("Stream channel layout: ${stream.getAllProperties()['channel_layout']}");
                print("Stream sar: ${stream.getAllProperties()['sample_aspect_ratio']}");
                print("Stream dar: ${stream.getAllProperties()['display_aspect_ratio']}");
                print("Stream average frame rate: ${stream.getAllProperties()['avg_frame_rate']}");
                print("Stream real frame rate: ${stream.getAllProperties()['r_frame_rate']}");
                print("Stream time base: ${stream.getAllProperties()['time_base']}");
                print("Stream codec time base: ${stream.getAllProperties()['codec_time_base']}");

                Map<dynamic, dynamic> tags = stream.getAllProperties()['tags'];
                if (tags != null) {
                  tags.forEach((key, value) {
                    print("Stream tag: " + key + ":" + value + "\n");
                  });
                }
            }
        }
    }
});

視頻壓縮

  • 改變幀率
ffmpeg -i Desktop/吉他.mp4  -r 20  Desktop/output1.mp4

-r 20:表示幀率設(shè)置為 20fps

  • 指定文件大小
ffmpeg -i Desktop/吉他.mp4  -fs 15MB  Desktop/output1.mp4

fs 20 : 表示文件大小最大值為15MB
把視頻截了一部分 — 這種方法不推薦

  • 改變分辨率
ffmpeg -i Desktop/1.mov -s vga Desktop/1.mp4

-s vga : 指定分辨率, vga 代表 600*480,也可以換成其他的值

  • 改變碼率
    視頻的原碼率是 2.1Mb/s ,壓縮為 1.5Mb/s
ffmpeg -i Desktop/1.mov -b:v 1.5M  Desktop/1.mp4

-b:v 1.5M : 指定碼率
-b:v :指定視頻的碼率
-b:a : 指定音頻的碼率
1.5M:碼率的值 1.5M 表示 1.5Mb/s

裁剪視頻

比如我在項目里用到上傳到服務(wù)器的視頻時長需要控制在60s以內(nèi)的功能,我們就可以這樣:

 String inputFilePath = inputFile.path;
                    String outputFilePath =
                        await FileUtils.outputFileNameStr(inputFile);
                    var ffmpeg = new FlutterFFmpeg();
                    ffmpeg
                        .execute(
                            "-i $inputFilePath -ss 0 -to 60 -c:v libx264 $outputFilePath")//這里是ffmpeg指令 裁剪60s視頻
                        .then((rc) async {
                      if (rc == 0) {
                        //rc=0表示成功
                        //裁剪60s 轉(zhuǎn)換 libx264
                      } else {
                        showToast('視頻裁剪出現(xiàn)異常,請重試', context);
                        Navigator.pop(context);
                      }
                    });

轉(zhuǎn)換視頻格式

var ffmpeg = new FlutterFFmpeg();
  Directory tempDir = await getTemporaryDirectory();;
  var tmpVideo = tempDir.path + '/1.webm';
  var cmd = '-i ${widget.tmpPath} $tmpVideo';
  print('命令是:'+cmd);
  ffmpeg.execute(cmd).then((rc) {
    print("處理的結(jié)果是:$rc");
    if(rc == 0) {
      initController(tmpVideo); //使用臨時地址可以播放
    } else {
      print('處理失敗');
    }
  });

下邊列出一些常用的ffmpeg指令

視頻裁剪

從n開始,裁剪m秒長度的視頻

// 從10s開始裁剪連續(xù)5s 也就是10-15s的視頻
ffmpeg -i input.mp4 -ss 10 -t 5 output.mp4

從n秒開始,裁剪到m秒的視頻

// 從10s開始,裁剪到20秒
ffmpeg -i input.mp4 -ss 10 -to 20 output.mp4
濾鏡

https://www.cnblogs.com/tocy/p/ffmpeg-filter-intro.html文章來源地址http://www.zghlxwxcb.cn/news/detail-716004.html

疊加兩個視頻:
ffmpeg -i 1.mp4 -i douyin.mp4 -filter_complex " blend=all_mode='overlay':all_opacity=0.2" blend.mp4
剪切100*100 的視頻, 新視頻的中心點和輸入和視頻的重合
ffmpeg -i douyin.mp4  -vf "crop=100:100" crop.mp4
在視頻的上畫一個框 drawbox
// red@0.5 50%的透明度紅色
// t=1 線條的粗細 默認3  fill的話 自動填充
ffmpeg -i input.mp4 -vf "drawbox=10:10:30:30:red@0.5:t=1" output.mp4
ffmpeg -i input.mp4 -vf "drawbox=x=10:y=10:width=30:height=30color=red@0.5:t=1" output.mp4
在視頻上畫網(wǎng)格 drawgrid
畫尺寸是20*20的網(wǎng)格
ffmpeg -i 1.mp4 -vf "drawgrid=width=20:height=20:color=red" output.mp4
畫2*2的網(wǎng)格
ffmpeg -i 1.mp4 -vf "drawgrid=width=iw/2:height=ih/2:color=red:t=1:color=blue@0.5" output.mp4
在視頻上寫字 drawtext
ffmpeg -i 99.mp4 -vf "drawtext=fontsize=32:fontcolor=red:text='hello world':alpha=0.8" font.mp4

//前五秒顯示 
// gte(t\,5) 大于等于5秒
// between(t\,5\,10)5到10秒
// lt(t\, 5)小于5秒
ffmpeg -i 99.mp4 -vf "drawtext=fontsize=32:fontcolor=red:text='hello world':enable='lt(t\,5)' " font.mp4

//水平居中 (w-text_w)/2
//垂直居中 (h-text_h)/2
ffmpeg -i 99.mp4 -vf "drawtext=fontsize=32:fontcolor=#cccccc:text='hello world':x=(w-text_w)/2" font2.mp4

//向右對齊 
ffmpeg -i 99.mp4 -vf "drawtext=fontsize=32:fontcolor=#cccccc:text='hello world':x=(w-text_w)" font2.mp4

// 水平垂直居中
ffmpeg -i 99.mp4 -vf "drawtext=fontsize=32:fontcolor=#cccccc:text='hello world':x=(w-text_w)/2:y=(h-text_h)/2" font2.mp4

// 滾動文本
ffmpeg -i 99.mp4 -vf "drawtext=fontsize=32:fontcolor=#cccccc:text='hello world':x=(w-50*t)" font2.mp4
飽和度/亮度/對比度 eq
// contrast 對比度 -1000-1000
// brightness 亮度 -1.0-1.0
// saturation 飽和度 0.0-3.0
ffmpeg -i 1.mp4 -vf "eq=saturation=3:brightness=0.3:contrast=1000" output.mp4
淡入淡出 fade
// 從第0幀開始到30幀淡入
ffmpeg -i 1.mp4 -vf "fade=t=in:s=0:n=30" output.mp4

// 從10秒開始淡出5秒
ffmpeg -i 1.mp4 -vf "fade=t=out:st=10:d=5" output.mp4
調(diào)整幀率 fps
ffmpeg -i 1.mp4 -vf "fps=fps=24" output.mp4
水平翻轉(zhuǎn)視頻
ffmpeg -i 1.mp4 -vf "hflip" output.mp4
倒放 reverse
ffmpeg -i input.mp4 -vf "reverse" output.mp4
旋轉(zhuǎn) rotate
旋轉(zhuǎn)45度
ffmpeg -i input.mp4 -vf "rotate=PI/4"

轉(zhuǎn)圈圈
ffplay -i 99.mp4 -vf "rotate=n*PI/3:c=red"

調(diào)整輸出尺寸 修改輸出寬度等于輸入寬度的對角線
ffplay -i 99.mp4 -vf "rotate=n*PI/3:ow=hypot(iw, ih):oh=ow"
縮放 scale
ffplay -i 99.mp4 -vf "scale=100x100"
ffplay -i 99.mp4 -vf "scale=w=0.8*iw:h=0.8*ih"


// 寬度為100,iw較小的值 高度等比例縮小
ffplay -i 99.mp4 -vf "scale=w=min(100\,iw):h=-1"
合并 concat
// 視頻的尺寸要一樣大 如果不一樣大的話 可以使用pad補邊界 
ffmpeg -i 1.mp4 -i douyin.mp4 -i 3.1.mp4 -filter_complex "[0:v:0][0:a:0][1:v:0][1:a:0][2:v:0][2:a:0]concat=n=3:v=1:a=1[ov][oa]" -map "[ov]" -map "[oa]" -vsync 2 output.mp4

// 圖片和視頻合并 需要調(diào)整視頻圖片的尺寸和視頻一樣
ffmpeg -loop 1 -framerate 25 -t 5 -i logo.png -i 3.mp4 -filter_complex "[0]scale=1280x720[01];[01][1:v:0]concat=n=2:v=1[ov]" -map "[ov]" 33.mp4

ffmpeg -loop 1 -framerate 25 -t 5 -i logo.png -i 3.mp4 -filter_complex "[0]pad=w=1280:h=720:w=(1280-iw)/2:y=(720-ih)/2[01];[01][1:v:0]concat=n=2:v=1[ov]" -map "[ov]" 33.mp4

ffmpeg -loop 1 -framerate 29.42 -t 10 -i 1.s.jpg -i 1.mp4 -filter_complex "[0]scale=480:480, setsar=1[im];[1]scale=480:480, setsar=1[iv];[im][1:a][iv][1:a]concat=n=2:v=1:a=1[outv][outa]" -map "[outa]" -map "[outv]" output.mp4

// 圖片生成視頻
ffmpeg -f lavfi -t 10 -i anullsrc -loop 1 -framerate 10 -t 5 -i 1.jpg -vf "scale=664x478" -pix_fmt yuv420p output.mp4

// 添加第三條音頻
 ffmpeg -i im.mp4 -i douyin.mp4 -i 1.mp3 -filter_complex "[0]scale=544x960,setsar=1[iv];[1]setsar=1[dv];[iv][0:a:0][dv][1:a:0]concat=n=2:v=1:a=1[ov][oa]" -map "[ov]" -map "[oa]" -map 2:a:0 -vsync 2 output.mp4

ffmpeg -i im.mp4 -i douyin.mp4 -i 1.mp3 -filter_complex "[0]scale=544x960,setsar=1[iv];[1]setsar=1[dv];[iv][0:a:0][dv][1:a:0]concat=n=2:v=1:a=1[ov][oa];[2:a:0][oa]amix=inputs=2:duration=first:dropout_transition=3[aa]" -map "[ov]" -map "[aa]" -vsync 2 output.mp4
提取視頻縮略圖
// 三秒一張 fps=1/3 
ffmpeg -i input.mp4 -vf "fps=1/3, scale=128:72" output_%d.jpg
  >>> 音視頻開發(fā) 視頻教程: https://ke.qq.com/course/3202131?flowToken=1031864 
  >>> 音視頻開發(fā)學習資料、教學視頻,免費分享有需要的可以自行添加學習交流群 739729163 領(lǐng)取

到了這里,關(guān)于【FFmpeg實戰(zhàn)】Flutter音視頻裁剪的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔相關(guān)法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 音視頻 FFmpeg音視頻處理流程

    音視頻 FFmpeg音視頻處理流程

    推薦一個零聲學院項目課,個人覺得老師講得不錯,分享給大家: 零聲白金學習卡(含基礎(chǔ)架構(gòu)/高性能存儲/golang云原生/音視頻/Linux內(nèi)核) https://xxetb.xet.tech/s/VsFMs

    2024年02月12日
    瀏覽(97)
  • 【FFmpeg】音視頻錄制 ① ( 查詢系統(tǒng)中 ffmpeg 可錄制的音視頻輸入設(shè)備 | 使用 ffmpeg 命令錄制音視頻數(shù)據(jù) | 錄制視頻數(shù)據(jù)命令 |錄制音頻數(shù)據(jù)| 同時錄制音頻和視頻數(shù)據(jù)命令 )

    【FFmpeg】音視頻錄制 ① ( 查詢系統(tǒng)中 ffmpeg 可錄制的音視頻輸入設(shè)備 | 使用 ffmpeg 命令錄制音視頻數(shù)據(jù) | 錄制視頻數(shù)據(jù)命令 |錄制音頻數(shù)據(jù)| 同時錄制音頻和視頻數(shù)據(jù)命令 )

    在 Windows 系統(tǒng)中 , 使用 ffmpeg 命令 錄制 音視頻 , 需要先獲取 系統(tǒng)的 音視頻設(shè)備 信息 , 錄制 音視頻 本質(zhì)上是從 系統(tǒng)音視頻設(shè)備 中獲取數(shù)據(jù) ; 執(zhí)行 命令 , 可以獲取 系統(tǒng)中 ffmpeg 可用的 DirectShow 音視頻輸入設(shè)備 ; 命令參數(shù)解析 : -list_devices true : 列出所有 ffmpeg 的 指定類型的可

    2024年04月25日
    瀏覽(31)
  • 音視頻 ffmpeg命令提取音視頻數(shù)據(jù)

    保留封裝格式 提取視頻 提取音頻 推薦一個零聲學院項目課,個人覺得老師講得不錯,分享給大家: 零聲白金學習卡(含基礎(chǔ)架構(gòu)/高性能存儲/golang云原生/音視頻/Linux內(nèi)核) https://xxetb.xet.tech/s/VsFMs

    2024年02月10日
    瀏覽(26)
  • ffmpeg系列學習——FFmpeg的音視頻處理

    1.音視頻的采樣率、采樣位深度和聲道數(shù) 音頻和視頻的采樣率、采樣位深度和聲道數(shù)是媒體文件中的重要參數(shù),它們會直接影響到音視頻的質(zhì)量和文件大小。下面對它們進行詳細解釋: 采樣率 采樣率指音頻每秒鐘采樣的次數(shù),用赫茲(Hz)表示。采樣率越高,音頻的還原度越

    2024年02月04日
    瀏覽(84)
  • [一]ffmpeg音視頻解碼

    [一]ffmpeg音視頻解碼

    (1)下載FFmpeg源碼(v3.3.6) 下載地址( http://www.ffmpeg.org/download.html#releases ) (2)下載NDK(r14b) 下載地址( https://developer.android.google.cn/ndk/downloads/index.html) (3)編寫Android編譯腳本 (1)用ftp上傳到Ubuntu中 (2)解壓Ffmpeg(tar -zxvf ffmpeg-3.3.6.tar.gz) (3)解壓NDK(unzip andro

    2024年01月19日
    瀏覽(1558)
  • 音視頻 ffmpeg命令視頻錄制(Windows)

    先安裝dshow軟件 Screen Capturer Recorder, 項目地址:https://sourceforge.net/projects/screencapturer/files/ 然后查看可用設(shè)備名字:ffmpeg -list_devices true -f dshow -i dummy 錄制視頻(默認參數(shù)) 錄制聲音(默認參數(shù)) 同時錄制聲音和視頻(默認參數(shù)) 查看視頻錄制的可選參數(shù) 查看視頻錄制的可

    2024年02月10日
    瀏覽(28)
  • 音視頻 FFmpeg命令行搭建

    音視頻 FFmpeg命令行搭建

    以FFmpeg4.2.1 win32為例 解壓ffmpeg-4.2.1-win32-shared.zip 拷?可執(zhí)??件到C:Windows 拷?動態(tài)鏈接庫到C:WindowsSysWOW64 注:WoW64 (Windows On Windows64)是?個Windows操作系統(tǒng)的?系統(tǒng),被設(shè)計?來處理許多在32-bit Windows和64-bit Windows之間的不同的問題,使得可以在64-bit Windows中運?32-bit程序 推薦

    2024年02月13日
    瀏覽(23)
  • FFMPEG常用命令 音視頻合并

    FFMPEG常用命令 音視頻合并

    ? ? ? ? 目錄 一、音頻合并 1.獲取音頻時長 2.合并兩段音頻 3.合并音頻插入空白 二、視頻加背景圖 三、音視頻合成 1.保留視頻聲音 2.不保留視頻聲音 四、合并視頻 ????????本文將用幾個實例,介紹ffmpeg命令的綜合使用,主要涉及音頻處理、視頻處理和音視頻合成。 參數(shù)

    2024年02月10日
    瀏覽(22)
  • FFmpeg 音視頻開發(fā)工具

    FFmpeg 音視頻開發(fā)工具

    目錄 FFmpeg 下載與安裝 ffmpeg 使用快速入門 ffplay 使用快速入門 1、FFmpeg 是處理音頻、視頻、字幕和相關(guān)元數(shù)據(jù)等多媒體內(nèi)容的庫和工具的集合。一個完整的跨平臺解決方案,用于錄制、轉(zhuǎn)換和流式傳輸音頻和視頻。 官網(wǎng):https://www.ffmpeg.org/ 源碼:https://github.com/FFmpeg/FFmpeg。

    2024年02月15日
    瀏覽(29)
  • Android音視頻: 引入FFmpeg

    Android音視頻: 引入FFmpeg

    本文你可以了解到 本文將介紹如何將上一篇文章編譯出來的? FFmpeg so ?庫,引入到? Android ?工程中,并驗證? so ?是否可以正常使用。 一、開啟 Android 原生 C/C++ 支持 在過去,通常使用? makefile ?的方式在項目中引入? C/C++ ?代碼支持,隨著? Android Studio ?的普及, makefile ?的

    2024年02月02日
    瀏覽(27)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包