原创 ffmpeg 重要數據結構接口及分析

一、重要的數據結構及函數列表 I. 數據結構: (1) AVFormatContext (2) AVOutputFormat (3) AVInputFormat (4) AVCodecContext (5) AVCodec (6) A

原创 MPEG-2 TS碼流分析

一、TS流概述 ES流(Elementary Stream,基本流):數字電視各組成部分編碼後所形成的直接表示基本元素內容的流,包含視頻、音頻或數據的連續碼流。 PES流(Paketized Elementary Stream,打包

原创 流媒體協議介紹(rtp/rtcp/rtsp/rtmp/mms/hls)

RTP           參考文檔 RFC3550/RFC3551          Real-time Transport Protocol)是用於Internet上針對多媒體數據流的一種傳輸層協議。RTP協議詳細說明了在互聯網

原创 win7 下ffmpeg release 版本崩潰問題

vs2010 win7 下開發視頻服務器,用到ffmpeg,debug版本運行正常,切換到release時,出現"0x00905a4d 處未處理的異常: 0xC0000005: 讀取位置 0x00905a4d 時發生訪問衝突",原以爲是

原创 I,P,B幀和PTS,DTS的關係

參考:http://dranger.com/ffmpeg/tutorial05.html 基本概念: I frame :幀內編碼幀 又稱intra picture,I 幀通常是每個 GOP(MPEG 所使用的一種視頻壓縮技術)的第一

原创 FFMPEG 關於對時間戳轉換的理解

首先介紹轉換函數:av_rescale_q_rnd(int64_t a, int64_t b, int64_t c, enum  AVRounding rnd) 此函數主要用於對於不同時間戳的轉換。具體來說是將以 "時鐘基c" 表示的 數

原创 FFMPEG 在vs2010中的環境配置

本文檔爲快速在vs2010中搭建FFmpeg環境提供方便。   從官網上下載ffmpeg最新的版本。網址爲http://ffmpeg.zeranoe.com/builds/。例如我需要的是64-bitBuilds (Shared)和64-

原创 c#調用c++封裝dll 參數爲字符串輸出函數的解決辦法

有時候c#需要調用 c++dll 參數爲字符串且爲輸出的函數  。 如: c++ dll函數如下: int test(char _OUT *str); str爲輸出。 c#中調用如下: [DllImport("test.dll", C

原创 InstallShield2010怎麼生成唯一setup.exe安裝文件

installShield2010 生成安裝文件在DISK 下默認會有一個setup.exe 和其他一些依賴文件,及包含了我們想要打包的progream files文件 這不是我們想要的,我們想要將這些文件都打包到一個setup.ex

原创 vs2010 getlasterror 5

vs2010中 UAC (User Account Control的簡稱) 問題,有時在vs2010中創建一個文件  會提示權限不夠  getlasterror 返回爲5  解決方法 點擊工程右鍵 屬性-》鏈接器-》清單文件-》UAC執行

原创 編碼音頻aac的時候 (avcodec_encode_audio2)提示FFMPEG more samples than frame size 的錯誤

原因: 音頻編碼器AVCodecContext (編碼器的能力)的frame_size 比編入幀AVFrame的nb_samples小 。 解決方法: 通過調試可以得到aac編碼器的frame_size 爲1024 所以每次應該給編碼器1

原创 #error WINDOWS.H already included. MFC apps must not #include

錯誤提示: afxv_w32.h文件: #ifdef _WINDOWS_      #error WINDOWS.H already included.  MFC apps must not #include  <windows.h

原创 ffmpeg中swscale 的用法

移植ffmpeg過程中,遇到swscale的用法問題,所以查到這篇文章。文章雖然已經過去很長時間,但是還有頗多可以借鑑之處。謝謝“咕咕鐘"。          轉自:http://guguclock.blogspot.com/200

原创 Directshow 如何獲取攝像頭音視頻設備,並判斷攝像頭是否佔用。

Directshow 能很方便的獲取連接的 視頻和音頻設備的名稱。本篇文章同時介紹如何判斷獲取的攝像頭是否正在佔用。 代碼如下: (1) 獲取攝像頭音視頻設備名稱 void CDeviceTree::EnumDevices() {

原创 VC運行時庫(/MD、/MT) 說明

   VC項目屬性→配置屬性→C/C++→代碼生成→運行時庫 可以採用的方式有:多線程(/MT)、多線程調試(/MTd)、多線程DLL(/MD)、多線程調試DLL(/MDd)、單線程(/ML)、單線程調試(/MLd)。 其中以小