曰本美女∴一区二区特级A级黄色大片, 国产亚洲精品美女久久久久久2025, 页岩实心砖-高密市宏伟建材有限公司, 午夜小视频在线观看欧美日韩手机在线,国产人妻奶水一区二区,国产玉足,妺妺窝人体色WWW网站孕妇,色综合天天综合网中文伊,成人在线麻豆网观看

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

WebAssembly技術(shù)_編譯ffmpeg(ubuntu)

DS小龍哥-嵌入式技術(shù) ? 來源:DS小龍哥-嵌入式技術(shù) ? 作者:DS小龍哥-嵌入式技 ? 2022-08-14 09:43 ? 次閱讀

1. 前言

WebAssembly/wasm WebAssembly 或者 wasm 是一個可移植、體積小、加載快并且兼容 Web 的全新格式。

WebAssembly的名字帶個匯編Assembly,所以我們從其名字上就能知道其意思是給Web使用的匯編語言,是通過Web執(zhí)行低級二進制語法。

但是WebAssembly并不是直接用匯編語言,而提供了抓換機制(LLVM IR),把高級別的語言(C,C++和Rust)編譯為WebAssembly,以便有機會在瀏覽器中運行。主要是解決目前JS語言的效率問題,設(shè)計立足點為快速,內(nèi)存安全和開放。所以是一種運行機制,一種新的字節(jié)碼格式(.wasm)

官網(wǎng)介紹: https://www.wasm.com.cn/

2. 安裝ubuntu 20.04

ubuntu20.04 安裝emcc編譯最方便,只需要簡單的幾個命令即可完成。

鏡像下載地址: http://mirrors.aliyun.com/ubuntu-releases/20.04/

image.png


image.png

下載之后,安裝系統(tǒng)。

我這里使用VMware Workstation Pro 15.5 虛擬機安裝系統(tǒng)。

安裝的過程就不多說了,常規(guī)步驟,都比較簡單。

image.png


image.png

系統(tǒng)安裝完畢之后需要安裝vmtools工具才可以放大自適應(yīng)桌面,訪問共享目錄,支持復(fù)制粘貼。
如果在下拉菜單里,安裝vm tools工具的按鈕是灰色的,需要將CD掛載選項,改成自動檢測,然后關(guān)閉系統(tǒng),關(guān)閉虛擬機,重新再打開,再啟動系統(tǒng),再次打開下拉菜單,就可以選擇工具安裝了。

image.pngimage.png

將彈出的壓縮包拷貝出來,解壓,運行里面的腳本,然后一直回車確認,最后就可以安裝完成。
注意: 安裝過程中有no 這種選項的時候要注意,要輸入yes,在按下回車,不然就直接結(jié)束安裝了。

image.png

3. ubuntu 20.04安裝emcc編譯器

安裝emcc編譯器之前需要安裝python,ubuntu20.04 系統(tǒng)安裝之后,系統(tǒng)默認是安裝了python 的,
這個就不用管了。

emcc編譯器的代碼在GitHub倉庫里,需要安裝Git工具,這個系統(tǒng)沒自動安裝,需要自己安裝。

wbyq@wbyq:~/work_pc/WebAssembly/emsdk$ sudo apt  install git

編譯代碼需要用到make命令,make也沒有安裝,需要手動安裝。

image.png

安裝之后,就可以繼續(xù)下面的步驟了。

(1)創(chuàng)建工作目錄,存放接下來下載的相關(guān)文件

xl@xl:~/work$ mkdir wasm
xl@xl:~/work$ cd wasm/

(2)從倉庫克隆項目

xl@xl:~/work/wasm$ git clone https://github.com/emscripten-core/emsdk.git 
正克隆到 'emsdk'...
remote: Enumerating objects: 3138, done.
remote: Total 3138 (delta 0), reused 0 (delta 0), pack-reused 3138
接收對象中: 100% (3138/3138), 1.66 MiB | 174.00 KiB/s, 完成.
處理 delta 中: 100% (2043/2043), 完成.
wbyq@wbyq:~/work_pc/WebAssembly$ ls
emsdk
wbyq@wbyq:~/work_pc/WebAssembly$ cd emsdk/
wbyq@wbyq:~/work_pc/WebAssembly/emsdk$ ls
bazel            emscripten-releases-tags.json  emsdk_env.bat   emsdk_env.ps1        emsdk.ps1                 legacy-emscripten-tags.txt  README.md
docker           emsdk                          emsdk_env.csh   emsdk_env.sh         emsdk.py                  LICENSE                     scripts
emcmdprompt.bat  emsdk.bat                      emsdk_env.fish  emsdk_manifest.json  legacy-binaryen-tags.txt  llvm-tags-64bit.txt         test

(3)安裝最新的編譯器

wbyq@wbyq:~/work/wasm/emsdk$ ./emsdk install latest
Resolving SDK alias 'latest' to '3.1.4'
Resolving SDK version '3.1.4' to 'sdk-releases-upstream-39e60dda6945cfcd6487725bdb1361ae7975173f-64bit'
Installing SDK 'sdk-releases-upstream-39e60dda6945cfcd6487725bdb1361ae7975173f-64bit'..
Installing tool 'node-14.18.2-64bit'..

等待片刻,即可全部下載完成。

image.png

(4)激活SDK

xl@xl:~/work/wasm/emsdk$ ./emsdk activate latest

(5)生效環(huán)境變量

xl@xl:~/work/wasm/emsdk$ source emsdk_env.sh
image.png

(6)查看編譯器版本詳細信息

該命令只能在當前終端生效,可以將命令加到etc/profile里,重啟系統(tǒng)全局生效。

image.png

4. 編寫C/C++代碼測試

下面編寫一個C語言代碼,導(dǎo)出函數(shù)接口,給前端JS調(diào)用測試。

(1)編寫簡單的C代碼,提供1個測試函數(shù)

#include 
#include 
#include 
#include 

int func_sum(int x, int y) 
{
  return x + y;
}

(2)編譯測試

emcc app.c -o app.js -s EXPORTED_FUNCTIONS="['_func_sum','_malloc','_free']" -s WASM=1

EXPORTED_FUNCTIONS 里填寫可以導(dǎo)出給js調(diào)用的函數(shù)接口。

(3)編譯成功生成app.js和app.wasm

image.png

(4)編寫一個HTML文件。名稱設(shè)置為: index.html


(5)啟動HTTP服務(wù)器

python3 -m http.server
image.png

(6)打開瀏覽器訪問

按下F12,查看控制臺的輸出。

http://127.0.0.1:8000/index.html

5. 編譯ffmpeg

(1)下載ffmpeg源碼

image.png


切換分支到4.1

image.png
git clone https://git.ffmpeg.org/ffmpeg.git
cd ffmpeg
git checkout -b 4.1 origin/release/4.1

(2)編譯

emconfigure ./configure --cc="emcc" --enable-cross-compile --target-os=none --arch=x86_32 --cpu=generic --disable-ffplay --disable-ffprobe --disable-asm --disable-doc --disable-devices --disable-pthreads --disable-w32threads --disable-network --disable-hwaccels --disable-parsers --disable-bsfs --disable-debug --disable-protocols --disable-indevs --disable-outdevs --enable-protocol=file
image.png

(3)編寫C代碼,測試ffmpeg解碼,編譯

emcc app.c ffmpeg-4.4-wasm/lib/libavformat.a ffmpeg-4.4-wasm/lib/libavcodec.a  ffmpeg-4.4-wasm/lib/libswresample.a ffmpeg-4.4-wasm/lib/libavutil.a -I "ffmpeg-4.4-wasm/include" -s EXPORTED_FUNCTIONS="['_malloc','_free','ccall','allocate','UTF8ToString','_write_file','_print_version','_get_FileSize','_read_file','_GetVideoFrame','_GetVideoWidth','_GetVideoDuration','_GetVideoHeight','_DeleteMemory','_find_Decoder']" -s WASM=1 -s ASSERTIONS=0 -s TOTAL_MEMORY=167772160 -s ALLOW_MEMORY_GROWTH=1 -o out/ffmpeg_decoder.js

(4)開啟服務(wù)器

python -m http.server

(5)調(diào)用測試ffmpeg

poYBAGL3SNWARwVXAAVqBEu4zWg151.pngpYYBAGL3SOKAL1_MAAV1nfaM4fM807.png

審核編輯:湯梓紅
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • Ubuntu
    +關(guān)注

    關(guān)注

    5

    文章

    582

    瀏覽量

    30728
  • 編譯
    +關(guān)注

    關(guān)注

    0

    文章

    674

    瀏覽量

    33658
  • ffmpeg
    +關(guān)注

    關(guān)注

    0

    文章

    46

    瀏覽量

    7579
收藏 人收藏

    評論

    相關(guān)推薦
    熱點推薦

    嵌入式Qt-交叉編譯FFmpeg與視頻播放測試

    本篇介紹了嵌入式Qt播放視頻的準備工作:交叉編譯FFmpeg庫并移植到Linux板子中,并先通過ffmpeg指令測試視頻播放效果。下篇將嘗試設(shè)計Qt界面來結(jié)合FFmpeg進行視頻的播放
    的頭像 發(fā)表于 09-15 02:08 ?2885次閱讀
    嵌入式Qt-交叉<b class='flag-5'>編譯</b><b class='flag-5'>FFmpeg</b>與視頻播放測試

    WebAssembly技術(shù)_編譯ffmpeg(ubuntu20.04)

    WebAssembly并不是直接用匯編語言,而提供了抓換機制(LLVM IR),把高級別的語言(C,C++和Rust)編譯WebAssembly,以便有機會在瀏覽器中運行。主要是解決目前JS語言的效率問題,設(shè)計立足點為快速,內(nèi)
    的頭像 發(fā)表于 07-14 10:29 ?2594次閱讀
    <b class='flag-5'>WebAssembly</b><b class='flag-5'>技術(shù)</b>_<b class='flag-5'>編譯</b><b class='flag-5'>ffmpeg</b>(<b class='flag-5'>ubuntu</b>20.04)

    【風火輪YY3568開發(fā)板免費體驗】第二章:YY3568 ffmpeg 編譯以及 nanogui 移植

    本章主要記錄如何移植 nanogui 以及在 buildroot 下快樂編譯 ffmpeg。
    的頭像 發(fā)表于 08-11 15:41 ?2888次閱讀
    【風火輪YY3568開發(fā)板免費體驗】第二章:YY3568  <b class='flag-5'>ffmpeg</b> <b class='flag-5'>編譯</b>以及 nanogui 移植

    ELF 1技術(shù)貼|如何在Ubuntu編譯OpenCV庫

    在之前發(fā)布的文章中探討了交叉編譯OpenCV并部署至嵌入式系統(tǒng)的方法。然而,在調(diào)試階段,我們發(fā)現(xiàn)在Ubuntu環(huán)境下將OpenCV編譯為X86架構(gòu)可能更加方便和高效。通過在主機上編譯
    的頭像 發(fā)表于 05-31 16:41 ?1344次閱讀
    ELF 1<b class='flag-5'>技術(shù)</b>貼|如何在<b class='flag-5'>Ubuntu</b>中<b class='flag-5'>編譯</b>OpenCV庫

    Linux的ffmpeg安裝步驟

    1. ffmpeg安裝安裝環(huán)境:ubuntu 12.04(1)刪除已安裝的文件,避免沖突sudo apt-get remove ffmpeg x264sudo apt-get autoremove
    發(fā)表于 07-12 07:52

    iTOP-iMX6ULL開發(fā)板-FFmpeg移植

    =arm-linux-gnueabihf--disable-asm參數(shù)說明:--prefix=/home/ubuntu/work/ffmpeg/_x264_install/ :指定編譯后存放路徑.--host
    發(fā)表于 09-04 10:28

    FFmpeg移植-迅為IMX6ULL開發(fā)板

    =arm-linux-gnueabihf-gcc:配置為自己的交叉編譯工具--arch=arm --prefix=/home/ubuntu/work/ffmpeg/_ffmpeg_in
    發(fā)表于 09-15 11:22

    迅為imx6開發(fā)板QT系統(tǒng)移植FFmpeg-編譯FFmpeg

    迅為IMX6Q開發(fā)板FFmpeg 下載地址:h_t_t_p : / / f f m p e g . o r g / d o w n l o a d . h t m l,已經(jīng)把下載好的壓縮包放在了文檔
    發(fā)表于 10-20 11:10

    請問一下怎樣在ubuntu上去移植RK3399的ffmpeg源碼呢

    請問一下怎樣在ubuntu上去移植RK3399的ffmpeg源碼呢?
    發(fā)表于 03-07 06:56

    RK3399 ffmpeg編譯步驟有哪些

    RK3399 ffmpeg編譯步驟有哪些?求解答
    發(fā)表于 03-08 08:30

    如何基于ffmpegubuntu系統(tǒng)上添加硬解支持

    firefly-rk3288 linux上H264、H265解碼一直都是軟解,下面將介紹如何基于ffmpeg,在ubuntu系統(tǒng)上添加硬解支持,首先安裝硬解驅(qū)動庫。這里使用的是國外友人mac_l1
    發(fā)表于 06-14 09:30

    怎樣使用NDK去編譯ffmpeg開源計算機程序呢

    的ffmpgeg壓縮包。我下的是 ffmpeg-2.4.2(1)修改 configure 文件將該文件中的如下四行:替換為:(2)在源碼目錄下創(chuàng)建,build_ffmpeg.sh(3)編譯運行原作者:error結(jié)構(gòu)體
    發(fā)表于 07-01 17:24

    opencv編譯安裝筆記(Linux、Ubuntu

    本文介紹了兩種opencv編譯安裝筆記:Linux下編譯安裝OpenCV和Ubuntu 下安裝 OpenCV。有需要的小伙伴可以看看。
    發(fā)表于 12-03 10:33 ?5271次閱讀
    opencv<b class='flag-5'>編譯</b>安裝筆記(Linux、<b class='flag-5'>Ubuntu</b> )

    fireflyROC-RK3328-PC編譯Ubuntu 根文件系統(tǒng)簡介

    編譯 Ubuntu 根文件系統(tǒng)
    的頭像 發(fā)表于 12-21 09:45 ?1633次閱讀

    Ubuntu編譯安裝pcl教程

    編譯安裝PCL(Point Cloud Library)是在Ubuntu上使用自定義選項進行安裝的一種方式。
    的頭像 發(fā)表于 10-26 09:36 ?1618次閱讀