Docker版FFmpeg安裝部署的詳細(xì)步驟
背景
項(xiàng)目組開發(fā)過程用因?yàn)橐褂靡纛l格式轉(zhuǎn)換功能,通過查閱相關(guān)資料,最終選擇使用 FFmpeg。
FFmpeg介紹
官網(wǎng):https://ffmpeg.org
FFmpeg是一套開源的、跨平臺(tái)的多媒體解決方案,可以用于錄制、轉(zhuǎn)換和流式傳輸音頻和視頻。支持Linux、Windows和macOS操作系統(tǒng)。
作為一個(gè)強(qiáng)大的多媒體工具集,F(xiàn)Fmpeg提供了廣泛的功能和工具,使開發(fā)者能夠進(jìn)行各種音視頻處理任務(wù),例如:
格式轉(zhuǎn)換:通過FFmpeg,您可以將音頻和視頻從一個(gè)格式轉(zhuǎn)換為另一個(gè)格式。它支持眾多的音視頻編解碼器,可以處理幾乎所有常見的音視頻格式。
視頻剪輯和裁剪:您可以使用FFmpeg裁剪視頻,提取所需的片段,并且還可以調(diào)整視頻的大小、分辨率和幀率等參數(shù)。
音頻處理:FFmpeg可以對(duì)音頻文件進(jìn)行各種處理,包括音頻合并、分割、混音、音量調(diào)節(jié)、降噪等。
視頻處理:除了轉(zhuǎn)碼和剪輯,F(xiàn)Fmpeg還支持視頻濾鏡和特效,如添加水印、旋轉(zhuǎn)、縮放、色彩調(diào)整等。
視頻流式傳輸:使用FFmpeg,您可以將音視頻實(shí)時(shí)流式傳輸?shù)骄W(wǎng)絡(luò)上,以便通過網(wǎng)絡(luò)播放、直播或其他實(shí)時(shí)應(yīng)用。
FFmpeg提供了命令行工具,也可以通過C/C++的庫進(jìn)行集成。此外,還有許多基于FFmpeg的第三方工具和框架可用,使得音視頻處理變得更加簡(jiǎn)單和便捷。
關(guān)于ffmpeg的安裝,有的人可能要折騰很久,甚至折騰一個(gè)禮拜,究其原因,基本都是編譯安裝惹的禍。
項(xiàng)目開發(fā)團(tuán)隊(duì)成員中,有使用Windows、Ubuntu、macOS等系統(tǒng)進(jìn)行開發(fā),測(cè)試、生產(chǎn)環(huán)境可能是CentOS、Fedora、Ubuntu、Windows等系統(tǒng)的情況。考慮到未來可能有其他成員接手項(xiàng)目,如果每個(gè)人都花時(shí)間安裝FFmpeg,因?yàn)榄h(huán)境差異不知道得折騰多久。為了提高生產(chǎn)率(降本增效),于是決定使用docker安裝ffmpeg。
1. 搜索鏡像
前提:已經(jīng)安裝docker
使用 docker search --no-trunc ffmpeg
命令搜索 ffmpeg 并查看完整鏡像描述
(base) mjl@ubuntu:~$ docker search --no-trunc ffmpeg NAME DESCRIPTION STARS OFFICIAL AUTOMATED jrottenberg/ffmpeg FFmpeg 2.8 - 3.x - 4.x Copyright (c) 2000-2017 the FFmpeg developers 419 [OK] linuxserver/ffmpeg 106 opencoconut/ffmpeg Minimal FFmpeg Docker image built on Alpine Linux 30 [OK] nachochip/ffmpeg ffmpeg (x264, fdk-aac) inside debian 14 [OK] nightseas/ffmpeg FFmpeg with CUDA encoder/decoder support. 8 [OK] selenium/video Image with ffmpeg meant to be used with a Dynamic Grid 7 alfg/ffmpeg An FFmpeg Dockerfile from source. Built on Alpine Linux. 6 [OK] jellyfin/ffmpeg 4 datarhei/ffmpeg FFmpeg Development Image for H.264-Processing 4 rafalkrypa/ffmpeg Latest FFmpeg static build on minimal Alpine Linux container 3 sjourdan/ffmpeg FFmpeg on Alpine Docker Image 3 [OK] ffmpeg/coverity Environment for automated coverity testing of FFmpeg. 2 [OK] mycujoo/ffmpeg-docker ffmpeg docker container 0 [OK] krickwix/ffmpeg 0 nicholasrobinson/ffmpeg-homebridge A Homebridge Dockerfile built on oznu/docker-homebridge with FFmpeg copied from alfg/ffmpeg. 0 azamserver/nextcloud-imagemagick-ffmpeg A Nextcloud docker image with ImageMagick & FFmpeg preinstalled 0 jamesarems/ffmpeg CentOS 8 based ffmpeg server 0 onlinetvrecorder/ffmpeg 0 vulhub/ffmpeg 0 ffmpegextrah/ffmpeg 0 ffmpegclearu/ffmpeg 0 thinkz/ffmpeg ffmpeg with librtmp 0 umnelevator/ffmpeg 0 nicolasarnaud4viseo/ffmpeg 0 chpkg/ffmpeg-to-s3 0
2. 拉取鏡像
從上面的搜索結(jié)果中我們可以看到第一行 jrottenberg/ffmpeg 的 Stars 最多, 果斷就用它了。
使用 docker pull jrottenberg/ffmpeg
命令拉取鏡像(提前換好速度快的鏡像源,否則就耐心等待吧):
(base) mjl@ubuntu:~$ docker pull jrottenberg/ffmpeg Using default tag: latest latest: Pulling from jrottenberg/ffmpeg 7b722c1070cd: Pull complete 5fbf74db61f1: Pull complete ed41cb72e5c9: Pull complete 7ea47a67709e: Pull complete c56548ea744b: Pull complete 24130a6ef4f3: Pull complete 2d757c4d9a11: Pull complete Digest: sha256:21eb739725c43bd7187982e5fa4b5371b495d1d1f6f61ae1719ca794817f8641 Status: Downloaded newer image for jrottenberg/ffmpeg:latest docker.io/jrottenberg/ffmpeg:latest
3. 導(dǎo)出鏡像
拉取完成后,使用 docker image ls
列出本地已經(jīng)下載的鏡像。我們看到有一個(gè)jrottenberg/ffmpeg
鏡像,大小為218MB。
(base) mjl@ubuntu:~$ docker image ls REPOSITORY TAG IMAGE ID CREATED SIZE jrottenberg/ffmpeg latest 2100506dfbea 4 years ago 218MB
我們需要將該鏡像導(dǎo)出成 tar 包??梢允褂靡韵旅顚?dǎo)出:
(base) mjl@ubuntu:~$ docker save -o ffmpeg.tar jrottenberg/ffmpeg:latest
導(dǎo)出為 ffmpeg.tar
文件:
(base) mjl@ubuntu:~$ ll -rw------- 1 mjl mjl 222621696 5月 3 22:27 ffmpeg.tar
導(dǎo)出的 tar 包可以通過 scp 或者 ftp 將其傳輸至離線服務(wù)器。
4. 加載鏡像
在服務(wù)器中,使用 docker image ls
列出本地已經(jīng)下載的鏡像,可以看到服務(wù)器上只有一個(gè) hello-word
鏡像(如下所示)。
(base) [root@10-23-2-211 ~]# docker image ls REPOSITORY TAG IMAGE ID CREATED SIZE hello-world latest bf756fb1ae65 3 years ago 13.3kB
接下來使用 docker load -i ffmpeg.tar
將 tar 包導(dǎo)入 Docker 中:
(base) [root@10-23-2-211 ~]# docker load -i ffmpeg.tar 0de2edf7bff4: Loading layer [==================================================>] 121.3MB/121.3MB b2fd8b4c3da7: Loading layer [==================================================>] 15.87kB/15.87kB f67191ae09b8: Loading layer [==================================================>] 11.78kB/11.78kB 68dda0c9a8cd: Loading layer [==================================================>] 3.072kB/3.072kB 1c86e8f0fce5: Loading layer [==================================================>] 2.048kB/2.048kB e38e18db08fb: Loading layer [==================================================>] 31.93MB/31.93MB b0e2549b869a: Loading layer [==================================================>] 69.36MB/69.36MB Loaded image: jrottenberg/ffmpeg:latest
導(dǎo)入完成后,我們繼續(xù)使用 docker image ls
命令查詢是否成功導(dǎo)入:
(base) [root@10-23-2-211 ~]# docker image ls REPOSITORY TAG IMAGE ID CREATED SIZE hello-world latest bf756fb1ae65 3 years ago 13.3kB jrottenberg/ffmpeg latest 2100506dfbea 4 years ago 218MB
從上面的輸出結(jié)果中可以看出多了一個(gè) jrottenberg/ffmpeg
鏡像,大小218MB,說明導(dǎo)入成功。
5. 啟動(dòng)容器
使用 docker ps
查看運(yùn)行的容器:
(base) [root@10-23-2-211 ~]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
啟動(dòng)容器:
(base) [root@10-23-2-211 ~]# docker run -itd --name app_ffmpeg -p 8066:8080 -v /home/mjl/ffmpeg/:/mnt/app/ --entrypoint='bash' jrottenberg/ffmpeg 2cd7573a3c44da0ccfacd1e46cb40a523dfaf99dc0e298db3053f473a0ecd11e
再次使用 docker ps
查看運(yùn)行的容器:
(base) [root@10-23-2-211 ~]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 2cd7573a3c44 jrottenberg/ffmpeg "bash" 4 seconds ago Up 3 seconds 0.0.0.0:8066->8080/tcp app_ffmpeg
此時(shí)容器已啟動(dòng)。
到此這篇關(guān)于Docker版FFmpeg安裝部署的詳細(xì)步驟的文章就介紹到這了,更多相關(guān)Docker安裝部署FFmpeg內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Docker安裝方法與Docker四種網(wǎng)絡(luò)模式詳解
今天小編就為大家分享一篇關(guān)于Docker安裝方法與Docker四種網(wǎng)絡(luò)模式的詳解,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧2018-09-09Docker Nginx容器制作部署實(shí)現(xiàn)方法
這篇文章主要介紹了Docker Nginx容器制作部署實(shí)現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-11-11docker search 搜索鏡像的實(shí)現(xiàn)示例
本文主要介紹了docker search搜索鏡像的實(shí)現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2024-02-02Docker數(shù)據(jù)卷容器創(chuàng)建及使用方法解析
這篇文章主要介紹了Docker數(shù)據(jù)卷容器創(chuàng)建及使用方法解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-10-10使用Portainer部署Docker容器的項(xiàng)目實(shí)踐
這篇文章主要介紹了使用Portainer部署Docker容器的項(xiàng)目實(shí)踐,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-04-04解決docker報(bào)錯(cuò):docker:invalid?reference?format.
在導(dǎo)入鏡像的時(shí)候出現(xiàn)問題:invalid reference format,這里總結(jié)下,這篇文章主要給大家介紹了關(guān)于解決docker報(bào)錯(cuò):docker:invalid?reference?format的相關(guān)資料,需要的朋友可以參考下2024-01-01如何使用docker極簡(jiǎn)打包java.jar鏡像并啟動(dòng)
這篇文章主要介紹了如何使用docker極簡(jiǎn)打包java.jar鏡像并啟動(dòng),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-08-08將Docker容器打包并在其他服務(wù)器上運(yùn)行的全過程
Docker容器使得應(yīng)用程序的部署和管理變得更加簡(jiǎn)單和高效,有時(shí),我們可能需要將一個(gè)運(yùn)行中的Docker容器打包,并在其他服務(wù)器上運(yùn)行,本文將詳細(xì)介紹如何實(shí)現(xiàn)這一過程,需要的朋友可以參考下2024-05-05