原创 rtsp流轉爲fmp4並由WebSocket網關轉發,及對應js播放器

web端是無法直接播放rtsp流的,目前常用的解決方案是如jsmpeg、flv.js等。這些方案都是要推送流到服務端,之後才能在web上播放視頻,相對比較麻煩。我採用websocket結合mse的方式,實現了一個websocket網關,及

原创 Cesium使用視頻創建自定義紋理

本文參考了cesium的自定義texture實現,在此基礎上做了修改,引入html5的視頻進行渲染,實測比使用視頻作爲材質效率略有優化,且更具靈活性,利於對視頻進行二次處理,廢話不多說,代碼如下: var PrimitiveTextur

原创 ffmpeg實現動態調整字幕和水印位置

緊接上一篇文章,字幕內容的修改可以通過av_opt_set修改AVFilterContext的priv來實現,那麼字幕和水印的位置是否也可以這樣呢? 打開vf_drawtext.c和vf_overlayer.c這兩個文件,發現它們都有名爲

原创 ffmpeg實現動態調整字幕內容

最近在做一個項目,需要在視頻上疊加圖片和文字,而且是要能根據外部接口調整文字的內容,以及控制圖片的位置。水印和字幕當然還是用ffmpeg的濾鏡來實現了,變換文字內容也可以用drawtext的textfile來實現,但涉及到實時控制顯示位置

原创 ffmpeg添加MP4的pcm音頻支持

   ffmpeg中對MP4的打包處理是在movenc.c中,在實際打包過程中發現除了mov類型外,其它類型如vob等均無法生成音頻的聲道信息,經過分析發現在mov_write_audio_tag函數的最後有如下代碼  if (trac

原创 ffmpeg修改源碼添加flv對pcm的打包支持

flv支持的音頻包含pcm_mulaw和pcm_alaw但使用ffmpeg打包輸出的文件使用解碼器打開發現無法真確得到音頻的格式信息,分析源碼發現除了AAC、H264、MPEG4之外,其餘的格式信息未被寫入到流中,修改flvenc.c,找

原创 ffmpeg修改flv打包aac聲道部分

ffmpeg默認的flv打包輸出aac的音頻是44100的採樣率、雙聲道、16位數據格式,但flv格式是可以支持其它參數的,因此需要修改flvenc.c 在get_audio_flags函數中,有這段代碼: if (enc->codec

原创 ffmpeg源碼修改以適應海康攝像頭rtsp流的aac音頻

最近在測試通過rtsp採集海康的攝像頭,以前海康的攝像頭採用g711音頻,沒出現什麼問題,這次的設備升級成了aac音頻,結果使用ffmpeg出現音頻格式不能識別的問題,報什麼Audio object type 0的錯誤,查看發現是解碼器的

原创 ffmpeg添加mpeg ps流的pcm的編碼支持

    ffmpeg的mpegenc.c中,缺少了psm頭的寫入,而ps流的封包應當是ps<-sys<-psm<-pes,即pes在寫入sys頭之後寫pes之前應當先寫入psm頭,因此mpegenc.c中需要增加寫入psm頭的函數,如下:

原创 windows下codeblocks的wxsmith所需wxGTK的安裝

windows下的codeblocks安裝完後已經有mingw,但沒有wxGTK,還不能使用codeblocks裏的wxsmith,因此需要安裝wxGTK 首先修改windows的環境變量,增加以下內容 PATH : MinGW安裝目錄/

原创 ffmpeg添加mpeg ts對pcm的支持

 在mpegtsenc.c的mpegts_write_pmt函數中,switch(st->codec->codec_id)的case中,添加如下代碼             case AV_CODEC_ID_PCM_MULAW:    

原创 linux下odbc的安裝配置和wxODBC的開發

安裝 linux 下的ODBC 有兩種:unixODBC 和iodbc ,由於wxGTK 提供的是對iodbc 的支持,因此在安裝wxGTK 前需要先安裝iodbc 。在後面安裝freetds 時,依據環境和依賴關係可能會將unixO

原创 oracle的包、用戶數據類型與內存表的實現

        最近在做的一個項目中,需要從UDP接收數據,數據記錄了同樣的點不同時間的值,然後每分鐘定時將接收到的值更新到數據庫中,但是接收數據的時間雖然在一分鐘左右,但時間並不準確,如果UDP沒有接收到數據,也必須將上次收到的數據再次

原创 mingw下ffmpeg編譯添加x265支持

最近在編譯ffmpeg時,發現x265的一個bug,記錄一下 我使用的x265是1.2 stable,修訂版本7246,在編譯完x265後將其添加到ffmpeg過程中,在ffmpeg的configure這一步始終不能檢測通過,每次都是報x

原创 linux下codeblocks及wxGTK安裝

一般情況下,codeblocks是可以直接使用yum或RPM等安裝方式的,不過在有些特殊情況下無法使用yum,RPM安裝的依賴關係難以解決,這是就得用編譯安裝了。 codeblocks安裝前必須安裝wxGTK,我在這裏用的版本是2.8.1