導航:首頁 > 操作系統 > androidh264mp4

androidh264mp4

發布時間:2023-09-02 18:14:22

『壹』 android mediacodec編碼h264 怎樣調節gop

android mediacodec編碼h264 怎樣調節gop

簡單地說。軟解碼是用軟體方式進行解碼,需要佔用CPU資源,速度相當較慢。硬解碼直接用硬體方式解決,不佔用CPU資源,速度相對較快。

mov編碼h264跟mp4編碼h264的區別?

mov和mp4是兩種不同的封裝格式,裡面的h.264都是一樣的

H264編碼 H264編碼器 哪個牌子好

單位用的是視盈,幾年來一直很穩定。推薦你聯系視盈黃國耀。一三七,一一一四,六六九一。

MediaCodec編碼可以獲取到H264幀類型嗎?

僅轉換可以使用命令,把任一mp4轉換成ts
ffmpeg -i input.mp4 -c -bsf h264_mp4toannexb output.ts 很高興為您解答!
有不明白的可以追問!如果您認可我的回答。

如何實時h264編碼及aac編碼

1. 簡單介紹

首先激瞎喊是捕獲,這里採用了DirectShow的方式,對它進行了一定程度的封裝,包括音視頻。好處是直接使用native api,你可以做想做的任何修改,壞處是,不能跨平台,採集音視頻這種應用,linux平台也是需要滴呀。有跨平台的做法,對視頻,可以使用OpenCV,對音頻,可以使用OpenAL或PortAudio等,這樣就行了。

編碼可以選擇的餘地比較大,對視頻來講,有H264, MPEG-4, WebM/VP8, Theora等,音頻有Speex, AAC, Ogg/Vorbis等,它們都有相應的開源項目方案,我採用的是x264進行H264編碼,libfaac進行aac編碼,之後是否更改編碼方案,等具體項目需求再說了。這里提一下WebM,Google牽頭的項目,完全開放和自由,使用VP8和Vorbis編碼,webm(mkv)封裝,有多家巨頭支持,目的是想要取代當前的H264視頻編碼,號稱比後者更加優秀,我沒有測試過實際效果。不過有商業公司牽頭就是不一樣,各項支持明野都很全面,有時間了關注一下。

2. 邏輯和流程

基本的思想是實現dshow ISampleGrabberCB介面,通過回調來保存每一個buffer。除了界面線程和dshow自己的線程之外,我們啟動了兩個線程,AudioEncoderThread和VideoEncoderThread,分別從SampleGrabber中取出數據,調用編碼器進行編碼,編碼後的文件可以直接輸出。看圖:

程序是用VS2010構建的,看張工程截圖:

Base下面的是對系統API的一些簡單封裝,主要是線程和鎖。我這里簡單也封裝的了一下dshow的捕獲過程,包括graph builder的創建,filter的連接等。directshow是出了名的難用,沒辦法,難用也得用。因為是VS2010,調用的Windows SDK 7.1中的dshow,沒有qedit.h這個文件,而它正式定義ISampleGrabberCB的。不急,系統中還是有qedit.dll的,我們要做的就是從Windows SDK 6.0中,把它拷過來,然後在stdafx.h中加入這幾行代碼,就可以了

1 #pragma include_alias( "dxtrans.h", "qedit.h" )
2 #define __IDxtCompositor_INTERFACE_DEFINED__
3 #define __IDxtAlphaSetter_INTERFACE_DEFINED__
4 #define __IDxtJpeg_INTERFACE_DEFINED__
5 #define __IDxtKey_INTERFACE_DEFINED__
6 #include "qedit.h"

3. 音視頻編碼

相關文件:

Encoder下就是音視頻編碼相關的代碼。X264Encoder封裝了調用x264編碼器的神州操作,FAACEncoder封裝了調用libfaac編碼器的操作,VideoEncoderThread和AudioEncoderThread負責主要的流程。下面我把關鍵代碼貼出來,大家可以參考一下。

A. 視頻編碼線程

主要流程是首先初始化x264編碼器,然後開始循環調用DSVideoGraph,從SampleGrabber中取出視頻幀,調用x264進行編碼,流程比較簡單,調用的頻率就是你想要獲取的視頻幀率。要注意的一點是,x264進行編碼比較耗時,在計算線程Sleep時間時,要把這個過程消耗的時間算上,以免採集的視頻幀率錯誤。

B. 音頻編碼線程

主要流程和視頻編碼線程相同,也是初始化FAAC編碼器,然後循環調用DSAudioGraph,從SampleGrabber中取出視頻幀,調用faac進行編碼。和視頻不同的是,音頻的sample的頻率是非常快的,所以幾乎要不斷的進行採集,但前提是SampleGrabber中捕獲到新數據了才行,不然你的程序cpu就100%了,下面代碼中IsBufferAvailaber()就是做這個檢測的。

調用faac進行編碼的時候,有點需要注意,大家特別注意下,不然編碼出來的音頻會很不正常,搞不好的話會很頭疼的。先看下faac.h的相關介面

1 faacEncHandle FAACAPI faacEncOpen(unsigned long sampleRate, unsigned int numChannels,2 unsigned long *inputSamples, unsigned long *maxOutputBytes);3 4 int FAACAPI faacEncEncode(faacEncHandle hEncoder, int32_t * inputBuffer, unsigned int samplesInput,5 unsigned char *outputBuffer, unsigned int bufferSize);
faacEncEncode第三個參數指的是傳入的sample的個數,這個值要和調用faacEncOpen返回的inputSamples相等。要做到這點,就要在dshow中設置好buffsize,公式是:

BufferSize = aac_frame_len * channels * wBytesPerSample aac_frame_len = 1024

如何讓opencv支持h264編碼

h.264是一種視頻壓縮標准了,有專門的庫對它進行壓縮解壓的。
我對opencv還算是比較熟悉的,它沒有h264之類的庫

H264編碼DVD能直接播放嗎?

不能啊,不同格式的,H264跟DVD不一樣啊

Adobe Pr的h264是啥編碼器

音頻編輯器
1、運行Set-up.exe,會彈出「遇到了以下問題」彈窗,選擇忽略;
2、之後會初始化安裝程序,請不要進行任何操作,稍等片刻;
3、有安裝和試用兩種選擇,請點擊試用
4、安裝需要Adobe ID登錄驗證,沒有的話選擇"獲取Adobe ID"注冊一個,只需有郵箱和密碼即可(您也可以選擇斷開網路連接,選擇「以後再登錄」),同樣也能繼續安裝;這里為您演示登陸安裝。
5、接受協議後,選擇安裝的語言和安裝的目錄。
6、之後只需耐心等待,軟體需要組件已自帶,無需另外安裝,這樣就等安裝完Adobe Premiere Pro CC 2015。
7、安裝完畢點擊立即啟動,啟動後不是進入軟體而是試用版界面,點擊開始試用;
8、打開Premiere Pro CC 2015,選擇新建項目才算是進入軟體。
PS:若是不事先進入一次軟體直接破解會導致軟體無法打開。
Premiere Pro CC 2015::3322./soft/201507311409.

mediacodec取不出h264解碼後數據嗎

需要調用av_parser_parse
進行幀查找分解後再送入解碼器解碼。

H264與MPEG中I,P,B幀編碼一樣嗎

編碼是不一樣的,H.264採用的幀內編碼和幀間預測編碼技術 比MPEG-2的都要先進,因此壓縮效率更高

『貳』 安卓開發怎麼將和h264文件解碼播放

如題所示,我想將攝像頭採集的數據進行h.264硬編碼,我想知道Android是如何對視頻數據進行硬體編碼的
目前已經知道的方案有:
1、用Android4.1 API MediaCodec來對視頻數據進行編碼

http://stackoverflow.com/q/17232477/2293921
此種方式我測試了,並未成功,目前一直卡在這里,如果你等幫助我,我將非常感激

2、通過MediaRecorder方式對數據進行編碼

具體可參考 http://blog.csdn.net/zblue78/article/details/6083374

3、通過移植ffmpeg

這種方式沒接觸過,也不了解

可能還有一些其他的方式來對視頻硬編碼,如果你了解一下,感謝分享!

綜上,我更傾向於1的方式去做

我來回答

Android , MediaCodec , 硬編碼

post_newreply

//$(\'note_\').focus();
function succeedhandle_vfastpost(url, message, param) {
$(\'vmessage\').value = \'\';
succeedhandle_fastpost(url, message, param);
showCreditPrompt();
}
var vf_tips = \'#在這里快速回復#\';
$(\'vmessage\').value = vf_tips;
$(\'vmessage\').style.color = \'#CDCDCD\';
$(\'vmessage\').onclick = function() {
if($(\'vmessage\').value==vf_tips) {
$(\'vmessage\').value=\'\';
$(\'vmessage\').style.color=\"#000\";
}
}
$(\'vmessage\').onblur = function() {
if(!$(\'vmessage\').value) {
$(\'vmessage\').value=vf_tips;
$(\'vmessage\').style.color=\"#CDCDCD\";
}
}
$(\'vreplysubmit\').onclick = function() {
if($(\'vmessage\').value == vf_tips) {
return false;
}
}

『叄』 Android音視頻開發——H264的基本概念

ffmpeg常用命令

封裝格式

編碼的本質就是壓縮數據

音頻編碼的作用: 將音頻采樣數據( PCM 等)壓縮成音頻碼流,從而降低音頻的數據量。 常用的音頻編碼方式有以下幾種:

H264壓縮技術主要採用了以下幾種方法對視頻數據進行壓縮。包括:

經過壓縮後的幀分為:I幀,P幀和B幀:

除了I/P/B幀外,還有圖像序列GOP。

組成碼流的結構中,包含了以下幾個部分,從大到小依次是:
H264視頻序列,圖像,片組,片,NALU,宏塊,像素

H264功能分為兩層:

1.H264視頻序列包括一系列的NAL單元,每個NAL單元包含一個RBSP。

2.一個原始的H.264由 N個NALU單元組成
3.NALU單元由[StartCode][NALU Header][NALU Payload]三部分組成

5.NAL Header
由三部分組成forbidden_bit(1bit)(禁止位),nal_reference_bit(2bits)(優先順序,,值越大,該NAL越重要),nal_unit_type(5bits)(類型)

nal_unit_type

6.NAL的解碼單元的流程如下

『肆』 android h264硬編碼,得到流寫入文件後不能播放是怎麼回事

自己寫解碼264文件,如果用view顯示,就需要轉成bitmap顯示,或者使用opengl可以顯示yuv數據

如果已經保存成MP4格式的文件,就不需要解碼了,通過mediaplayer就能播

閱讀全文

與androidh264mp4相關的資料

熱點內容
8分之1乘58演算法 瀏覽:168
php提交過濾 瀏覽:354
豪斯曼檢驗stata命令 瀏覽:767
雲看地是什麼APP 瀏覽:883
數學指南pdf 瀏覽:856
phpcurldll64位 瀏覽:976
程序員脫產一年半 瀏覽:849
hr招程序員有什麼條件 瀏覽:587
android開源集合 瀏覽:867
華為雲伺服器登錄密碼和賬號 瀏覽:154
中世紀java程序員 瀏覽:786
什麼開發引擎使用python 瀏覽:176
sh腳本運行命令 瀏覽:317
廣聯達加密鎖怎麼看到期 瀏覽:174
cad軌跡命令 瀏覽:981
同事刷到女程序員自媒體視頻 瀏覽:573
校驗演算法的缺點是什麼 瀏覽:718
PHP商品分類功能實現 瀏覽:332
php取字元串中間 瀏覽:432
程序員經常用工具 瀏覽:837