国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

HarmonyOS學(xué)習(xí)路之開發(fā)篇—多媒體開發(fā)(相機(jī)開發(fā) 一)

這篇具有很好參考價(jià)值的文章主要介紹了HarmonyOS學(xué)習(xí)路之開發(fā)篇—多媒體開發(fā)(相機(jī)開發(fā) 一)。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

HarmonyOS相機(jī)模塊支持相機(jī)業(yè)務(wù)的開發(fā),開發(fā)者可以通過已開放的接口實(shí)現(xiàn)相機(jī)硬件的訪問、操作和新功能開發(fā),最常見的操作如:預(yù)覽、拍照、連拍和錄像等。

基本概念

  • 相機(jī)靜態(tài)能力

    用于描述相機(jī)的固有能力的一系列參數(shù),比如朝向、支持的分辨率等信息。

  • 物理相機(jī)

    物理相機(jī)就是獨(dú)立的實(shí)體攝像頭設(shè)備。物理相機(jī)ID是用于標(biāo)志每個(gè)物理攝像頭的唯一字串。

  • 邏輯相機(jī)

    邏輯相機(jī)是多個(gè)物理相機(jī)組合出來的抽象設(shè)備,邏輯相機(jī)通過同時(shí)控制多個(gè)物理相機(jī)設(shè)備來完成相機(jī)某些功能,如大光圈、變焦等功能。邏輯攝像機(jī)ID是一個(gè)唯一的字符串,標(biāo)識(shí)多個(gè)物理攝像機(jī)的抽象能力。

  • 幀捕獲

    相機(jī)啟動(dòng)后對(duì)幀的捕獲動(dòng)作統(tǒng)稱為幀捕獲。主要包含單幀捕獲、多幀捕獲、循環(huán)幀捕獲。

  • 單幀捕獲

    指的是相機(jī)啟動(dòng)后,在幀數(shù)據(jù)流中捕獲一幀數(shù)據(jù),常用于普通拍照。

  • 多幀捕獲

    指的是相機(jī)啟動(dòng)后,在幀數(shù)據(jù)流中連續(xù)捕獲多幀數(shù)據(jù),常用于連拍。

  • 循環(huán)幀捕獲

    指的是相機(jī)啟動(dòng)后,在幀數(shù)據(jù)流中一直捕獲幀數(shù)據(jù),常用于預(yù)覽和錄像。

約束與限制

  • 在同一時(shí)刻只能有一個(gè)相機(jī)應(yīng)用在運(yùn)行中。
  • 相機(jī)模塊內(nèi)部有狀態(tài)控制,開發(fā)者必須按照指導(dǎo)文檔中的流程進(jìn)行接口的順序調(diào)用,否則可能會(huì)出現(xiàn)調(diào)用失敗等問題。
  • 為了開發(fā)的相機(jī)應(yīng)用擁有更好的兼容性,在創(chuàng)建相機(jī)對(duì)象或者參數(shù)相關(guān)設(shè)置前請(qǐng)務(wù)必進(jìn)行能力查詢。

相機(jī)開發(fā)流程

相機(jī)模塊主要工作是給相機(jī)應(yīng)用開發(fā)者提供基本的相機(jī)API接口,用于使用相機(jī)系統(tǒng)的功能,進(jìn)行相機(jī)硬件的訪問、操作和新功能開發(fā)。相機(jī)的開發(fā)流程如圖所示:

HarmonyOS學(xué)習(xí)路之開發(fā)篇—多媒體開發(fā)(相機(jī)開發(fā) 一)

接口說明

相機(jī)模塊為相機(jī)應(yīng)用開發(fā)者提供了3個(gè)包的內(nèi)容,包括方法、枚舉、以及常量/變量,方便開發(fā)者更容易地實(shí)現(xiàn)相機(jī)功能。詳情請(qǐng)查閱對(duì)應(yīng)開發(fā)場(chǎng)景。

包名

功能

ohos.media.camera.CameraKit

相機(jī)功能入口類。獲取當(dāng)前支持的相機(jī)列表及其靜態(tài)能力信息,創(chuàng)建相機(jī)對(duì)象。

ohos.media.camera.device

相機(jī)設(shè)備操作類。提供相機(jī)能力查詢、相機(jī)配置、相機(jī)幀捕獲、相機(jī)狀態(tài)回調(diào)等功能。

ohos.media.camera.params

相機(jī)參數(shù)類。提供相機(jī)屬性、參數(shù)和操作結(jié)果的定義。

相機(jī)權(quán)限申請(qǐng)

在使用相機(jī)之前,需要申請(qǐng)相機(jī)的相關(guān)權(quán)限,保證應(yīng)用擁有相機(jī)硬件及其他功能權(quán)限,相機(jī)涉及權(quán)限如下表。

權(quán)限名稱

權(quán)限屬性值

是否必選

相機(jī)權(quán)限

ohos.permission.CAMERA

必選

錄音權(quán)限

ohos.permission.MICROPHONE

可選(需要錄像時(shí)申請(qǐng))

存儲(chǔ)權(quán)限

ohos.permission.WRITE_MEDIA

可選(需要保存圖像及視頻到設(shè)備的外部存儲(chǔ)時(shí)申請(qǐng))

位置權(quán)限

ohos.permission.MEDIA_LOCATION

可選(需要保存圖像及視頻位置信息時(shí)申請(qǐng))

相機(jī)設(shè)備創(chuàng)建

CameraKit類是相機(jī)的入口API類,用于獲取相機(jī)設(shè)備特性、打開相機(jī),其接口如下表。

接口名

描述

createCamera?(String cameraId, CameraStateCallback callback, EventHandler handler)

創(chuàng)建相機(jī)對(duì)象。

getCameraAbility?(String cameraId)

獲取指定邏輯相機(jī)或物理相機(jī)的靜態(tài)能力。

getCameraIds?()

獲取當(dāng)前邏輯相機(jī)列表。

getCameraInfo?(String cameraId)

獲取指定邏輯相機(jī)的信息。

getInstance?(Context context)

獲取CameraKit實(shí)例。

registerCameraDeviceCallback?(CameraDeviceCallback callback, EventHandler handler)

注冊(cè)相機(jī)使用狀態(tài)回調(diào)。

unregisterCameraDeviceCallback?(CameraDeviceCallback callback)

注銷相機(jī)使用狀態(tài)回調(diào)。

在實(shí)現(xiàn)一個(gè)相機(jī)應(yīng)用之前必須先創(chuàng)建一個(gè)獨(dú)立的相機(jī)設(shè)備,然后才能繼續(xù)相機(jī)的其他操作。相機(jī)設(shè)備創(chuàng)建的建議步驟如下:

1. 通過CameraKit.getInstance(Context context)方法獲取唯一的CameraKit對(duì)象

private void openCamera(){
    // 獲取CameraKit對(duì)象
    CameraKit cameraKit = CameraKit.getInstance(getApplicationContext());
    if (cameraKit == null) {
        // 處理cameraKit獲取失敗的情況 
    }
}

如果此步驟操作失敗,相機(jī)可能被占用或無法使用。如果被占用,必須等到相機(jī)釋放后才能重新獲取CameraKit對(duì)象。

2. 通過getCameraIds()方法,獲取當(dāng)前使用的設(shè)備支持的邏輯相機(jī)列表。邏輯相機(jī)列表中存儲(chǔ)了當(dāng)前設(shè)備擁有的所有邏輯相機(jī)ID,如果列表不為空,則列表中的每個(gè)ID都支持獨(dú)立創(chuàng)建相機(jī)對(duì)象;否則,說明正在使用的設(shè)備無可用的相機(jī),不能繼續(xù)后續(xù)的操作。

try {
    // 獲取當(dāng)前設(shè)備的邏輯相機(jī)列表
    String[] cameraIds = cameraKit.getCameraIds();
    if (cameraIds.length <= 0) {
        HiLog.error(LABEL, "cameraIds size is 0");
    }
} catch (IllegalStateException e) {
    // 處理異常
}

還可以繼續(xù)查詢指定相機(jī)ID的靜態(tài)信息:

調(diào)用getDeviceLinkType?(String physicalId)方法獲取物理相機(jī)連接方式;

調(diào)用getCameraInfo(String cameraId)方法查詢相機(jī)硬件朝向等信息;

調(diào)用getCameraAbility(String cameraId)方法查詢相機(jī)能力信息(比如支持的分辨率列表等)。

CameraInfo的主要接口

接口名

描述

getDeviceLinkType?(String physicalId)

獲取物理相機(jī)連接方式。

getFacingType?()

獲取相機(jī)朝向信息。

getLogicalId?()

獲取邏輯相機(jī)ID。

getPhysicalIdList?()

獲取對(duì)應(yīng)的物理相機(jī)ID列表。

CameraAbility的主要接口

接口名

描述

getSupportedSizes?(int format)

根據(jù)格式查詢輸出圖像的分辨率列表。

getSupportedSizes?(Class<T> clazz)

根據(jù)Class類型查詢分辨率列表。

getParameterRange?(ParameterKey.Key<T> parameter)

獲取指定參數(shù)能夠設(shè)置的值范圍。

getPropertyValue?(PropertyKey.Key<T> property)

獲取指定屬性對(duì)應(yīng)的值。

getSupportedAeMode?()

獲取當(dāng)前相機(jī)支持的自動(dòng)曝光模式。

getSupportedAfMode?()

獲取當(dāng)前相機(jī)支持的自動(dòng)對(duì)焦模式。

getSupportedFaceDetection?()

獲取相機(jī)支持的人臉檢測(cè)類型范圍。

getSupportedFlashMode?()

當(dāng)前相機(jī)支持的閃光燈取值范圍。

getSupportedParameters?()

當(dāng)前相機(jī)支持的參數(shù)設(shè)置。

getSupportedProperties?()

獲取當(dāng)前相機(jī)的屬性列表。

getSupportedResults?()

獲取當(dāng)前相機(jī)支持的參數(shù)設(shè)置可返回的結(jié)果列表。

getSupportedZoom?()

獲取相機(jī)支持的變焦范圍。

3.?通過createCamera(String cameraId, CameraStateCallback callback, EventHandler handler)方法,創(chuàng)建相機(jī)對(duì)象,此步驟執(zhí)行成功意味著相機(jī)系統(tǒng)的硬件已經(jīng)完成了上電。

// 前置相機(jī)類型
int frontCamera = CameraInfo.FacingType.CAMERA_FACING_FRONT;
// 后置相機(jī)類型
int backCamera = CameraInfo.FacingType.CAMERA_FACING_BACK;
// 其他相機(jī)類型
int otherCamera = CameraInfo.FacingType.CAMERA_FACING_OTHERS;

// 選擇想要?jiǎng)?chuàng)建的相機(jī)類型,如果不存在該類型相機(jī),則返回false
boolean isCameraCreated = openCameraByFacingType(frontCamera);
// 根據(jù)類型創(chuàng)建相機(jī)的方法
private boolean openCameraByFacingType(int facingType) {
    CameraKit cameraKit = CameraKit.getInstance(getApplicationContext());
    for(String cameraId : cameraKit.getCameraIds()) {
        CameraInfo cameraInfo = cameraKit.getCameraInfo(cameraId);
        if(facingType == cameraInfo.getFacingType()) {
            cameraKit.createCamera(cameraId, cameraStateCallback, eventHandler);
            return true;
        }
    }
    return false;
}

參數(shù)cameraId可以是上一步獲取的邏輯相機(jī)列表中的任何一個(gè)相機(jī)ID。

第二和第三個(gè)參數(shù)負(fù)責(zé)相機(jī)創(chuàng)建和相機(jī)運(yùn)行時(shí)的數(shù)據(jù)和狀態(tài)檢測(cè),請(qǐng)務(wù)必保證在整個(gè)相機(jī)運(yùn)行周期內(nèi)有效。

private final class CameraStateCallbackImpl extends CameraStateCallback {
    @Override
    public void onCreated(Camera camera) {
         // 創(chuàng)建相機(jī)設(shè)備
    }
 
    @Override
    public void onConfigured(Camera camera) {
        // 配置相機(jī)設(shè)備
    }

    @Override
    public void onPartialConfigured(Camera camera) {
        // 當(dāng)使用了addDeferredSurfaceSize配置了相機(jī),會(huì)接到此回調(diào)
    }

    @Override
    public void onReleased(Camera camera) { 
       // 釋放相機(jī)設(shè)備
    }
}
 
// 相機(jī)創(chuàng)建和相機(jī)運(yùn)行時(shí)的回調(diào)
CameraStateCallbackImpl cameraStateCallback = new CameraStateCallbackImpl();
import ohos.eventhandler.EventHandler;
import ohos.eventhandler.EventRunner;
 
// 執(zhí)行回調(diào)的EventHandler
EventHandler eventHandler = new EventHandler(EventRunner.create("CameraCb"));

至此,相機(jī)設(shè)備的創(chuàng)建已經(jīng)完成。相機(jī)設(shè)備創(chuàng)建成功會(huì)在CameraStateCallback中觸發(fā)onCreated(Camera camera)回調(diào)。在進(jìn)入相機(jī)設(shè)備配置前,請(qǐng)確保相機(jī)設(shè)備已經(jīng)創(chuàng)建成功。否則會(huì)觸發(fā)相機(jī)設(shè)備創(chuàng)建失敗的回調(diào),并返回錯(cuò)誤碼,需要進(jìn)行錯(cuò)誤處理后,重新執(zhí)行相機(jī)設(shè)備的創(chuàng)建。

相機(jī)設(shè)備配置

創(chuàng)建相機(jī)設(shè)備成功后,在CameraStateCallback中會(huì)觸發(fā)onCreated(Camera camera)回調(diào),并且?guī)Щ谻amera對(duì)象,用于執(zhí)行相機(jī)設(shè)備的操作。

當(dāng)一個(gè)新的相機(jī)設(shè)備成功創(chuàng)建后,首先需要對(duì)相機(jī)進(jìn)行配置,調(diào)用configure(CameraConfig)方法實(shí)現(xiàn)配置。相機(jī)配置主要是設(shè)置預(yù)覽、拍照、錄像用到的Surface(詳見ohos.agp.graphics.Surface),沒有配置過Surface,相應(yīng)的功能不能使用。

為了進(jìn)行相機(jī)幀捕獲結(jié)果的數(shù)據(jù)和狀態(tài)檢測(cè),還需要在相機(jī)配置時(shí)調(diào)用setFrameStateCallback(FrameStateCallback, EventHandler)方法設(shè)置幀回調(diào)。

// Surface提供對(duì)象
private SurfaceProvider surfaceProvider;

private void initSurface() {
    surfaceProvider = new SurfaceProvider(this);
    DirectionalLayout.LayoutConfig params = new DirectionalLayout.LayoutConfig(     
        ComponentContainer.LayoutConfig.MATCH_PARENT, ComponentContainer.LayoutConfig.MATCH_PARENT);
    surfaceProvider.setLayoutConfig(params);    
    surfaceProvider.pinToZTop(false);
    surfaceProvider.getSurfaceOps().get().addCallback(new SurfaceCallBack());
    ((ComponentContainer) 
        findComponentById(ResourceTable.Id_surface_container)).addComponent(surfaceProvider);
}

private FrameStateCallback frameStateCallbackImpl = new FrameStateCallback(){
    @Override    
    public void onFrameStarted(Camera camera, FrameConfig frameConfig, long frameNumber, long timestamp) {
        ...    
    }
    @Override
    public void onFrameProgressed(Camera camera, FrameConfig frameConfig, FrameResult frameResult) {
        ...
    }
    @Override
    public void onFrameFinished(Camera camera, FrameConfig frameConfig, FrameResult frameResult) {
        ...
    }
    @Override
    public void onFrameError(Camera camera, FrameConfig frameConfig, int errorCode, FrameResult frameResult) {
        ...
    }
    @Override
    public void onCaptureTriggerStarted(Camera camera, int captureTriggerId, long firstFrameNumber) {
        ...
    }
    @Override
    public void onCaptureTriggerFinished(Camera camera, int captureTriggerId, long lastFrameNumber) {
        ...
    }
    @Override
    public void onCaptureTriggerInterrupted(Camera camera, int captureTriggerId) {
        ...
    }
};

// 相機(jī)設(shè)備
private Camera cameraDevice;
// 相機(jī)預(yù)覽模板
private Surface previewSurface;
// 相機(jī)配置模板
private CameraConfig.Builder cameraConfigBuilder;
// 圖像幀數(shù)據(jù)接收處理對(duì)象
private ImageReceiver imageReceiver;

private final class CameraStateCallbackImpl extends CameraStateCallback {
    @Override
    public void onCreated(Camera camera) {
        cameraDevice = camera;
        previewSurface = surfaceProvider.getSurfaceOps().get().getSurface();
        cameraConfigBuilder = camera.getCameraConfigBuilder();
        if (cameraConfigBuilder == null) {
            HiLog.error(LABEL, "onCreated cameraConfigBuilder is null");
            return;
        }
        // 配置預(yù)覽的Surface
        cameraConfigBuilder.addSurface(previewSurface);
        // 配置拍照的Surface
        cameraConfigBuilder.addSurface(imageReceiver.getRecevingSurface());
        // 配置幀結(jié)果的回調(diào)
        cameraConfigBuilder.setFrameStateCallback(frameStateCallbackImpl, eventHandler);
        try {
            // 相機(jī)設(shè)備配置
            camera.configure(cameraConfigBuilder.build());
        } catch (IllegalArgumentException e) {
            HiLog.error(LABEL, "Argument Exception");
        } catch (IllegalStateException e) {
            HiLog.error(LABEL, "State Exception");
        }
    }
}

相機(jī)配置成功后,在CameraStateCallback中會(huì)觸發(fā)onConfigured(Camera camera)回調(diào),然后才可以執(zhí)行相機(jī)幀捕獲相關(guān)的操作。

?CameraConfig.Builder的主要接口

接口名

描述

addSurface?(Surface surface)

相機(jī)配置中增加Surface。

build?()

相機(jī)配置的構(gòu)建類。

removeSurface?(Surface surface)

移除先前添加的Surface。

setFrameStateCallback?(FrameStateCallback callback, EventHandler handler)

設(shè)置用于相機(jī)幀結(jié)果返回的FrameStateCallback和Handler。

addDeferredSurfaceSize(Size surfaceSize, Class<T> clazz)

添加延遲Surface的尺寸、類型。

addDeferredSurface(Surface surface)

設(shè)置延遲的Surface,此Surface的尺寸和類型必須和使用addDeferredSurfaceSize配置的一致。文章來源地址http://www.zghlxwxcb.cn/news/detail-498304.html

到了這里,關(guān)于HarmonyOS學(xué)習(xí)路之開發(fā)篇—多媒體開發(fā)(相機(jī)開發(fā) 一)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 鴻蒙HarmonyOS開發(fā)實(shí)戰(zhàn)—多媒體開發(fā)(音頻開發(fā) 一)

    鴻蒙HarmonyOS開發(fā)實(shí)戰(zhàn)—多媒體開發(fā)(音頻開發(fā) 一)

    HarmonyOS音頻模塊支持音頻業(yè)務(wù)的開發(fā),提供音頻相關(guān)的功能,主要包括音頻播放、音頻采集、音量管理和短音播放等。 基本概念 采樣 采樣是指將連續(xù)時(shí)域上的模擬信號(hào)按照一定的時(shí)間間隔采樣,獲取到離散時(shí)域上離散信號(hào)的過程。 采樣率 采樣率為每秒從連續(xù)信號(hào)中提取并

    2024年01月24日
    瀏覽(30)
  • 多媒體開發(fā)之cgo

    多媒體開發(fā)之cgo

    ???? go語言作為近十年來優(yōu)秀的現(xiàn)代開發(fā)語言的代表,由于繼承了c語言的簡(jiǎn)潔和很多現(xiàn)代語言的表達(dá)方式,在廣泛的應(yīng)用場(chǎng)景中得到眾多愛好者的喜愛,如何將go和c、c++進(jìn)行聯(lián)合開發(fā),拓展整個(gè)開發(fā)生態(tài),不用重復(fù)造輪子,掌握cgo可以讓你得心應(yīng)手的在c和go之間傳遞信息,

    2024年02月16日
    瀏覽(26)
  • Android多媒體功能開發(fā)(2)——FileProvider

    使用系統(tǒng)多媒體界面需要在我們的應(yīng)用和其他應(yīng)用之間通過Intent傳遞音頻、圖片、視頻文件的信息。隨著Android版本的升級(jí),對(duì)應(yīng)用數(shù)據(jù)安全性方面的限制越來越多。 Android 6以后不允許應(yīng)用在外部存儲(chǔ)隨便創(chuàng)建目錄,只能在Android規(guī)定的應(yīng)用自己的文件目錄下創(chuàng)建目錄,該目錄

    2024年02月14日
    瀏覽(26)
  • qt6 多媒體開發(fā)代碼分析(二、錄音)

    常見的音頻編碼格式包括MP3、AAC、OGG、WMA、FLAC等,它們之間具有以下區(qū)別: 編碼方式不同:這些編碼格式采用的編碼算法不同,例如MP3和AAC使用有損壓縮算法,而FLAC使用無損壓縮算法。 壓縮率和文件大小不同:由于采用的編碼算法不同,不同格式的音頻文件壓縮率和文件大

    2024年02月07日
    瀏覽(17)
  • HTML-多媒體嵌入-MDN文檔學(xué)習(xí)筆記

    HTML-多媒體嵌入-MDN文檔學(xué)習(xí)筆記

    查看更多學(xué)習(xí)筆記:GitHub:LoveEmiliaForever MDN中文官網(wǎng) 將圖片放入網(wǎng)頁(yè) 可以使用 img/ 來將圖片嵌入網(wǎng)頁(yè),它是一個(gè)空元素,最少只需 src 屬性即可工作 src 指向圖片資源的地址,是 img/ 正常工作必不可少的屬性 ??除非有必要,否則 永遠(yuǎn)不要 把 src 指向其它網(wǎng)站上的圖片,這

    2024年02月20日
    瀏覽(27)
  • Android多媒體功能開發(fā)(12)——使用Camera類拍照

    Android多媒體功能開發(fā)(12)——使用Camera類拍照

    Android上用攝像頭拍照、錄視頻有兩套API可用,Android5.0(API21)之前使用android.hardware.Camera類,之后推薦使用android.hardware.camera2包。目前這兩套API都可以使用,Camera類用起來比較簡(jiǎn)單易懂,但功能少靈活性差,所以現(xiàn)在降級(jí)使用;Camera2框架功能強(qiáng)大,對(duì)攝像頭的控制靈活,但由于

    2023年04月13日
    瀏覽(25)
  • Android多媒體功能開發(fā)(11)——使用AudioRecord類錄制音頻

    Android多媒體功能開發(fā)(11)——使用AudioRecord類錄制音頻

    AudioRecord類優(yōu)點(diǎn)是能錄制到緩沖區(qū),能夠?qū)崿F(xiàn)邊錄邊播(AudioRecord + AudioTrack)以及對(duì)音頻的實(shí)時(shí)處理(如QQ電話)。缺點(diǎn)是輸出是PCM格式的原始采集數(shù)據(jù),如果直接保存成音頻文件,不能夠被播放器播放,所以必須用代碼實(shí)現(xiàn)數(shù)據(jù)編碼以及壓縮。 使用AudioRecord錄音的基本步驟是

    2023年04月09日
    瀏覽(23)
  • 【軟考程序員學(xué)習(xí)筆記】——多媒體基礎(chǔ)知識(shí)

    【軟考程序員學(xué)習(xí)筆記】——多媒體基礎(chǔ)知識(shí)

    目錄 ???一、多媒體的概念及分類 多媒體的分類 ??二、聲音信號(hào)的數(shù)字化過程 采樣 量化 編碼 ??三、常見音頻文件格式 ??四、圖形/圖像區(qū)別 ?圖形 圖像 ??五、常見圖像文件格式 ??六、常見視頻文件格式 ??七、顯示器的基本參數(shù) 傳播信息的載體,如語言、文字、圖

    2024年02月09日
    瀏覽(23)
  • SDL庫(kù)入門:掌握跨平臺(tái)游戲開發(fā)和多媒體編程

    SDL (Simple DirectMedia Layer) 是一個(gè)跨平臺(tái)的開源多媒體庫(kù),它提供了訪問音頻、鍵盤、鼠標(biāo)、操縱桿以及圖形硬件的底層接口。SDL 可用于開發(fā)游戲、仿真器、媒體播放器等多種類型的應(yīng)用程序。 1.1 SDL 的背景與應(yīng)用領(lǐng)域 SDL 由 Sam Lantinga 開發(fā),最早發(fā)布于 1998 年。SDL 的設(shè)計(jì)目標(biāo)是

    2024年02月02日
    瀏覽(23)
  • 15-1_Qt 5.9 C++開發(fā)指南_Qt多媒體模塊概述

    15-1_Qt 5.9 C++開發(fā)指南_Qt多媒體模塊概述

    多媒體功能指的主要是計(jì)算機(jī)的音頻和視頻的輸入、輸出、顯示和播放等功能,Qt 的多媒體模塊為音頻和視頻播放、錄音、攝像頭拍照和錄像等提供支持,甚至還提供數(shù)字收音機(jī)的支持。本章將介紹 Qt 多媒體模塊的功能和使用。 Qt 多媒體模塊提供了很多類,可以實(shí)現(xiàn)如下的

    2024年02月13日
    瀏覽(39)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包