安卓264和265編碼器回調編碼數據寫入文件的方法

一、寫入文件

1、變量定義

private FileOutputStream m265FileOutputStream = null;
private File m265File = null;
private static final String HEVC_265_FILE_NAME = "output.265"; // 或 .265
private static final String AVC_264_FILE_NAME = "output.264"; // 或 .265

2、初始化

try {// 獲取系統臨時目錄(通常指向應用私有緩存)String tmpDirPath = System.getProperty("java.io.tmpdir"); // 如:/data/data/com.pkg/cacheFile tmpDir = new File(tmpDirPath, "test");if (!tmpDir.exists()) {tmpDir.mkdirs();}m265File = new File(tmpDirPath, isHevc ? HEVC_265_FILE_NAME : AVC_264_FILE_NAME);m265FileOutputStream = new FileOutputStream(m265File);Log.d(TAG, "開始錄制" + (isHevc ? ".265" : ".264") + " 文件: " + m265File.getAbsolutePath());} catch (IOException e) {Log.e(TAG, "無法創建" + (isHevc ? ".265" : ".264") + " 輸出文件", e);}

3、編碼數據寫入.265文件或者.264文件

編碼數據一般的onOutputBufferAvailable方法中處理

private MediaCodec.Callback mCallback = new MediaCodec.Callback() {@Overridepublic void onOutputBufferAvailable(MediaCodec mediaCodec, int id, MediaCodec.BufferInfo bufferInfo) {.......if (frameLength > 0 && m265FileOutputStream != null) {try {m265FileOutputStream.write(h264Buff, 0, frameLength);Log.d(TAG, "寫入" + (isHevc ? ".265" : ".264") + "文件成功,長度:" + frameLength + " 時間戳:" + alTimestamp);} catch (IOException e) {Log.e(TAG, "寫入" + (isHevc ? ".265" : ".264") + " 文件失敗", e);}}}
}

4、關閉流

if (mMediaCodec != null) {mMediaCodec.stop();if (m265FileOutputStream != null) {try {m265FileOutputStream.close();Log.d(TAG,  (isHevc ? ".265" : ".264") + " 文件保存完成: " + m265File.getAbsolutePath());} catch (IOException e) {Log.e(TAG, "關閉"+(isHevc ? ".265" : ".264") +"文件失敗", e);} finally {m265FileOutputStream = null;}}mMediaCodec.release();mMediaCodec = null;}

二、ffplay分析編碼數據

1、將文件導出到本地

1、確保已連接到手機,導出文件
265的

adb exec-out run-as com.qukan.qklive cat cache/output.265 > E:/output.265

264的

adb exec-out run-as com.qukan.qklive cat cache/output.264 > E:/output.264

2、ffplay分析編碼數據

能看到畫面且無報錯就是正常的編碼數據
265的

ffplay -f hevc -i E:/output.265

264的

ffplay -f h264 -i E:/output.264

示例:

3、查看編碼信息

可以看到分辨率等信息

ffprobe -show_streams -show_format E:/output.265

三、后續待拓展

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/94363.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/94363.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/94363.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【基礎完全搜索】USACO Bronze 2019 January - 猜動物Guess the Animal

題目描述 當奶牛貝茜和她的朋友艾爾西玩膩了常見的貝殼游戲后,她們喜歡玩另一個經典游戲"猜動物"。 游戲開始時,貝茜會在心中選定一種動物(大多數時候她都會選奶牛,這讓游戲變得相當無聊,不過偶爾貝茜也會…

Spring IoC容器與Bean管理

代碼結構spring01/ ├── pom.xml ├── spring01.iml └── src/├── main/│ ├── java/│ │ └── com/│ │ └── demo/│ │ ├── bean/│ │ │ ├── Demo.java│ │ │ ├── Emp1.java│ │ …

【QT】概述

個人主頁:Guiat 歸屬專欄:QT 文章目錄1. Qt基礎入門1.1 什么是Qt1.2 Qt的歷史與發展1.3 Qt的核心特性2. Qt架構深度解析3. Qt開發環境搭建4. Qt應用開發實戰4.1 項目結構4.2 設計用戶界面4.3 實現功能邏輯4.4 數據持久化4.5 美化界面4.6 添加動畫效果5. …

直播帶貨系統源碼開發:山東布谷科技9年海內外電商直播研發技術深耕之路

在數字化浪潮的席卷下,電商行業歷經多次變革,直播帶貨作為其中的新興力量,已成為推動商品銷售與品牌傳播的關鍵引擎。山東布谷科技,憑借其在直播帶貨系統開發領域長達9年的深厚積淀,為電商直播帶貨系統源碼定制開發提供…

20250731解決RK3588的AIOT參考設計刷機之后可以啟動但是斷電進MASKROM模式

20250731解決RK3588的AIOT參考設計刷機之后可以啟動但是斷電進MASKROM模式 2025/7/31 20:42緣起:編譯RK3588原廠的Android14、buildroot(linux-6.1)的EVB7V11之后刷AIOT,可以啟動。 但是通過命令關機之后:按POWER按鍵無法啟動。 Android14 re…

永洪科技華西地區客戶交流活動成功舉辦!以AI之力錨定增長確定性

在全球經濟進入“慢周期”的背景下,企業對確定性增長工具的渴求達到前所未有的高度。近日,永洪科技在成都成功舉辦華西地區客戶交流會,以“擁抱AI邁進數據智能時代”為主題,匯聚金融、制造、能源、消費品等領域的百余家頭部企業代…

Electron 作品【AI聊天】桌面應用 —— 系列教程(含開源地址)

效果預覽 開源地址 https://gitee.com/sunshine39/electron-vue3-AIchat 系列教程 Electron Forge【實戰】桌面應用 —— AI聊天(上)Electron Forge【實戰】桌面應用 —— AI聊天(中)Electron Forge【實戰】桌面應用 —— AI聊天&…

JS--獲取事件的子元素與父元素

原文網址:JS--獲取事件的子元素與父元素-CSDN博客 簡介 本文介紹JS如何獲取事件的子元素與父元素。 情景描述 事件監聽寫在父元素上,我點擊子元素時觸發了事件,怎樣通過事件獲取子元素和這個父元素? 點擊子元素時&#xff0c…

PPT自動化 python-pptx - 11 : 備注頁 (Notes Slides)

在 PowerPoint 演示文稿的自動化處理中,備注頁的操作常常被忽略,但實際上它在演講者輔助、內容管理等場景中有著重要作用。本文將結合 python-pptx 庫,詳細講解 PowerPoint 備注頁的概念、與備注母版的關系,以及如何通過代碼實現備…

【Python小工具】圖片轉PDF

文章目錄0 前言1 主要功能的實現2 拖拽運行的實現3 檢查細節【未成功實現】4 總結0 前言 不知道大家是否遇到過這種情況,提交材料時需要將多個圖片材料整合到一個PDF中上傳。這個時候我們需要找一個工具,其作用為接收我們給它的若干張圖片,并…

零售消費行業研究系列報告

消費者洞察報告:即時零售美妝用戶消費行為躍遷 食品飲料行業深度:新消費研究之三:即時零售應需而生,酒類品牌或迎新機遇 2025年上半年連鎖零售門店發展藍皮書 商貿零售行業新消費細分賽道投資機會梳理:新消費勢能向…

Uniapp 驗證 HTTPS 協議

Uniapp 中 驗證 HTTPS協議的是示例代碼<template><view class"content"><view style"margin-top: 20px;"><text>sslVerify : {{text}}</text></view><view><button click"testSslVerify">sslVe…

可視化圖解算法57:字符串的排列

牛客網 面試筆試 TOP101 | LeetCode 3437. 全排列III 1. 題目 描述 輸入一個長度為 n 字符串&#xff0c;打印出該字符串中字符的所有排列&#xff0c;你可以以任意順序返回這個字符串數組。 例如輸入字符串ABC,則輸出由字符A,B,C所能排列出來的所有字符串ABC,ACB,BA…

Go語言常量

目錄 前言&#xff1a; 1、const聲明常量 2、一次聲明多個常量 前言&#xff1a; 這次來學習一下Go語言中的常量&#xff0c;在上一期中我學習了Go語言中的變量&#xff0c;如果有興趣可以看看我往期的文章&#xff0c;或者點擊Go語言聲明變量。 相對于變量&#xff0c;常量的…

SelectDB:新一代實時數倉的核心引擎與應用實戰

> 數據價值隨時間流逝而衰減,而SelectDB讓企業在數據洪流中抓住了每一秒的價值 在數字化轉型浪潮中,企業數據呈現**爆發式增長**,傳統數據倉庫在實時性、查詢效率和成本控制方面遭遇嚴峻挑戰。中通快遞的案例極具代表性——其原有架構處理分鐘級查詢時,資源消耗巨大,…

華為OD機考2025C卷 - 分配土地 (Java Python JS C++ C )

題目描述 從前有個村莊,村民們喜歡在各種田地上插上小旗子,旗子上標識了各種不同的數字。 某天集體村民決定將覆蓋相同數字的最小矩陣形的土地分配給村里做出巨大貢獻的村民,請問此次分配土地,做出貢獻的村民種最大會分配多大面積? 輸入描述 第一行輸入 m 和 n, m 代…

NetBSD notes

文章目錄the introduce to NetBSDreferencesthe introduce to NetBSD NetBSD is a Unix-like Open Source operating system, which can run in many hardware platforms , and is advantageous to production and research.> boot hd0a:netbsd is used for booting NetBSD…

【數據遷移】Windows11 下將 Ubuntu 從 C 盤遷移到 D 盤

由于個人情況存在差異&#xff0c;請在參考本文進行數據遷移前后多方比對確認&#xff0c;確保無誤后再謹慎操作&#xff01; 【2025-08-03補充】運行過程中發現實際上 docker 的遷移工作可能更為復雜&#xff01;強烈不推薦本文的 docker 遷移方法&#xff08;本文已翻車&…

Java面試(常考基礎知識點)總結

1. 面向對象三大特性相關 1.1 三大特性 封裝&#xff1a;對抽象的事物抽象化成一個對象&#xff0c;并對其對象的屬性私有化&#xff0c;同時提供一些能被外界訪問屬性的方法&#xff1b;繼承&#xff1a;子類擴展新的數據域或功能&#xff0c;并復用父類的屬性與功能&#x…

[Shell編程] 零基礎入門 Shell 編程:從概念到第一個腳本

目錄 一、什么是 Shell&#xff1f;—— 連接用戶與系統的 "橋梁" 二、常見的 Shell 類型 —— 不同系統的 "操作面板" 三、Shell 能做什么&#xff1f;—— 不止于 "輸入命令" 1??命令行操作&#xff1a;這是最基礎的功能。通過ls&#x…