FFmpeg命令行音視頻處理

命令行工具

FFmpeg的bin目錄下有三個(gè)工具,可在終端直接輸入命令執(zhí)行

  • ffmpeg是一個(gè)通用的媒體轉(zhuǎn)換器傲绣。它可以讀取各種輸入秃诵,包括實(shí)時(shí)抓取/錄制設(shè)備-過濾菠净,并將它們轉(zhuǎn)碼為多種輸出格式毅往。
  • ffplay是一款基于 FFmpeg 庫和 SDL 庫的簡(jiǎn)單媒體播放器煞抬。它主要用作各種FFmpeg API的測(cè)試平臺(tái)构哺。
  • ffprobe是一個(gè)多媒體分析器曙强,并以人類和機(jī)器可讀的方式打印出從多媒體中收集的信息碟嘴。

ffmpeg命令

終端直接輸入ffmpeg娜扇,可以獲得用法提示

usage: ffmpeg [options] [[infile options] -i infile]... {[outfile options] outfile}...

Use -h to get full help or, even better, run 'man ffmpeg'

可以看到它有5個(gè)參數(shù),簡(jiǎn)化一下就是:ffmpeg {1} {2} -i {3} {4} {5}枢析,5個(gè)參數(shù)含義分別如下:

  • 全局參數(shù)
  • 輸入文件參數(shù)
  • 輸入文件
  • 輸出文件參數(shù)
  • 輸出文件

詳細(xì)用法可以查閱官方文檔司浪,或者查閱man page把沼,或者輸入下面命令查閱說明:

  • ffmpeg -h:簡(jiǎn)易版說明
  • ffmpeg -h long:詳細(xì)版說明
  • ffmpeg -h full:完整版說明

部分參數(shù)解釋:

  • -i input_file:指定輸入文件的路徑和名稱饮睬。
    示例:-i input.mp4

  • -ss position:指定從輸入文件的哪個(gè)時(shí)間位置開始處理续捂,格式為HH:MM:SS.xxx(小時(shí):分鐘:秒.毫秒)牙瓢。
    示例:-ss 00:01:30.500 表示從1分30.5秒開始處理矾克。

  • -t duration:指定處理的持續(xù)時(shí)間胁附,格式為HH:MM:SS.xxx(小時(shí):分鐘:秒.毫秒)滓彰。
    示例:-t 00:00:45 表示處理45秒的內(nèi)容揭绑。

  • -vf filtergraph:指定視頻過濾器圖形他匪,用于對(duì)視頻進(jìn)行各種處理邦蜜,如調(diào)整大小悼沈、裁剪、旋轉(zhuǎn)溶握、濾鏡等睡榆。
    示例:-vf "scale=640:480" 表示將視頻調(diào)整為640x480的大小胀屿。

  • -af filtergraph:指定音頻過濾器圖形宿崭,用于對(duì)音頻進(jìn)行各種處理才写,如音頻增益赞草、降噪厨疙、混音等沾凄。
    示例:-af "volume=2.0" 表示將音頻增益調(diào)整為原來的2倍撒蟀。

  • -c:v codec:指定視頻編解碼器保屯。
    示例:-c:v libx264 表示使用libx264編碼器進(jìn)行視頻編碼配椭。

  • -c:a codec:指定音頻編解碼器股缸。
    示例:-c:a aac 表示使用AAC編碼器進(jìn)行音頻編碼。

  • -b:v bitrate:指定視頻的比特率,即視頻的質(zhì)量瘾境。較高的比特率通常意味著更好的視頻質(zhì)量歧杏,但文件大小也會(huì)增加。
    示例:-b:v 1000k 表示視頻比特率為1000kbps迷守。

  • -b:a bitrate:指定音頻的比特率犬绒,即音頻的質(zhì)量。較高的比特率通常意味著更好的音頻質(zhì)量兑凿,但文件大小也會(huì)增加凯力。
    示例:-b:a 128k 表示音頻比特率為128kbps礼华。

  • -r framerate:指定視頻的幀率咐鹤,即每秒播放的畫面數(shù)量。較高的幀率可以獲得更流暢的視頻圣絮,但也會(huì)增加文件大小祈惶。
    示例:-r 30 表示視頻幀率為30幀每秒。

查看設(shè)備

ffmpeg -devices

當(dāng)前電腦輸出的可用設(shè)備如下:

Devices:
 D. = Demuxing supported
 .E = Muxing supported
 --
  E audiotoolbox    AudioToolbox output device
 D  avfoundation    AVFoundation input device
 D  lavfi           Libavfilter virtual input device
  E sdl,sdl2        SDL2 output device
 D  x11grab         X11 screen capture, using XCB

在多媒體處理中扮匠,"demuxer"(解封裝器)和"muxer"(封裝器)是兩個(gè)常用的概念捧请,用于描述多媒體文件的解封裝和封裝操作。

1棒搜、Demuxer(解封裝器) 是一個(gè)用于將多媒體文件(如音頻或視頻文件)解封裝為原始音頻流疹蛉、視頻流和其他相關(guān)數(shù)據(jù)的組件。它讀取多媒體文件的容器格式(如MP4帮非、AVI氧吐、MKV)并解析其中的音頻、視頻和其他流末盔,將它們提供給后續(xù)處理的組件(如解碼器)進(jìn)行解碼和處理。Demuxer將多媒體文件中的不同媒體流分離開來座慰,以便進(jìn)行獨(dú)立的處理陨舱。

2、Muxer(封裝器) 是一個(gè)用于將音頻流版仔、視頻流和其他相關(guān)數(shù)據(jù)封裝到容器格式中的組件游盲。它接收來自解碼器或其他處理組件的音頻流、視頻流等數(shù)據(jù)蛮粮,并將它們合并到指定的容器格式中(如MP4益缎、AVI、MKV)然想,生成一個(gè)包含音視頻數(shù)據(jù)的完整多媒體文件莺奔。Muxer負(fù)責(zé)將不同的音頻和視頻流合并,并添加必要的容器元數(shù)據(jù)和索引信息变泄。

AVFoundation 對(duì)于iOS開發(fā)者來說再熟悉不過了令哟,輸入如下命令可以查看支持avfoundation支持的設(shè)備:

ffmpeg -f avfoundation -list_devices true -i ''

輸出結(jié)果如下:

[AVFoundation indev @ 0x7fd0621043c0] AVFoundation video devices:
[AVFoundation indev @ 0x7fd0621043c0] [0] FaceTime HD Camera (Built-in)
[AVFoundation indev @ 0x7fd0621043c0] [1] Capture screen 0
[AVFoundation indev @ 0x7fd0621043c0] AVFoundation audio devices:
[AVFoundation indev @ 0x7fd0621043c0] [0] Built-in Microphone

對(duì)于Windows平臺(tái)則是查看dshow(DirectShow)輸入支持的設(shè)備:

ffmpeg -f dshow -list_devices true -i dummy

使用以下命令查看FFmpeg是否支持特定設(shè)備:

ffmpeg -sources DEVICE

其中恼琼,DEVICE是要查詢的設(shè)備名稱,例如alsa屏富、pulse晴竞、v4l2等。

音頻處理

1狠半、錄制音頻
在Mac OS使用FFmpeg錄制音頻噩死,可以使用如下命令:

ffmpeg -f avfoundation -i ":0" output.wav

這個(gè)命令使用了FFmpeg的avfoundation輸入設(shè)備,從Mac的音頻輸入設(shè)備(通常是麥克風(fēng))錄制音頻神年。":0"參數(shù)表示默認(rèn)的音頻輸入設(shè)備已维,output.wav是要保存音頻的文件名和格式×鲂洌可以將其更改為所需的文件名和擴(kuò)展名衣摩。

執(zhí)行命令后,F(xiàn)Fmpeg將開始錄制音頻捂敌,并在后臺(tái)顯示進(jìn)度信息艾扮。要停止錄制,可以按下Ctrl+C占婉。

2泡嘴、查看音頻信息

ffmpeg -i output.wav

輸出結(jié)果如下:

Input #0, wav, from 'output.wav':
  Metadata:
    encoder         : Lavf60.3.100
  Duration: 00:00:19.56, bitrate: 1411 kb/s
  Stream #0:0: Audio: pcm_s16le ([1][0][0][0] / 0x0001), 44100 Hz, 2 channels, s16, 1411 kb/s

當(dāng)然,該命令也可以查看視頻文件信息逆济,例如查看前幾天在YouTube上下載的一個(gè)視頻信息:

Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'test.mp4':
  Metadata:
    major_brand     : mp42
    minor_version   : 0
    compatible_brands: isommp42
    creation_time   : 2023-10-13T02:00:12.000000Z
  Duration: 00:12:11.92, start: 0.000000, bitrate: 1134 kb/s
  Stream #0:0[0x1](und): Video: h264 (High) (avc1 / 0x31637661), yuv420p(tv, bt709, progressive), 1280x720 [SAR 1:1 DAR 16:9], 1003 kb/s, 30 fps, 30 tbr, 15360 tbn (default)
    Metadata:
      creation_time   : 2023-10-13T02:00:12.000000Z
      handler_name    : ISO Media file produced by Google Inc. Created on: 10/12/2023.
      vendor_id       : [0][0][0][0]
  Stream #0:1[0x2](eng): Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz, stereo, fltp, 128 kb/s (default)
    Metadata:
      creation_time   : 2023-10-13T02:00:12.000000Z
      handler_name    : ISO Media file produced by Google Inc. Created on: 10/12/2023.
      vendor_id       : [0][0][0][0]

3酌予、提取音頻

比如,從上面的test.mp4視頻中提取音頻:

ffmpeg -i test.mp4 -vn test.mp3

-vn表示去除視頻流奖慌,處理信息如下:

Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'test.mp4':
  Metadata:
    major_brand     : mp42
    minor_version   : 0
    compatible_brands: isommp42
    creation_time   : 2023-10-13T02:00:12.000000Z
  Duration: 00:12:11.92, start: 0.000000, bitrate: 1134 kb/s
  Stream #0:0[0x1](und): Video: h264 (High) (avc1 / 0x31637661), yuv420p(tv, bt709, progressive), 1280x720 [SAR 1:1 DAR 16:9], 1003 kb/s, 30 fps, 30 tbr, 15360 tbn (default)
    Metadata:
      creation_time   : 2023-10-13T02:00:12.000000Z
      handler_name    : ISO Media file produced by Google Inc. Created on: 10/12/2023.
      vendor_id       : [0][0][0][0]
  Stream #0:1[0x2](eng): Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz, stereo, fltp, 128 kb/s (default)
    Metadata:
      creation_time   : 2023-10-13T02:00:12.000000Z
      handler_name    : ISO Media file produced by Google Inc. Created on: 10/12/2023.
      vendor_id       : [0][0][0][0]
Stream mapping:
  Stream #0:1 -> #0:0 (aac (native) -> mp3 (libmp3lame))
Press [q] to stop, [?] for help
Output #0, mp3, to 'test.mp3':
  Metadata:
    major_brand     : mp42
    minor_version   : 0
    compatible_brands: isommp42
    TSSE            : Lavf60.3.100
  Stream #0:0(eng): Audio: mp3, 44100 Hz, stereo, fltp (default)
    Metadata:
      creation_time   : 2023-10-13T02:00:12.000000Z
      handler_name    : ISO Media file produced by Google Inc. Created on: 10/12/2023.
      vendor_id       : [0][0][0][0]
      encoder         : Lavc60.3.100 libmp3lame
size=   11437kB time=00:12:11.89 bitrate= 128.0kbits/s speed=58.3x
video:0kB audio:11437kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.002946%

4抛虫、轉(zhuǎn)換音頻格式

將上面的output.wav轉(zhuǎn)換成output.mp3:

ffmpeg -i output.wav -c:a libmp3lame output.mp3

5、調(diào)整音頻音量

將上面的output.mp3調(diào)成2倍音量并保存為output_dvolume.mp3:

ffmpeg -i output.mp3 -af "volume=2.0" output_dvolume.mp3

6简僧、合并音頻

將上面的output.mp3與output_dvolume.mp3兩個(gè)音頻文件合并成一個(gè)新的音頻文件并保存merge_output.mp3:

ffmpeg -i output.mp3 -i output_dvolume.mp3 -filter_complex "[0:a][1:a]concat=n=2:v=0:a=1[out]" -map "[out]" merge_output.mp3

7建椰、剪切音頻

從輸入文件test.mp3中剪切出從1分30秒到2分30秒的部分,并保存為test_cut.mp3:

ffmpeg -i test.mp3 -ss 00:01:30 -to 00:02:30 -c copy test_cut.mp3

-c copy表示不改變音頻和視頻的編碼格式岛马,直接拷貝棉姐,提升效率

8、添加音頻效果

將對(duì)輸入文件test_cut.mp3應(yīng)用音頻效果啦逆,包括加速2倍(atempo)伞矩、高通濾波器(highpass)和低通濾波器(lowpass),并保存為test_cut_ahl.mp3:

ffmpeg -i test_cut.mp3 -af "atempo=2.0, highpass=f=200, lowpass=f=3000" test_cut_ahl.mp3

9夏志、添加封面

ffmpeg -i test.mp3 -i test.jpeg -map 0 -map 1 -c copy -id3v2_version 3 -metadata:s:v title="Album cover" -metadata:s:v comment="Cover (Front)" test_cover.mp3

從test.mp3音頻文件中提取音頻流乃坤,并從test.jpeg圖像文件中提取封面圖像。然后,它將使用-map選項(xiàng)將音頻流和封面圖像流映射到輸出文件侥袜。-c copy選項(xiàng)用于直接復(fù)制音頻流和封面圖像流蝌诡,而不進(jìn)行重新編碼。-id3v2_version 3選項(xiàng)用于設(shè)置ID3標(biāo)簽版本為3枫吧,以確保兼容性浦旱。-metadata:s:v選項(xiàng)用于指定封面圖像的元數(shù)據(jù),如標(biāo)題和注釋九杂。

添加封面后颁湖,文件變大了,這是意料之中的例隆。下面的打印信息中也可表明標(biāo)題和注釋添加成功了甥捺。

Input #0, mp3, from 'test_cover.mp3':
  Metadata:
    major_brand     : mp42
    minor_version   : 0
    compatible_brands: isommp42
    encoder         : Lavf60.3.100
  Duration: 00:12:11.95, start: 0.025056, bitrate: 129 kb/s
  Stream #0:0: Audio: mp3, 44100 Hz, stereo, fltp, 128 kb/s
    Metadata:
      encoder         : Lavc60.3.
  Stream #0:1: Video: mjpeg (Baseline), yuvj420p(pc, bt470bg/unknown/unknown), 1024x1024 [SAR 96:96 DAR 1:1], 90k tbr, 90k tbn (attached pic)
    Metadata:
      title           : Album cover
      comment         : Cover (front)

視頻處理

視頻有很多跟音頻類似的處理操作,這里只簡(jiǎn)單列舉幾種用法镀层,更多用法需要時(shí)再查閱文檔镰禾。

1、錄制視頻

ffmpeg -f avfoundation -i “1:0” out.avi

將視頻設(shè)備1中的視頻和音頻設(shè)備0中的音頻錄制到out.avi

2唱逢、視頻轉(zhuǎn)碼

ffmpeg -i out.avi out.mp4

將視頻out.avi轉(zhuǎn)為out.mp4

3吴侦、視頻截圖

ffmpeg -i out.mp4 -ss 00:00:10 -vframes 1 output.jpg

從上面的out.mp4中提取第10秒的視頻幀,并將其保存為輸出文件output.jpg坞古。參數(shù)-vframes 1表示只提取一幀备韧。

ffplay命令

其實(shí),在上面音視頻的處理過程中痪枫,經(jīng)常用到了ffplay命令织堂,以測(cè)試一部分音視頻處理是否成功。相比ffmpeg命令奶陈,ffplay就簡(jiǎn)單多了易阳。

ffplay [options] [input_url]

這個(gè)命令會(huì)打開一個(gè)窗口,并播放指定的輸入文件吃粒。常用的參數(shù):

  • -i input_file:指定輸入文件的路徑和名稱闽烙。

  • -ss position:指定從輸入文件的哪個(gè)時(shí)間位置開始播放,格式為HH:MM:SS.xxx(小時(shí):分鐘:秒.毫秒)声搁。

  • -t duration:指定播放的持續(xù)時(shí)間,格式為HH:MM:SS.xxx(小時(shí):分鐘:秒.毫秒)捕发。

  • -vf filtergraph:指定視頻過濾器圖形疏旨,用于對(duì)視頻進(jìn)行各種處理,如調(diào)整大小扎酷、裁剪檐涝、旋轉(zhuǎn)、濾鏡等。

  • -af filtergraph:指定音頻過濾器圖形谁榜,用于對(duì)音頻進(jìn)行各種處理幅聘,如音頻增益、降噪窃植、混音等帝蒿。

  • -volume volume:指定播放音量的大小,取值范圍為0.0到1.0巷怜。

  • -nodisp:禁用顯示窗口葛超,只進(jìn)行音頻的播放。

  • -an:禁用音頻播放延塑。

  • -vn:禁用視頻播放绣张。

  • -stats:顯示播放統(tǒng)計(jì)信息,如幀率关带、比特率等侥涵。

  • -loop n:循環(huán)播放輸入文件n次。

也可以使用鍵盤上的一些快捷鍵進(jìn)行控制宋雏,例如:

  • 空格鍵:暫停/恢復(fù)播放芜飘。
  • 左方向鍵:后退10秒。
  • 右方向鍵:快進(jìn)10秒好芭。
  • 上方向鍵:增加音量燃箭。
  • 下方向鍵:減小音量。
  • q鍵:退出播放舍败。

ffprobe命令

ffprobe是FFmpeg提供的一個(gè)命令行工具招狸,用于分析媒體文件的詳細(xì)信息。它可以提供音視頻流的元數(shù)據(jù)邻薯、編解碼器信息裙戏、時(shí)長(zhǎng)、幀率等數(shù)據(jù)厕诡。語法如下:

ffprobe [options] input_url

常用的參數(shù):

  • -i input_file:指定輸入文件的路徑和名稱累榜。

  • -show_format:顯示媒體文件的格式信息。

  • -show_streams:顯示媒體文件中的音視頻流信息灵嫌。

  • -show_packets:顯示媒體文件中的數(shù)據(jù)包信息壹罚。

  • -show_frames:顯示媒體文件中的幀信息。

  • -show_programs:顯示媒體文件中的節(jié)目信息寿羞。

  • -show_chapters:顯示媒體文件中的章節(jié)信息猖凛。

  • -show_data:顯示媒體文件中的數(shù)據(jù)信息。

  • -show_error:顯示錯(cuò)誤信息绪穆。

  • -of format:指定輸出格式辨泳,默認(rèn)為default虱岂。可以選擇的輸出格式有default菠红、json第岖、xml、csv等试溯。

  • -select_streams stream_specifier:選擇特定的音視頻流進(jìn)行分析蔑滓。stream_specifier可以是a(音頻流)、v(視頻流)耍共、s(字幕流)等烫饼。

  • -sexagesimal:以時(shí)分秒格式顯示時(shí)間相關(guān)信息。

  • -count_frames:計(jì)算媒體文件中的幀數(shù)试读。

  • -count_packets:計(jì)算媒體文件中的數(shù)據(jù)包數(shù)杠纵。

簡(jiǎn)單舉個(gè)例子,ffprobe -show_format out.mp4钩骇,輸出部分信息如下:

filename=out.mp4
nb_streams=2
nb_programs=0
format_name=mov,mp4,m4a,3gp,3g2,mj2
format_long_name=QuickTime / MOV
start_time=0.000000
duration=23.966667
size=18413363
bit_rate=6146324
probe_score=100
TAG:major_brand=isom
TAG:minor_version=512
TAG:compatible_brands=isomiso2avc1mp41
TAG:encoder=Lavf60.3.100

參考

1比藻、官網(wǎng)文檔
2、阮一峰FFmpeg視頻處理入門教程
3倘屹、FFMPEG ENCODING AND EDITING COURSE

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末银亲,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子纽匙,更是在濱河造成了極大的恐慌务蝠,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,372評(píng)論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件烛缔,死亡現(xiàn)場(chǎng)離奇詭異馏段,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)践瓷,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,368評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門院喜,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人晕翠,你說我怎么就攤上這事喷舀。” “怎么了淋肾?”我有些...
    開封第一講書人閱讀 162,415評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵硫麻,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我樊卓,道長(zhǎng)庶香,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,157評(píng)論 1 292
  • 正文 為了忘掉前任简识,我火速辦了婚禮赶掖,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘七扰。我一直安慰自己奢赂,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,171評(píng)論 6 388
  • 文/花漫 我一把揭開白布颈走。 她就那樣靜靜地躺著膳灶,像睡著了一般。 火紅的嫁衣襯著肌膚如雪立由。 梳的紋絲不亂的頭發(fā)上轧钓,一...
    開封第一講書人閱讀 51,125評(píng)論 1 297
  • 那天,我揣著相機(jī)與錄音锐膜,去河邊找鬼毕箍。 笑死,一個(gè)胖子當(dāng)著我的面吹牛道盏,可吹牛的內(nèi)容都是我干的而柑。 我是一名探鬼主播,決...
    沈念sama閱讀 40,028評(píng)論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼荷逞,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼媒咳!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起种远,我...
    開封第一講書人閱讀 38,887評(píng)論 0 274
  • 序言:老撾萬榮一對(duì)情侶失蹤涩澡,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后坠敷,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體妙同,經(jīng)...
    沈念sama閱讀 45,310評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,533評(píng)論 2 332
  • 正文 我和宋清朗相戀三年常拓,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了渐溶。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,690評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡弄抬,死狀恐怖茎辐,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情掂恕,我是刑警寧澤拖陆,帶...
    沈念sama閱讀 35,411評(píng)論 5 343
  • 正文 年R本政府宣布,位于F島的核電站懊亡,受9級(jí)特大地震影響依啰,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜店枣,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,004評(píng)論 3 325
  • 文/蒙蒙 一速警、第九天 我趴在偏房一處隱蔽的房頂上張望叹誉。 院中可真熱鬧,春花似錦闷旧、人聲如沸长豁。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽匠襟。三九已至,卻和暖如春该园,著一層夾襖步出監(jiān)牢的瞬間酸舍,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,812評(píng)論 1 268
  • 我被黑心中介騙來泰國打工里初, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留啃勉,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,693評(píng)論 2 368
  • 正文 我出身青樓青瀑,卻偏偏與公主長(zhǎng)得像璧亮,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子斥难,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,577評(píng)論 2 353

推薦閱讀更多精彩內(nèi)容