FFMEPG 平臺移植,介面簡化和外部模組接入 (四)ffmpeg android移植(ffmpeg 視訊編碼)
FFMPEG 視訊編碼最常見的H264,H265需要X264,X265外部模組支援,可以從我們開源平臺的FFMPEG編譯專案裡面獲取程式碼和配置進行一鍵式編譯:https://github.com/Car-eye-team/Car-eye-FFMPEG,我們下面的程式碼主要是為了簡化程式碼呼叫結構。只需要配置引數,輸入資料就可以進行視訊編碼,不多說,貼上程式碼:
- /*
- * Car eye 車輛管理平臺: www.car-eye.cn
- * Car eye 開源網址: https://github.com/Car-eye-team
- * CarEyeEncoderAPI.h
- *
- * Author: Wgj
- * Date: 2018-04-29 20:01
- * Copyright 2018
- *
- * CarEye 媒體編碼庫介面宣告
- */
- #ifndef __CAREYE_ENCODER_H__
- #define __CAREYE_ENCODER_H__
- #include "public.h"
- // 編碼器物件控制代碼定義
- #define CarEye_Encoder_Handle void*
- // 最大音訊幀大小 1 second of 48khz 32bit audio
- #define MAX_AUDIO_FRAME_SIZE 192000
- // 媒體編碼型別定義 與FFMPEG中一一對應,H265定義與其他庫定義需要轉換
- enum
- {
- // 不進行編碼
- CAREYE_CODEC_NONE = 0,
- // H264編碼
- CAREYE_CODEC_H264 = 0x1C,
- // H265編碼
- CAREYE_CODEC_H265 = 0xAE,
- // MJPEG編碼
- CAREYE_CODEC_MJPEG = 0x08,
- // MPEG4編碼
- CAREYE_CODEC_MPEG4 = 0x0D,
- // AAC編碼
- CAREYE_CODEC_AAC = 0x15002,
- // G711 Ulaw編碼 對應FFMPEG中的AV_CODEC_ID_PCM_MULAW定義
- CAREYE_CODEC_G711U = 0x10006,
- // G711 Alaw編碼 對應FFMPEG中的AV_CODEC_ID_PCM_ALAW定義
- CAREYE_CODEC_G711A = 0x10007,
- // G726編碼 對應FFMPEG中的AV_CODEC_ID_ADPCM_G726定義
- CAREYE_CODEC_G726 = 0x1100B,
- };
- // YUV視訊流格式定義,與FFMPEG中一一對應
- enum CarEye_AVType
- {
- CAREYE_FMT_YUV420P = 0,
- CAREYE_FMT_YUV422P = 4,
- CAREYE_FMT_YUV444P = 5,
- CAREYE_FMT_YUV410P = 6,
- CAREYE_FMT_YUV411P = 7,
- };
- // 原始流結構定義
- typedefstruct CarEye_OriginalStream
- {
- // 視訊輸入流格式
- enum CarEye_AVType InVideoType;
- // 期望輸出的視訊流格式,不期望輸出可設定為CAREYE_CODEC_NONE
- enum CarEye_CodecType OutVideoType;
- // 期望輸出的音訊流格式,不期望輸出可設定為CAREYE_CODEC_NONE
- enum CarEye_CodecType OutAudioType;
- // 視訊幀率(FPS),推薦值:25
- unsigned char FramesPerSecond;
- // 視訊寬度畫素
- unsigned short Width;
- // 視訊的高度畫素
- unsigned short Height;
- // 一組圖片中的圖片數量,推薦值:10
- int GopSize;
- // 非B幀之間的B幀的最大數量,推薦值:1
- int MaxBFrames;
- // 視訊位元速率,越高視訊越清楚,相應體積也越大 如:4000000
- float VideoBitrate;
- // 音訊取樣率 如:44100
- unsigned int SampleRate;
- // 音訊位元率 如:64000,越高聲音越清楚,相應體積也越大
- float AudioBitrate;
- }CarEye_OriginalStream;
- // YUV媒體流結構定義
- #ifdef __cplusplus
- extern"C"
- {
- #endif
- /*
- * Comments: 建立一個編碼器物件
- * Param aInfo: 要編碼的媒體資訊
- * @Return CarEye_Encoder_Handle 成功返回編碼器物件,否則返回NULL
- */
- CE_API CarEye_Encoder_Handle CE_APICALL CarEye_EncoderCreate( CarEye_OriginalStream aInfo);
- /*
- * Comments: 釋放編碼器資源
- * Param aEncoder: 要釋放的編碼器
- * @Return None
- */
- CE_API void CE_APICALL CarEye_EncoderRelease(CarEye_Encoder_Handle aEncoder);
- /*
- * Comments: 將輸入YUV視訊編碼為設定好的格式資料輸出
- * Param aEncoder: 申請到的有效編碼器
- * Param aYuv: 要編碼的YUV資料
- * Param aPts: 當前視訊幀序號
- * Param aBytes: [輸出]編碼後的視訊流
- * @Return int < 0編碼失敗,> 0為編碼後資料位元組個數 ==0表示引數無效
- */
- CE_API int CE_APICALL CarEye_EncoderYUV(CarEye_Encoder_Handle aEncoder,
- CarEye_YUVFrame *aYuv, int aPts,
- unsigned char *aBytes);
- /*
- * Comments: 獲取PCM編碼時接受的最大位元組數
- * Param aEncoder: 申請到的有效編碼器
- * @Return PCM編碼緩衝區最大位元組數
- */
- CE_API int CE_APICALL CarEye_GetPcmMaxSize(CarEye_Encoder_Handle aEncoder);
- /*
- * Comments: 將輸入的PCM音訊編碼為指定資料格式輸出
- * Param aEncoder: 申請到的有效編碼器
- * Param aPcm: 要編碼的PCM資料
- * Param aSize: 要編碼音訊流位元組數
- * Param aBytes: [輸出] 編碼後的音訊流
- * Param aPts: 當前編碼幀的序號
- * @Return int < 0編碼失敗,> 0為編碼後PCM的位元組個數 ==0表示引數無效
- */
- CE_API int CE_APICALL CarEye_EncoderPCM(CarEye_Encoder_Handle aEncoder,
- unsigned char *aPcm, int aSize, int aPts,
- unsigned char *aBytes);
- #ifdef __cplusplus
- }
- #endif
- #endif
- /*
- * Car eye 車輛管理平臺: www.car-eye.cn
-
相關推薦
FFMEPG 平臺移植,介面簡化和外部模組接入 (四)ffmpeg android移植(ffmpeg 視訊編碼)
FFMPEG 視訊編碼最常見的H264,H265需要X264,X265外部模組支援,可以從我們開源平臺的FFMPEG編譯專案裡面獲取程式碼和配置進行一鍵式編譯:https://github.com/Car-eye-team/Car-eye-FFMPEG,我們下面的程式碼主要是為了簡化程式碼呼叫結構。只需要配置
FFMEPG 平臺移植,介面簡化和外部模組接入 (一)ffmpeg android移植(ndk 編譯)
Car-eye-FFMPEG專案是Car-eye 開源平臺的一個新專案,目的是在FFMPEG專案和其外部模組,如freetype,X264的基礎上建立一個多平臺編譯,介面呼叫簡單的工具集。本部落格是一個連載,首先從android開始寫吧。因為FFMPEG本身對android編譯
STM32 標準韌體庫的下載,檔案介紹和工程的建立(綜合)
前言 博文基於ARM Cortex-M3核心的STM32F103ZET6晶片和標準3.5.0庫; 博文介紹標準庫中個資料夾的含義和以及一個簡單工程的建立; 如有不足之處還請博友多多指教; 標準庫的下
不要慫,就是GAN (生成式對抗網路) (四):訓練和測試 GAN
在 /home/your_name/TensorFlow/DCGAN/ 下新建檔案 train.py,同時新建資料夾 logs 和資料夾 samples,前者用來儲存訓練過程中的日誌和模型,後者用來儲存訓練過程中取樣器的取樣圖片,在 train.py 中輸入如下程式碼:
基於Ubuntu Server 16.04 LTS版本安裝和部署Django之(四):安裝MySQL數據庫
ins cli 遠程訪問 lib root 版本 連接 str ibm 1.安裝mysql以及插件: sudo apt-get install mysql-server mysql-client sudo apt-get install libmysqld-devsud
ASP.NET Core MVC 和 Visual Studio入門(四)新增模型
ASP.NET Core MVC 和 Visual Studio入門(四)新增模型 Rick Anderson 和Tom Dykstra 在要節中將新增一些在資料庫中管理電影的類,這些類將成為MVC應用的“Model(模型)”部分。 這些類將與Enti
Fluentd日誌處理-插件使用和調試問題(四)
logstash health grep have gin data mdb eth -i fluentd一些插件的使用 geoip的配置模版 <filter request> @type geoip geoip_lookup_keys ip bac
人臉驗證(四)--CenterLoss,損失函式改進原因 人臉驗證(四)--CenterLoss
轉 人臉驗證(四)--CenterLoss 2017年12月10日 11:44:31 EasonApp 閱讀數:918
SpringCloud微服務雲架構構建B2B2C電子商務平臺之-企業分散式微服務雲架構構建(四)
今天正式給大家介紹了Spring Cloud - 企業分散式微服務雲架構構建,我這邊結合了當前大部分企業的通用需求,包括技術的選型比較嚴格、苛刻,不僅要用業界最流行的技術,還要和國際接軌,在未來的5~10年內不能out。作為公司的架構師,也要有一種放眼世界的眼光,不僅要給公司做好的技術選型,而且還要快速響應企
Apache Kafka入門教程輕鬆學-第四章 Kafka核心元件和流程-設計-原理(四)副本管理器
本入門教程,涵蓋Kafka核心內容,通過例項和大量圖表,幫助學習者理解,任何問題歡迎留言。 目錄: 本章簡單介紹了副本管理器,副本管理器負責分割槽及其副本的管理。副本管理器具體的工作流程可以參考牟大恩所著的《Kafka入門與實踐》。 副本管理器 副本機制使得kafka
領域驅動設計,讓程式設計師心中有碼(四)
#領域驅動設計,讓程式設計師心中有碼(四) ----------------------追憶有關分層的古老往事 我一直認為,程式設計師也是藝術家,他們撰寫的每一行程式碼,是獻給這大好世界的優美詩篇。不同的人,寫的程式碼也許風格迥
安裝Centos7 、 Mysql8 叢集,實現讀寫分離 高可用(四)-- MyCat讀寫分離
零、說在前面 先吐個槽,這點東西折騰了我四五天,最後還是一條告警拯救了我,下面進入正文 看了幾個MySQL的讀寫分離的中介軟體,貌似這個是比較流行的一個,雖然我不是BAT的粉絲,但是有好用的
我所理解的Android模組化(四)——常見問題和注意事項
關於Android模組化,前面已經寫了三篇文章,沒有了解的大家可以先去看一下,附上鍊接地址: 下面主要來說一下Android模組化過程中的常見問題和注意事項: 注意事項 記得在一篇技術部落格中看到微信Tinker的開發人員說過一句話
百度地圖和openlayers融合封裝(四)之demo展示
2018.5.28 --11:31 wmap的目的是減少地圖開發的成本和時間。 如果你需要進行地圖開發,覺的百度地圖和openlayers的api文件晦澀難懂(主要是openlayers的api很難懂,百度api入門很簡單),可以使用wmap。你不需要去學習百度地圖api
小程式成長之路_引入小程式自帶icon 和 引用阿里圖示(四)
上篇我們已經成功填加tabBar,那麼我們這篇就講解一下 引用圖示icon,小程式裡有自己的圖示供大家使用,但是圖示有限,有很多都滿足不了我們的需求。這次呢 給大家介紹一下阿里圖示,裡面有大量的圖示供你選擇, 下面我就給大家介紹兩種引用icon的方法 , 引用小程式自帶
OpenStack(kilo)介面dashboard的二次開發(四)-國際化
openstack介面支援英語、簡體中文、繁體中文等多種語言。使用者可以在使用者設定中進行設定。如果要對openstack進行二次開發,那麼就一定要對介面上的標題、提示的內容等進行修改。 國際化 國際化 看下面兩幅圖,分別是簡體中文、
【Oracle 叢集】ORACLE DATABASE 11G RAC 知識圖文詳細教程之快取融合技術和主要後臺程序(四)
前面已經介紹了 RAC 的後臺程序,為了更深入的瞭解這些後臺程序的工作原理,先了解一下 RAC 中多節點對共享資料檔案訪問的管理是如何進行的。要了解 RAC 工作原理的中心,需要知道 Cache Fusion 這個重要的概念,要發揮 Cache Fusion 的作用,要有一個前提條件,那就
不要急,我與你一起學習JSP(四)——JSP的基礎語法【二】
近幾天,我的 ADSL 上不了網了。幾乎在家裡,只能買碟看片。世界上有什麼大事,論壇中有多少 MM 灌水我都不知道。本來說,這帖要在週三時發出來。沒想到的是,昨天聯通公司才把網解決。10010的客服,我從回家開始打,一直打到夜裡12點,都沒人理。哎。。。 上次我們講到了
Spring原始碼深度解析總結(6)—— 配置檔案的讀取和Bean的載入(四)
經過前面的分析,我們終於結束了對XML配置檔案的解析,接下來將會面對更大的挑戰,就是對bean載入的探索。bean載入的功能的實現遠比bean的解析複雜的多,同樣,我們還是以最簡單的示例為基礎,對於bean的功能,在Spring中的呼叫方式為:MyTestBean bean
玩轉extjs5之Ext.data.Model和Ext.data.Store(四)
一、Ext.data.Model (1)Model代表應用程式管理的一些物件。例如,我們可能會為 我們想在系統中建模的現實世界中的一些物體像使用者、產品和汽車等定義一個Model。這些Model在 模型管理器中註冊,被Store使用, 而這些Store又被許多