vs2015編譯調(diào)試ffmpg

我在網(wǎng)上找到的最好的教程,按照步驟就運(yùn)行起來了抖韩。而且教程里說到的編譯錯(cuò)誤基本也都遇到了节榜,精準(zhǔn)解決問題點(diǎn)蛮粮。
原文:https://www.cnblogs.com/BensonLaur/p/10989115.html

由于下面粘貼的圖片可能顯示不出來,所以情況上面的原文地址炕倘。

|

 ffmpeg 是音頻處理方面非常強(qiáng)大非常有名的開源項(xiàng)目了,然而如 雷神 所說,“FFMPEG 難度比較大,卻沒有一個(gè)循序漸進(jìn)揩环,由簡單到復(fù)雜的教程。現(xiàn)在網(wǎng)上的有關(guān)FFMPEG的教程多半難度比較大幅虑,不太適合剛接觸 FFMPEG 的人學(xué)習(xí)丰滑;而且很多的例子程序編譯通不過,極大地打消了學(xué)習(xí)的積極性倒庵,對(duì)于平時(shí)只習(xí)慣在 Windows 下開發(fā)的初學(xué)者來說褒墨,從零開始了解相關(guān)依賴,搭建起項(xiàng)目并調(diào)試 ffmpeg 并不是件容易的事擎宝,好在另一個(gè)非官方的 開源項(xiàng)目貌亭,提供了一整套 Windows 下,用 VS 來調(diào)試 ffmpeg 的解決方案——Shift Media Project认臊。

**本文使用最新版本的 ShiftMediaProject 的代碼(20191015)圃庭,展示在Windows10 下使用 VS2015 下載代碼并成功編譯的過程。在另一篇本文參考的 博文 中亦介紹了整個(gè)過程失晴,不過由于是 **20180307 寫的剧腻,有些新的內(nèi)容沒有覆蓋到,這里可當(dāng)做是對(duì)其進(jìn)行補(bǔ)充和拓展涂屁。同時(shí)也作為個(gè)人筆記分享出來书在,希望能幫助到更多剛好有需求的人。****

|


| 目錄 |

  1. 工具準(zhǔn)備
  2. 下載源代碼
  3. 按項(xiàng)目指引下載相關(guān)依賴
  4. 使用VS編譯ffmpeg
  5. 編譯與運(yùn)行

|

1拆又、工具準(zhǔn)備

本文測試使用環(huán)境:

操作系統(tǒng):Windows 10

編譯使用開發(fā)環(huán)境:Visual Studio 2015

下載源代碼工具:git 客戶端

(ffmpeg 的編譯要求編譯器對(duì) C99 標(biāo)準(zhǔn)的支持儒旬。VS 中默認(rèn)只有 VS2013 以及更新的版本對(duì) C99 標(biāo)準(zhǔn)提供了支持,所以只能使用 VS2013 之后的版本帖族,如果要使用更前版本栈源,那么就得自己在 VS 先添加 C99 標(biāo)準(zhǔn)的支持)

2、下載源代碼

項(xiàng)目地址:https://github.com/ShiftMediaProject/FFmpeg

需要注意的是竖般,克隆到本地的目標(biāo)項(xiàng)目目錄 至少需要有2層甚垦,因?yàn)槠谕捻?xiàng)目的結(jié)構(gòu)是這樣子的:

<pre style="margin: 0px; padding: 0px; overflow: auto; overflow-wrap: break-word; font-family: "Courier New" !important; font-size: 12px !important; white-space: pre-wrap;">- msvc (OutputDir)                (該項(xiàng)目默認(rèn)的 VS 編譯輸出的目錄) - source                      (這個(gè)是需要的上一級(jí)目錄,待會(huì)下載的依賴項(xiàng)目有很多涣雕,十幾二十來個(gè)依賴項(xiàng)目都會(huì)下載到這里)- FFmpeg                    (這個(gè)是 clone 到本地的項(xiàng)目目錄)- ..Any other libraries source code.. (其他的十幾二十個(gè)依賴的項(xiàng)目)</pre>

準(zhǔn)備好文件夾后艰亮,比如這里上面的 "source" 文件夾,在這個(gè)文件夾下挣郭,克隆代碼下來

<pre style="margin: 0px; padding: 0px; overflow: auto; overflow-wrap: break-word; font-family: "Courier New" !important; font-size: 12px !important; white-space: pre-wrap;">git clone https://github.com/ShiftMediaProject/FFmpeg.git</pre>

3迄埃、按項(xiàng)目指引下載相關(guān)依賴

所有的 VS 項(xiàng)目相關(guān)的文件,都在 SMP 文件夾下兑障,仔細(xì)查看該目錄下的 readme 文件內(nèi)容侄非,按里面的說明進(jìn)行伶棒。

image

readme

按照 readme 說明,接下來:

下載項(xiàng)目中默認(rèn)提供的其他依賴的 git 項(xiàng)目

ShiftMediaProject 使用默認(rèn)的配置生成了一些項(xiàng)目文件彩库,這些文件可以使用 VS 打開,同時(shí)需要依賴特定的額外的項(xiàng)目先蒋,才能進(jìn)一步編譯骇钦。

依賴的項(xiàng)目包括:

<pre style="margin: 0px; padding: 0px; overflow: auto; overflow-wrap: break-word; font-family: "Courier New" !important; font-size: 12px !important; white-space: pre-wrap;"> bzlib iconv zlib lzma libxml2 sdl2 libmp3lame libvorbis libspeex libopus
libilbc libtheora libx264 libx265 libxvid libvpx libgme libmodplug libsoxr libfreetype
fontconfig libfribidi libass gnutls libgcrypt libssh libcdio libcdio_paranoia
libbluray opengl ffnvcodec libmfx</pre>

上面大部分的依賴項(xiàng)目都被放在了 ShiftMediaProject 用戶的 git 倉庫 了,這些都可以手動(dòng)下載竞漾,當(dāng)然強(qiáng)烈建議還是使用 FFmpeg\SMP**project_get_dependencies.bat **批處理自動(dòng)clone下載眯搭,這個(gè)腳本不僅僅可在第一次用于clone項(xiàng)目(及其本身依賴的其他git項(xiàng)目),還可以在后面任何時(shí)候執(zhí)行业岁,用來自動(dòng)更新各自最新的版本

所以鳞仙,雙擊執(zhí)行 “project_get_dependencies.bat” 批處理,等待一段 **較長的時(shí)間 **的下載笔时,即可完成大部分依賴庫的下載

額外下載其他依賴的文件

大部分需要的依賴(及其自身的依賴)都可以在 ShiftMediaProject 下的倉庫找到棍好,不過編譯還需要下載其他外部文件。

下面列出了需要額外下載的文件允耿,以及對(duì)應(yīng)需要下載到的目標(biāo)目錄

[
復(fù)制代碼

](javascript:void(0); "復(fù)制代碼")

<pre style="margin: 0px; padding: 0px; overflow: auto; overflow-wrap: break-word; font-family: "Courier New" !important; font-size: 12px !important; white-space: pre-wrap;"> 1) opengl (requires glext)
a) Download glext.h and wglext.h from opengl.org.        
b) Save the header files into "OutputDir/include/gl/".
c) Download khrplatform.h from khronos.org
d) Save the header file into "
OutputDir/include/KHR/".
2) ffnvcodec (requires nv-codec-headers)
a) Download the nv-codec-headers repository from https://github.com/FFmpeg/nv-codec-headers
b) Save the contents of the nv-codec-headers repositories "include" folder into "
OutputDir/include/".
3) AMF (requires Advanced Media Framework (AMF) SDK headers)
a) Download the AMF repository from https://github.com/GPUOpen-LibrariesAndSDKs/AMF
b) Save the contents of the AMF repositories "
amf/public/include
" into "OutputDir/include/AMF/**".</pre>

[
復(fù)制代碼

](javascript:void(0); "復(fù)制代碼")

1借笙、下載 opengl 的 glext.hwglext.h 到 " *OutputDir/include/gl/ **"           (下載點(diǎn) 這里

2较锡、下載 opengl 的 **khrplatform.h **到 " *OutputDir/include/KHR/ **"            ∫导凇(下載點(diǎn) 這里

3、下載 nv-codec-headers 項(xiàng)目的 **"include" **文件夾下的內(nèi)容到 " *OutputDir/include/ **"  ÷煸獭(git 項(xiàng)目點(diǎn) 這里

4低散、下載 AMF 項(xiàng)目的 "amf/public/include" 文件夾下的內(nèi)容到 " *OutputDir/include/AMF/ **" (git 項(xiàng)目點(diǎn) 這里)

[
復(fù)制代碼

](javascript:void(0); "復(fù)制代碼")

<pre style="margin: 0px; padding: 0px; overflow: auto; overflow-wrap: break-word; font-family: "Courier New" !important; font-size: 12px !important; white-space: pre-wrap;">OutputDir 是在項(xiàng)目屬性里指定了的 “輸出目錄 ”
默認(rèn)的項(xiàng)目輸出目錄是相對(duì)于 FFmpeg 源代碼目錄的 “....\msvc

一個(gè)預(yù)期的目錄結(jié)構(gòu)如下,(這個(gè)也是前面 2骡楼、下載源代碼 步驟中提到的文件結(jié)構(gòu)) </pre>

<pre style="margin: 0px; padding: 0px; overflow: auto; overflow-wrap: break-word; font-family: "Courier New" !important; font-size: 12px !important; white-space: pre-wrap;">- msvc (OutputDir)                (該項(xiàng)目默認(rèn)的 VS 編譯輸出的目錄)

  • source                      (這個(gè)是需要的上一級(jí)目錄熔号,待會(huì)下載的依賴項(xiàng)目有很多,十幾二十來個(gè)依賴項(xiàng)目都會(huì)下載到這里)
      - FFmpeg                    (這個(gè)是 clone 到本地的項(xiàng)目目錄)
      - ..Any other libraries source code.. (其他的十幾二十個(gè)依賴的項(xiàng)目)</pre>

[
復(fù)制代碼

](javascript:void(0); "復(fù)制代碼")

所以鸟整,如上創(chuàng)建 msvc 目錄跨嘉,按步驟創(chuàng)建文件夾并下載對(duì)應(yīng)文件(想偷懶的可以直接點(diǎn)擊我下載后打包的 msvc.zip

image

4、使用 VS 編譯 ffmpeg

下載完了項(xiàng)目依賴的其他 git 項(xiàng)目 和 頭文件之后吃嘿,就可以使用 VS 打開** FFmpeg\SMP\ffmpeg_deps.sln **項(xiàng)目文件了

初次打開項(xiàng)目祠乃,如果缺少 Win10 SDK 相關(guān)組件,會(huì)有類似下圖提示

image

點(diǎn)擊 “安裝” 兑燥,關(guān)閉VS后亮瓷,等待其安裝完畢。

image
image

實(shí)際上降瞳,如上 “安裝的缺少的功能” 后嘱支,重新用 VS 打開項(xiàng)目蚓胸,還是會(huì)提示一些項(xiàng)目 (不可用) 或 (加載失敗),還是無法 “重新加載項(xiàng)目

image

因?yàn)槭褂?msvc 來編譯 ffmpeg 還需要 安裝 NASM 才能編譯所有的匯編文件除师。ShiftMediaProject 為編譯 ffmpeg 提供的自定義構(gòu)建項(xiàng)【nasm / yasm】默認(rèn) VS是沒有支持的沛膳,所以最后一步就是為 VS 添加自定構(gòu)建項(xiàng)

為 VS添加自定構(gòu)建項(xiàng) NASM

ShiftMediaProject 提供了自動(dòng)下載和安裝 NASM 的安裝腳本,下載地址為: https://github.com/ShiftMediaProject/VSNASM/releases/latest

下載完后汛聚,注意最好 不要 直接運(yùn)行 install_script.bat

image

最好是先 以管理員身份锹安,在預(yù)設(shè)好 VS 相關(guān)變量的腳本環(huán)境中 (開發(fā)者命令行 / dev command line),運(yùn)行該 install_script.bat 腳本

image

若執(zhí)行成功倚舀,沒有任何失敗提示叹哭,便算是安裝完成了

如果直接運(yùn)行,由于執(zhí)行腳本環(huán)境沒有先預(yù)設(shè) VCINSTALLDIR 等變量痕貌,可能會(huì)出現(xiàn)如下錯(cuò)誤(一開始我直接運(yùn)行遇到的风罩,后來經(jīng) BesLyric 項(xiàng)目 的一個(gè)合作開發(fā)的伙伴提醒才意識(shí)到先運(yùn)行VS開發(fā)者命令行)。

出錯(cuò)與解決 (一般在開發(fā)者命令行執(zhí)行則不會(huì)有以下問題舵稠,這里保留記錄以供參考)

這一步出現(xiàn)的2個(gè)錯(cuò)誤是:

(1)無法下載 vswhere.exe 到當(dāng)前目錄

image

(2) 在構(gòu)建 .......\VC\bin\amd64\vcvars64.bat 文件的路徑時(shí), 構(gòu)建出一個(gè)不存在的路徑超升,導(dǎo)致腳本嘗試執(zhí)行 vcvars64.bat 時(shí)出錯(cuò)

image

第一個(gè)錯(cuò)誤還好解決,直接手動(dòng)復(fù)制鏈接到瀏覽器下載 https://github.com/Microsoft/vswhere/releases/download/2.5.9/vswhere.exe 哺徊,然后放在 **install_script.bat **同一目錄即可

第二個(gè)錯(cuò)誤就需要手動(dòng)改 **install_script.bat **文件了

經(jīng)過調(diào)試發(fā)現(xiàn)廓俭,在如下 批處理中:

[
復(fù)制代碼

](javascript:void(0); "復(fù)制代碼")

<pre style="margin: 0px; padding: 0px; overflow: auto; overflow-wrap: break-word; font-family: "Courier New" !important; font-size: 12px !important; white-space: pre-wrap;">REM Call the required vcvars file in order to setup up build locations if "%MSVC_VER%"=="16" (
set VCVARS=%VSINSTANCEDIR%\VC\Auxiliary\Build\vcvars%SYSARCH%.bat
) else if "%MSVC_VER%"=="15" (
set VCVARS=%VSINSTANCEDIR%\VC\Auxiliary\Build\vcvars%SYSARCH%.bat
) else if "%MSVC_VER%"=="14" (
set VCVARS=%VSINSTANCEDIR%\VC\bin%MSVCVARSDIR%\vcvars%SYSARCH%.bat
) else if "%MSVC_VER%"=="12" (
set VCVARS=%VSINSTANCEDIR%\VC\bin%MSVCVARSDIR%\vcvars%SYSARCH%.bat
) else ( echo Error: Invalid MSVC version! goto Terminate
)</pre>

[
復(fù)制代碼

](javascript:void(0); "復(fù)制代碼")

構(gòu)建的變量 %VCVARS% 沒有達(dá)到預(yù)期值,通過打印相關(guān)變量(使用 echo 指令)唉工,打印出該變量的結(jié)果是:

image

而經(jīng)過查找研乒,我VS環(huán)境中的 vcvars64.bat 實(shí)際路徑為: "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin\amd64\vcvars64.bat", 可能是之前安裝VS沒有按默認(rèn)路徑安裝導(dǎo)致(淋硝?)

于是針對(duì)我個(gè)人的環(huán)境情況雹熬,根據(jù)自己的 vcvars64.bat 腳本的位置,根據(jù)我只需要成功為 VS2015 安裝這個(gè)自定義構(gòu)建項(xiàng)的需要谣膳,我做了如下修改:

[
復(fù)制代碼

](javascript:void(0); "復(fù)制代碼")

<pre style="margin: 0px; padding: 0px; overflow: auto; overflow-wrap: break-word; font-family: "Courier New" !important; font-size: 12px !important; white-space: pre-wrap;">//由于VS2015會(huì)經(jīng)過 "%MSVC_VER%"=="14" 的分支竿报,所以我將原先構(gòu)建的邏輯注釋掉(使用 REM),然后直接指定我VS2015 對(duì)應(yīng)的 vcvars64.bat 文件的路徑</pre>

<pre style="margin: 0px; padding: 0px; overflow: auto; overflow-wrap: break-word; font-family: "Courier New" !important; font-size: 12px !important; white-space: pre-wrap;"> REM Call the required vcvars file in order to setup up build locations
if "%MSVC_VER%"=="16" (
set VCVARS=%VSINSTANCEDIR%\VC\Auxiliary\Build\vcvars%SYSARCH%.bat
) else if "%MSVC_VER%"=="15" (
set VCVARS=%VSINSTANCEDIR%\VC\Auxiliary\Build\vcvars%SYSARCH%.bat
) else if "%MSVC_VER%"=="14" ( echo [%VSINSTANCEDIR%\VC\bin%MSVCVARSDIR%\vcvars%SYSARCH%.bat]
REM set VCVARS****=%VSINSTANCEDIR%\VC\bin%MSVCVARSDIR%\vcvars%SYSARCH%****.bat
set VCVARS****="C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin\amd64\vcvars64.bat" ) else if "%MSVC_VER%"=="12" (
set VCVARS=%VSINSTANCEDIR%\VC\bin%MSVCVARSDIR%\vcvars%SYSARCH%.bat
) else (
echo Error: Invalid MSVC version!
goto Terminate
)</pre>

[
復(fù)制代碼

](javascript:void(0); "復(fù)制代碼")

重新執(zhí)行继谚,腳本的執(zhí)行便沒有其他錯(cuò)誤了烈菌。

為 VS添加自定構(gòu)建項(xiàng) YASM

重新使用 VS 打開 ffmpeg_deps.sln ,還是提示報(bào)錯(cuò)(部分項(xiàng)目未能正確加載)花履,還是沒能 “ 重新加載項(xiàng)目

image

經(jīng)過一番探索芽世,發(fā)現(xiàn)還需要 再安裝 另一個(gè) 自定義構(gòu)建項(xiàng) YASM,這一點(diǎn)是在 ShiftMediaProject 下其他 ffmpeg 的某些依賴項(xiàng)目下說明的诡壁,如 https://github.com/ShiftMediaProject/libvpx/tree/master/SMP 項(xiàng)目下的 readme 中:

[
復(fù)制代碼

](javascript:void(0); "復(fù)制代碼")

<pre style="margin: 0px; padding: 0px; overflow: auto; overflow-wrap: break-word; font-family: "Courier New" !important; font-size: 12px !important; white-space: pre-wrap;">*** Building with YASM *** In order to build libvpx using msvc you must first download and install YASM.
YASM is required to compile all assembly files. 1) Visual Studio YASM integration can be downloaded from https://github.com/ShiftMediaProject/VSYASM/releases/latest

  1. Once downloaded simply follow the install instructions included in the download.</pre>

[
復(fù)制代碼

](javascript:void(0); "復(fù)制代碼")

關(guān)于為什么不將 自定義構(gòu)建項(xiàng) **YASM **的下載說明放到 FFmpeg/SMP/readme.txt 下济瓢,項(xiàng)目維護(hù)者表示 ffmpeg 本身編譯直接依賴的項(xiàng)目只需要 NASM, 只是某些依賴本身編譯需要 YASM,想分開來在各自的依賴項(xiàng)目中說明

項(xiàng)目作者具體回復(fù)可查看:https://github.com/ShiftMediaProject/FFmpeg/pull/51

ShiftMediaProject 提供了自動(dòng)下載和安裝 yasm 的安裝腳本妹卿,下載地址為: https://github.com/ShiftMediaProject/VSYASM/releases

安裝方法 以及 可能遇到的問題 同上一節(jié) 為 VS添加自定構(gòu)建項(xiàng) NASM 完全一致

其他可能問題

1旺矾、找不到文件 '..\gnulib\lib*'

image

這種情況為依賴項(xiàng)目的子項(xiàng)目沒有自動(dòng)下載導(dǎo)致蔑鹦,這里截圖對(duì)應(yīng)的項(xiàng)目為 gnutls 的 git子模塊 gnulib 沒有自動(dòng)下載導(dǎo)致。

解決方案:手動(dòng)下載 gnulib 到 gnutls/gnulib 文件夾下箕宙,這里可以使用 git submodule 指令同步下載如下嚎朽,

image

如圖,如果沒有成功下載柬帕,可以嘗試手動(dòng)下載哟忍,下載地址為 :

<pre style="margin: 0px; padding: 0px; overflow: auto; overflow-wrap: break-word; font-family: "Courier New" !important; font-size: 12px !important; white-space: pre-wrap;">https://gitlab.com/libidn/gnulib-mirror.git</pre>

或者

<pre style="margin: 0px; padding: 0px; overflow: auto; overflow-wrap: break-word; font-family: "Courier New" !important; font-size: 12px !important; white-space: pre-wrap;">git://git.sv.gnu.org/gnulib.git</pre>

可使用 git clone 下載代碼,然后放置到 gnutls/gnulib 文件夾下即可

2雕崩、error LNK2038: 檢測到 “RuntimeLibrary” 的不匹配項(xiàng): 值 “MDd_DynamicDebug” 不匹配值 “MTd_StaticDebug”

可能原因:

解決方案下不同項(xiàng)目設(shè)置不一樣 (該問題由評(píng)論區(qū)網(wǎng)友 天空自由 遇到,其使用的的 VS 版本為 VS2019)

參考解決方案:

項(xiàng)目屬性 -> 配置屬性 -> C/C++ -> 代碼生成 -> 運(yùn)行庫
都設(shè)置一樣就行了: 多線程調(diào)試(/MTd)

5融撞、編譯與運(yùn)行

到此盼铁,編譯需要的所有事都完成了,重新打開VS尝偎,顯示(不可用)的項(xiàng)目是還沒重新加載饶火, “ 重新加載項(xiàng)目 ”項(xiàng)目即可

image

接下來,指定一個(gè)啟動(dòng)程序來調(diào)試致扯,這里設(shè)置 ffmpeg.exe 為啟動(dòng)項(xiàng)肤寝,“設(shè)為啟動(dòng)項(xiàng)目” 后,開始構(gòu)建編譯“生成

image

編譯過程中抖僵,若提示如下鲤看,是正常的(可能是因?yàn)殪o態(tài)編譯模式下 [使用的 lib文件] 在編譯生成lib文件后,VS沒有及時(shí)引用到臨時(shí)導(dǎo)致的耍群?)

<pre style="margin: 0px; padding: 0px; overflow: auto; overflow-wrap: break-word; font-family: "Courier New" !important; font-size: 12px !important; white-space: pre-wrap;">錯(cuò)誤 LNK1181 無法打開輸入文件“l(fā)ibgmpd.lib”   libnettle   E:\openSourceGit\ffmpeg-vs\nettle\SMP\LINK 1
錯(cuò)誤 LNK1181 無法打開輸入文件“l(fā)ibnettled.lib” libhogweed   E:\openSourceGit\ffmpeg-vs\nettle\SMP\LINK 1</pre>

image

靜靜等待其編譯結(jié)束后义桂,再點(diǎn)構(gòu)建 “生成” 或是 “運(yùn)行” 就沒報(bào)編譯上的錯(cuò)誤了。

最后的最后蹈垢,編譯完運(yùn)行 “本地 Windows 調(diào)試器”慷吊,大概會(huì)彈出錯(cuò)誤如下:

image

這是因?yàn)椤?strong>調(diào)試”->“命令”使用的文件路徑,和 實(shí)際在“鏈接器”->“常規(guī)”中設(shè)置的“輸出文件”路徑不一致導(dǎo)致曹抬,將前者設(shè)置和后者一致即可溉瓶。

好了,你可以用 vs 調(diào)試 ffmpeg 了 谤民!

image
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末堰酿,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子张足,更是在濱河造成了極大的恐慌胞锰,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,907評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件兢榨,死亡現(xiàn)場離奇詭異嗅榕,居然都是意外死亡顺饮,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,987評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門凌那,熙熙樓的掌柜王于貴愁眉苦臉地迎上來兼雄,“玉大人,你說我怎么就攤上這事帽蝶∩饫撸” “怎么了?”我有些...
    開封第一講書人閱讀 164,298評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵励稳,是天一觀的道長佃乘。 經(jīng)常有香客問我,道長驹尼,這世上最難降的妖魔是什么趣避? 我笑而不...
    開封第一講書人閱讀 58,586評(píng)論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮新翎,結(jié)果婚禮上程帕,老公的妹妹穿的比我還像新娘。我一直安慰自己地啰,他們只是感情好愁拭,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,633評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著亏吝,像睡著了一般岭埠。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上蔚鸥,一...
    開封第一講書人閱讀 51,488評(píng)論 1 302
  • 那天枫攀,我揣著相機(jī)與錄音,去河邊找鬼株茶。 笑死来涨,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的启盛。 我是一名探鬼主播蹦掐,決...
    沈念sama閱讀 40,275評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢(mèng)啊……” “哼僵闯!你這毒婦竟也來了卧抗?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,176評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤鳖粟,失蹤者是張志新(化名)和其女友劉穎社裆,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體向图,經(jīng)...
    沈念sama閱讀 45,619評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡泳秀,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,819評(píng)論 3 336
  • 正文 我和宋清朗相戀三年标沪,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片嗜傅。...
    茶點(diǎn)故事閱讀 39,932評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡金句,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出吕嘀,到底是詐尸還是另有隱情违寞,我是刑警寧澤,帶...
    沈念sama閱讀 35,655評(píng)論 5 346
  • 正文 年R本政府宣布偶房,位于F島的核電站趁曼,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏棕洋。R本人自食惡果不足惜挡闰,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,265評(píng)論 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望拍冠。 院中可真熱鬧尿这,春花似錦簇抵、人聲如沸庆杜。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,871評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽晃财。三九已至,卻和暖如春典蜕,著一層夾襖步出監(jiān)牢的瞬間断盛,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,994評(píng)論 1 269
  • 我被黑心中介騙來泰國打工愉舔, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留钢猛,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,095評(píng)論 3 370
  • 正文 我出身青樓轩缤,卻偏偏與公主長得像命迈,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子火的,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,884評(píng)論 2 354

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