muxe數字貨幣
① android 如何去掉mediamuxer錄屏的狀態欄圖標標識
搜一下:android
如何去掉mediamuxer錄屏的狀態欄圖標標識
② android 如何去掉mediamuxer錄屏的狀態欄圖標標識
可以使用xposed框架還有重力工具箱那裡邊有很多關於調整系統的東西,不過這個框架他上來會給你一個小心的警告有一些改版的系統,例如小米系統,阿里雲系統之類的,不是谷歌原生的系統拾起來要有一些麻煩的地方具體的框架安裝方式可以下載安裝器,直接搜xposed安裝器最好再安裝一個xposed市場因為這個框架所基於的模塊全都是全局英文的,在那個市場里邊可以幫你,相當於一個翻譯的工作,然後呢這個框架,如果你安裝完畢了,以後千萬不要把安裝器給卸掉,如果卸掉安裝器,就可能導致這個框架相當於就崩潰了所有依賴於這個框架的模塊也將無法使用,包括重力工具箱不過這個框架需要root許可權
③ android中mediamuxer和mediacodec的區別
Android中MediaMuxer和MediaCodec用例
在Android的多媒體類中,MediaMuxer和MediaCodec算是比較年輕的,它們是JB 4.1和JB 4.3才引入的。前者用於將音頻和視頻進行混合生成多媒體文件。缺點是目前只能支持一個audio track和一個video track,而且僅支持mp4輸出。不過既然是新生事物,相信之後的版本應該會有大的改進。MediaCodec用於將音視頻進行壓縮編碼,它有個比較牛X的地方是可以對Surface內容進行編碼,如KK 4.4中屏幕錄像功能就是用它實現的。
注意它們和其它一些多媒體相關類的關系和區別:MediaExtractor用於音視頻分路,和MediaMuxer正好是反過程。MediaFormat用於描述多媒體數據的格式。MediaRecorder用於錄像+壓縮編碼,生成編碼好的文件如mp4, 3gpp,視頻主要是用於錄制Camera preview。MediaPlayer用於播放壓縮編碼後的音視頻文件。AudioRecord用於錄制PCM數據。AudioTrack用於播放PCM數據。PCM即原始音頻采樣數據,可以用如vlc播放器播放。當然了,通道采樣率之類的要自己設,因為原始采樣數據是沒有文件頭的,如:
vlc --demux=rawaud --rawaud-channels 2 --rawaud-samplerate 44100 audio.pcm
回到MediaMuxer和MediaCodec這兩個類,它們的參考文檔見http://developer.android.com/reference/android/media/MediaMuxer.html和http://developer.android.com/reference/android/media/MediaCodec.html,里邊有使用的框架。這個組合可以實現很多功能,比如音視頻文件的編輯(結合MediaExtractor),用OpenGL繪制Surface並生成mp4文件,屏幕錄像以及類似Camera app里的錄像功能(雖然這個用MediaRecorder更合適)等。
這里以一個很無聊的功能為例,就是在一個Surface上畫圖編碼生成視頻,同時用MIC錄音編碼生成音頻,然後將音視頻混合生成mp4文件。程序本身沒什麼用,但是示例了MediaMuxer和MediaCodec的基本用法。本程序主要是基於兩個測試程序:一個是Grafika中的SoftInputSurfaceActivity和HWEncoderExperiments。它們一個是生成視頻,一個生成音頻,這里把它們結合一下,同時生成音頻和視頻。基本框架和流程如下:
首先是錄音線程,主要參考HWEncoderExperiments。通過AudioRecord類接收來自麥克風的采樣數據,然後丟給Encoder准備編碼:
AudioRecord audio_recorder;
audio_recorder = new AudioRecord(MediaRecorder.AudioSource.MIC,
SAMPLE_RATE, CHANNEL_CONFIG, AUDIO_FORMAT, buffer_size);
// ...
audio_recorder.startRecording();
while (is_recording) {
byte[] this_buffer = new byte[frame_buffer_size];
read_result = audio_recorder.read(this_buffer, 0, frame_buffer_size); // read audio raw data
// …
presentationTimeStamp = System.nanoTime() / 1000;
audioEncoder.offerAudioEncoder(this_buffer.clone(), presentationTimeStamp); // feed to audio encoder
}
這里也可以設置AudioRecord的回調(通過())來觸發音頻數據的讀取。offerAudioEncoder()里主要是把audio采樣數據送入音頻MediaCodec的InputBuffer進行編碼:
ByteBuffer[] inputBuffers = mAudioEncoder.getInputBuffers();
int inputBufferIndex = mAudioEncoder.dequeueInputBuffer(-1);
if (inputBufferIndex >= 0) {
ByteBuffer inputBuffer = inputBuffers[inputBufferIndex];
inputBuffer.clear();
inputBuffer.put(this_buffer);
...
mAudioEncoder.queueInputBuffer(inputBufferIndex, 0, this_buffer.length, presentationTimeStamp, 0);
}
下面,參考Grafika-SoftInputSurfaceActivity,並加入音頻處理。主循環大體分四部分:
try {
// Part 1
prepareEncoder(outputFile);
...
// Part 2
for (int i = 0; i < NUM_FRAMES; i++) {
generateFrame(i);
drainVideoEncoder(false);
drainAudioEncoder(false);
}
// Part 3
...
drainVideoEncoder(true);
drainAudioEncoder(true);
} catch (IOException ioe) {
throw new RuntimeException(ioe);
} finally {
// Part 4
releaseEncoder();
}
第1部分是准備工作,除了video的MediaCodec,這里還初始化了audio的MediaCodec:
MediaFormat audioFormat = new MediaFormat();
audioFormat.setInteger(MediaFormat.KEY_SAMPLE_RATE, 44100);
audioFormat.setInteger(MediaFormat.KEY_CHANNEL_COUNT, 1);
...
mAudioEncoder = MediaCodec.createEncoderByType(AUDIO_MIME_TYPE);
mAudioEncoder.configure(audioFormat, null, null, MediaCodec.CONFIGURE_FLAG_ENCODE);
mAudioEncoder.start();
第2部分進入主循環,app在Surface上直接繪圖,由於這個Surface是從MediaCodec中用createInputSurface()申請來的,所以畫完後不用顯式用queueInputBuffer()交給Encoder。drainVideoEncoder()和drainAudioEncoder()分別將編碼好的音視頻從buffer中拿出來(通過dequeueOutputBuffer()),然後交由MediaMuxer進行混合(通過writeSampleData())。注意音視頻通過PTS(Presentation time stamp,決定了某一幀的音視頻數據何時顯示或播放)來同步,音頻的time stamp需在AudioRecord從MIC採集到數據時獲取並放到相應的bufferInfo中,視頻由於是在Surface上畫,因此直接用dequeueOutputBuffer()出來的bufferInfo中的就行,最後將編碼好的數據送去MediaMuxer進行多路混合。
注意這里Muxer要等把audio track和video track都加入了再開始。MediaCodec在一開始調用dequeueOutputBuffer()時會返回一次INFO_OUTPUT_FORMAT_CHANGED消息。我們只需在這里獲取該MediaCodec的format,並注冊到MediaMuxer里。接著判斷當前audio track和video track是否都已就緒,如果是的話就啟動Muxer。
總結來說,drainVideoEncoder()的主邏輯大致如下,drainAudioEncoder也是類似的,只是把video的MediaCodec換成audio的MediaCodec即可。
while(true) {
int encoderStatus = mVideoEncoder.dequeueOutputBuffer(mBufferInfo, TIMEOUT_USEC);
if (encoderStatus == MediaCodec.INFO_TRY_AGAIN_LATER) {
...
} else if (encoderStatus == MediaCodec.INFO_OUTPUT_BUFFERS_CHANGED) {
encoderOutputBuffers = mVideoEncoder.getOutputBuffers();
} else if (encoderStatus == MediaCodec.INFO_OUTPUT_FORMAT_CHANGED) {
MediaFormat newFormat = mAudioEncoder.getOutputFormat();
mAudioTrackIndex = mMuxer.addTrack(newFormat);
mNumTracksAdded++;
if (mNumTracksAdded == TOTAL_NUM_TRACKS) {
mMuxer.start();
}
} else if (encoderStatus < 0) {
...
} else {
ByteBuffer encodedData = encoderOutputBuffers[encoderStatus];
...
if (mBufferInfo.size != 0) {
mMuxer.writeSampleData(mVideoTrackIndex, encodedData, mBufferInfo);
}
mVideoEncoder.releaseOutputBuffer(encoderStatus, false);
if ((mBufferInfo.flags & MediaCodec.BUFFER_FLAG_END_OF_STREAM) != 0) {
break;
}
}
}
第3部分是結束錄制,發送EOS信息,這樣在drainVideoEncoder()和drainAudioEncoder中就可以根據EOS退出內循環。第4部分為清理工作。把audio和video的MediaCodec,MediaCodec用的Surface及MediaMuxer對象釋放。
最後幾點注意:
1. 在AndroidManifest.xml里加上錄音許可權,否則創建AudioRecord對象時鐵定失敗:
<uses-permission android:name="android.permission.RECORD_AUDIO"/>
2. 音視頻通過PTS同步,兩個的單位要一致。
3. MediaMuxer的使用要按照Constructor -> addTrack -> start -> writeSampleData -> stop 的順序。如果既有音頻又有視頻,在stop前兩個都要writeSampleData()過。
Code references:
Grafika: https://github.com/google/grafika
Bigflake: http://bigflake.com/mediacodec/
HWEncoderExperiments:https://github.com/OnlyInAmerica/HWEncoderExperiments/tree/audioonly/HWEncoderExperiments/src/main/java/net/openwatch/hwencoderexperiments
Android test:http://androidxref.com/4.4.2_r2/xref/cts/tests/tests/media/src/android/media/cts/
http://androidxref.com/4.4.2_r2/xref/pdk/apps/TestingCamera2/src/com/android/testingcamera2/CameraRecordingStream.java
④ mkv自動混流錯誤 mp4卻能大神們知道什麼原因嗎
在MeGUI中,打開tools菜單下的Muxer子菜單,點擊MP4Muxer。在MP4Muxer窗口中的VideoInput指向H264文件,Audio指向ACC文件,Output中指定輸出MP4文件名,接著點下面的Queue按鈕新建任務。最後回到MeGUI中的Queue窗口點Start完成任務,不到一分鍾時間。MP4Muxer中也可以添加多音軌和字幕。另外幾個Muxer也可以合成MKV、AVI、M2TS。這一過程的分離與合成都是無損的。
⑤ 終極解碼是什麼東西
「終極解碼」(英文名為FinalCodecs)原名"My MPC sdxy DIY版", 為My MPC DIY系列的後續分支版本, 是一款全能型、高度集成的解碼包,自帶四種流行播放器(MPlayer/KMPlayer/PotPlayer/WMPlayer),並對WMP提供良好支持,可在簡、繁、英3種語言平台下實現各種流行視頻音頻的完美回放及編碼功能。推薦的安裝環境是Windows XP(含SP1、SP2、SP3)Windows Vista、Windows 7、DirectX 9.0C、Windows Media Player 9/10/11,但不支持Windows9x。
終極解碼是一款全能型、高度集成的解碼包,自帶三種流行播放器並對WMP提供良好支持,可在簡、繁、英3種語言平台下實現各種流行視頻音頻的完美回放及編碼功能。推薦安裝環境的是Windows XP或Windows 7、DirectX 9.0C以上,不支持Windows9x;如需在Windows7/Vista系統下使用,請在安裝過程中注意關閉系統的UAC功能(用戶賬戶控制)。若與Realplayer同時使用,請在安裝時不要選擇 Real解碼器,QuickTime類似。
⑥ TS文件用tsMuxeR分離後用MKVtoolnix封裝成MKV,幀數由29.97變為了25,原因何在怎麼解決
TS文件不就是MPEG格式的視頻嗎?如果編碼和格式都支持的話,改成MPEG應該沒問題吧? 我是說直接改後綴名。
⑦ socket通信報錯
伺服器已經關閉了,因此這個時候客戶端再要向伺服器端索取數據就會報錯。
⑧ DivX-AVI和AVC-MKV兩種格式有什麼區別
MKV不是一種壓縮格式,而是Matroska的一種媒體文件,Matroska是一種新的多媒體封裝格式,也稱多媒體容器 (Multimedia Container)。它可將多種不同編碼的視頻及16條以上不同格式的音頻和不同語言的字幕流封裝到一個Matroska Media文件當中。MKV最大的特點就是能容納多種不同類型編碼的視頻、音頻及字幕流。 MKV標志mkv不同於DivX、XviD等視頻編碼格式,也不同於MP3、Ogg等音頻編碼格式。MKV只是為這些音、視頻提供外殼的「組合」和「封裝」格式。換句話說就是一種容器格式,常見的 AVl、VOB、MPEG、RM 格式其實也都屬於這種類型。但它們要麼結構陳舊,要麼不夠開放,這才促成了MKV這類新型多媒體封裝格式的誕生。
Matroska媒體定義了三種類型的文件:MKV是視頻文件,它裡面可能還包含有音頻和字幕;MKA是單一的音頻文件,但可能有多條及多種類型的音軌;MKS是字幕文件。這三種文件以MKV最為常見。
MKV最大的特點就是能容納多種不同類型編碼的視頻、音頻及字幕流,甚至連非常封閉的 RealMedia 及 QuickTime 這類流媒體也被它囊括進去,可以說是對傳統媒體格式的一次大顛覆,幾乎變成了一個萬能的媒體容器。
播放MKV並不需要專用的播放器,任何基於DirectShow的播放器都能播放它,如常見的 Media Player Classic、BSplayer、ZoomPlayer 播放器等,甚至包括Windows Media player,僅需安裝相應 Matroska 解碼分離器插件即可。推薦下載HappyShow這個解碼器集成軟體。Matroska最大的特點就是能容納多種不同類型編碼的視頻、音頻及字幕流,甚至囊括了RealMedia及QuickTime這類流媒體,可以說是對傳統媒體封裝格式的一次大顛覆!它現在幾乎變成了一個萬能的媒體容器,目前它所能封裝的視頻、音頻、字幕類型包括:
AVI文件,包括採用DivX、XviD、3ivX、VP6視頻編碼,及PCM、MP3、AC3等音頻編碼的AVI
RealMedia文件,包括RealVideo和RealAudio
QuickTime的MOV及MP4視頻
Windows Media文件,包括ASF、WMV格式
MPEG文件,包括MPEG-1/2的M1V、M2V
Ogg/OGM 文件,包括Ogg Vorbis、OGM、FLAC文件
Matroska Media文件,包括MKV、MKA、MKS文件
WAV、AC3、DTS、MP2、MP3、AAC/MP4音頻
SRT、USF及SSA/ASS文本字幕
SubVob圖形字幕,後綴為IDX、SUB
BMP圖形字幕,以一組BMP圖片及時間碼構成的字幕 。
此外,Matroska文件中還可包括章節、標簽(Tag)等信息,甚至還可加上附件!需要指出的Matroska所謂的封裝AVI、RM、MOV等媒體,但它並不是簡單將它們不加改變的合並到Matroska中,而是將它們的音視頻流進行了重新組織。
Matroska加入AVI所沒有的EDC錯誤檢測代碼,這意味著即使是沒有下載完畢的MKV文件也可以順利回放,這些對AVI來說完全是不可想像的。雖然Matroska加入了錯誤檢測代碼,但由於採用了新的更高效的組織結構,用MKV封裝後的電影還是比AVI源文件要小了約1%,這就是說即使加上了多個字幕,MKV文件的體積也不可能比AVI文件大。
Matroska支持可變幀率(VFR,即Variable Frame Rate)的視頻編碼,這種VFR視頻的幀率是不固定的,它可在動態畫面中使用較大的幀率,而在靜態畫面中使用較小的幀率,這樣可以有效的減少視頻文件的體積,並改善動態畫面的質量。它的作用比目前廣泛使用的VBR(可變碼率)更為明顯。
看看目前比較流行的多媒體容器類型,例如AVI,它可以容納多種類型的視頻編碼和音頻編碼,像VP6、DivX、XviD等視頻編碼和PCM、MP3、AC3等音頻編碼; VOB則是另一種特點更為鮮明的媒體容器,它可容納MPEG-2視頻流、多個AC3、 DTS、THX、PCM音頻流、多個不同語言的圖形字幕流。播放Matroska這類格式並不需要專用的播放器,任何DirectShow的播放器都可以播放MKV、OGM、MP4文件,如常見的Media player Classic、BSplayer、ZoomPlayer播放器等,甚至包括 Windows Media player。
現有的播放器要播放MKV格式僅需安裝相應的分離器插件即可。
首先請到「擴展閱讀」地址下載MKV官方的播放插件包,裡麵包含了Matroska Splitter、Matroska Muxer、Vsfilter等播放MKV必須的插件,安裝好以後就能使用WMP(Windows Media Player)等播放MKV文件了,安裝事務所製作的MKV播放包也能起到同樣的作用。其他必備插件,比如FFdshow等等,大家已經很熟悉了,我就不再提了。
播放軟體方面,雖然用WMP也能播放(正確安裝了插件),但是我推薦大家使用Gabest製作的Media Player Classic。它體積小,佔用系統資源少,而且功能強大,界面和大家常用的WMP6.4幾乎一樣,所以使用很方便。而且WMP不支持MKV的導航分段功能,而為了方便大家觀看,很多片子都分了幾個段落,可是直接跳轉到OP、ED或正文部分,所以我推薦大家使用這個播放器。使用MPC打開後,可以看到有個「導航」按鈕(英文版是Navigation),這個裡面就包含了跳轉段落功能,默認的快捷鍵是PageUp(跳至前一段)和PageDown(跳至後一段)。
上面那個包里帶的Vsfilter,其實就是Vobsub2.29中的一部分,使用起來和原來差不多。有些MKV里封裝的是srt字幕(有時你發現字幕很小,那很可能就是srt字幕),這時你就可以像平時外掛srt觀看電影一樣,自己修改字幕的字體,顏色,大小和位置等等了,和原來的方法一樣。但是有一點要注意,請把Pre-buffer subpictures關掉(如圖所示),它可能造成死機。