原创 ffmpeg莫名其妙的問題

 AVFormatContext* ifcon =NULL,這裏一定要將其設置爲NULL,不然會導致一些奇怪的問題出現。

原创 關於Ubuntu service的一些問題

在部署個人的service,要求將開機的恢復模式禁用,這裏就要到/etc/default/grub 裏修改,將GRUB_TIMEOUT 改爲0,這個是不會出現選擇畫面,將【#GRUB_DISABLE_RECOVERY=”true”

原创 ffmpeg 利用AVFilter音頻重採樣

前段時間一直在搞pcm轉aac ,一開始打算直接來一個frame就編碼,但發現因爲pcm音頻包每個packet是320個字節,AAC每個Packet是1024個字節。所以要加入個filter來轉換。不過你也可以自己弄個buffer

原创 關於Windows media播放時AAC沒有聲音ffmpeg

在做項目時候,遇到不小坑,主要是國內的資料太少以及英語水平勉強,所以才讓自己的問題一直靠猜想以及驗證中,浪費不小時間。這裏這個問題一開始我懷疑是沒有加上adts頭導致的。但最後發現不是這個問題,還有media 的播放格式也有嚴格的

原创 錄製播放後時間不對問題

這次項目裏,我發現我錄製的視頻裏有個問題是關於那個播放時候十分快,當時以爲時間戳不同步導致的,但10幾秒的視頻最後變成2分鐘,這個問題有可能是因爲把packet封裝的時候將視頻和音頻混了導致的,你可以打印packet的stream

原创 Linux 修改 網卡名稱 小記

一.問題說明 測試環境中出現的小問題,因爲虛擬機之間經常複製來複制去,導致網卡配置這塊的不一致現象。   配置文件的信息: [root@ora10g network-scripts]# catifcfg-eth0 DEVICE

原创 關於H264編碼的問題

在解碼後再編碼時發生了 Application provided invalid, non monotonically increasing dts to muxer in stream  原因是解碼後我們得到一個AVFrame ,這

原创 多線程下隊列的坑

在多線程下,我們一般認爲push和pop 2個線程是沒有衝突的。但事實上如果我們在判斷size爲不爲空而去判斷pop時就要注意一個問題。將push和pop上鎖了,因爲有可能size不再是正確的size,從而導致pop出來的是錯誤的

原创 記錄這次空指針的原因

當初因爲要將輸入和輸出分離,從而以爲將那些代碼直接帶走就可以。但在這發生了空指針的現象,十分讓人惱火的是這個錯誤是時不時纔出現,導致不知哪裏出現這個問題。最後才發現是當時做了一個斷線重連的機制,導致當初的對象刪除,從而使指針指向空

原创 ffmpeg初始化文件頭信息時

 if(ofmt_ctx->oformat->flags & AVFMT_GLOBALHEADER)           o_video_strea

原创 時間戳的累積誤差

因爲網絡抖動或者有些攝像機的原因導致時間戳的錯誤,這時要手動修復。

原创 關於合拼視頻和音頻

在合拼不同的視頻和音頻時候,我們需要2條流,一條音頻,一條視頻。但合拼時候我們將其按時間戳排序,然後做了個緩衝。 但問題就在緩衝這邊了,我們設置緩衝時播放要多開一條線程,不然就會造成了播放的卡頓,或者掉包。原因是在播放時候,我們也要對比時

原创 歡迎使用CSDN-markdown編輯器

C++簡單多線程 c++多線程裏面除了指定函數開始新線程外,也可以用可調用(callable)類型構造,將帶有函數調用符類型的實例傳入std::thread類中,替換默認的構造函數。 代碼如下: // test.cpp :

原创 ffmpeg調試

利用gdb調試ffmpeg如下: gdb ffmpeg_g set args 命令參數 剩下的是gdb調試。  ffmpeg -hwaccels 查看硬件

原创 音頻基礎資料整理

本文目的是想弄清楚數字信號如何轉換成模擬信號,以及在音頻裏,解碼後爲什麼一個數字代表的意義。 1.數字信號轉成模擬信號。先從簡單的說sinx,這個是一個三角函數。當現實生活我們模擬sinx這個波形時候,那就出現我們所說的模擬信號。這是連續