一、FFmpeg 的初嘗試《FFmpeg 音視頻開發基礎入門到實戰》

學習目標

  • 了解 FFmpeg
  • 學習 FFmpeg 工具的下載及環境配置
  • 了解 FFmpeg 工具的使用方式
  • 了解 FFmpeg play 的使用方法
  • 了解 FFmpeg paly 的音量設置、窗口設置、音量設置等設置方法

一、了解 FFmpeg

FFmpeg 是一個音視頻處理的工具,通過 FFmpeg 可以對視頻進行旋轉、縮小、添加水印、截圖、添加馬賽克、直播推流、轉化音頻等操作。

在使用 FFmpeg 前需要了解一些專業術語,例如容器、媒體流、數據幀(包)、編解碼器、復用、解復用這些概念釋義如下:

  • 容器:容器是指一種特定格式的多媒體文件,例如 mp4、flv 文件等;
  • 媒體流:媒體流一般是指時間軸上的連續的數據,這些數據是需要連續的,如一段音頻數據、一段視頻數據等;
  • 數據幀:數據幀是指媒體流中的最小處理單元,例如很多張圖片組成一段連續的視頻,每一幀則是每一張圖片;
  • 編解碼器:指對一個數據流進行變換的程序;
  • 復用:把不同的流根據某種容器(mp4、flv)的規則集合在一起成為一個文件稱為 復用
  • 解復用:解復用則是與復用相反,把一個文件中不同的流解析出來稱之為 解復用

二、下載及環境配置

在使用 FFmpeg 前我們需要下載 FFmpeg 工具以及對其配置環境,方便接下來的使用及開發。

2.1 下載

首先進入官網 https://ffmpeg.org/download.html 后,找到 Windows 下(本教程使用 win 作為基礎開發環境),隨后點擊 win 圖標:

在這里插入圖片描述
之后再點擊 Windows build ****:
在這里插入圖片描述
隨后找到對應的文件:
在這里插入圖片描述
隨后下載完畢后解壓,解壓之后的文件夾打開發現有一個bin目錄,進入bin 目錄后發現有如下 exe 工具:

在這里插入圖片描述

2.2 環境配置

下載 FFmpeg 工具之后,我們需要配置對應的環境變量,使其具備在 系統 中可直接進行調用。首先我們需要把當前 bin 目錄作為一個系統環境目錄,打開編輯系統環境窗口:

在這里插入圖片描述
在系統環境中找到 path:

在這里插入圖片描述

隨后復制對應的 bin 目錄到 path 之中:

在這里插入圖片描述

配置這個目錄目的是將該目錄放到 path 后,當使用一些“工具” 或其他東西時,系統將會在已配置的目錄下循環對應的“工具” 并執行對應的操作,例如我配置完畢后,打開 cmd 輸入 FFmpeg -version 查看對應的 FFmpeg 版本,此時結果如下:

在這里插入圖片描述
若沒有配置,將會找不到命令。

三、FFmpeg play 初嘗試

3.1 簡單使用 FFmpeg 的 play 播放器

在使用 FFmpeg 的其他功能前,我們先從 FFmpeg 的 play 播放器入手,了解 FFmpeg 的使用方式,為之后的使用奠定基礎。FFmpeg有一個 play 播放器,通過這個播放器我們可以播放對應的視頻。

使用這個播放器我們需要使用命令行形式調用,在 dos 窗口中切換到對應目錄下(當然你可以直接指定文件),在此切換到到視頻文件目錄是為了方便接下來的操作:

在這里插入圖片描述
接著,我們可以通過 dir 查看當前目錄下的文件內容:

在這里插入圖片描述

當前目錄下有一個 jsgd 的 mp4 文件,在此我們通過 ffplay 命令可通過 FFmpeg 的播放器播放當前的視頻文件:

在這里插入圖片描述

enter 鍵確認后,將會彈出播放窗口:

在這里插入圖片描述
此時在 dos 窗口中我們可以觀察到對應的播放信息:

在這里插入圖片描述
播放時,可以按 esc 鍵對應的退出播放。

3.2 FFmpeg play 播放器的一些指令操作

接著我們了解一下這個 play 播放器如何進行操作,我們可以使用 ffplay -help 對這個 ffplay 播放器的所有指令進行查看:

在這里插入圖片描述

不過此時輸出的內容過多,并不方便查看,我們可以通過命令 ffplay -help > ffplayHelp.txt 將輸出的信息存儲到對應的文本文件下:

在這里插入圖片描述

該命令會將對應的輸出信息保存到指定的文件之中:

在這里插入圖片描述
在此打開,我們可以看到很多的幫助信息,在此我們先拉到最下面(這部分是播放時可通過某些按鍵發出指令進行操作的部分):

在這里插入圖片描述
此處的幫助信息是對應操作 ffplay 播放器的一些手動指令,這些按鍵指令對應如下的表功能(在此我做了翻譯):

按鍵指令功能
q, ESC退出
f切換到全屏
m開關靜音
q, ESC退出
9、0分別減少和增加音量
/, *分別減少和增加音量
a循環當前節目中的音頻通道
v循環視頻通道
t循環播放當前節目中的字幕通道
c循環項目
w循環播放視頻過濾器或顯示模式
left/right前進或后退10秒
down/up前進或后退1分鐘
page down/page up前進或后退10分鐘
right mouse click右鍵在屏幕上拖動可以對應的拖動播放進度條
left double-click左鍵雙擊全屏
s逐幀播放

此時我們可以嘗試以上所述命令對 ffplay 的作用。

3.3 FFmpeg play 播放設置

音量設置

在使用 ffplay 時還可以通過對應的命令提前設置播放參數。例如播放時,可能音量過大對用戶并不友好,此時我們可以在播放前就設置對應的播放音量,此時需要使用 volume 參數,在我們導出的 help 文本中,可以查找后看到對應的參數:

在這里插入圖片描述

此時 volume 再 help 幫助中,所描述的是 “ 設置初始音量(從-900到0)(默認為0)”,那么此時我們設置一個 0 試試是否靜音:

在這里插入圖片描述

此時再次輸入命令后,enter 執行 視頻并沒有任何聲音,測試成功。(由于音頻無法用文本形式感知音量大小,在此也不再截圖)

指定播放窗口大小

在使用 FFmpeg 時,若播放設備分辨率有局限,那么可以設置對應的 x、y 指定播放大小,例如命令:ffplay -x 400 -y 400 jsgd.mp4 。該命令設置視頻大小為 400*400,此時輸入命令后,播放窗口如下:

在這里插入圖片描述

其他設置參數

除了指定大小之外,還有以下命令(不限于)可以指定對應播放形式:

命令功能
fs全屏啟動
an禁用音頻
vn禁用視頻只有音頻
sn禁用字幕
ss pos指定位置開始播放,其中 pos 是定位的秒數位置
t duration設置視頻、音頻的播放長度
video_size size幀尺寸設置
nodisp關閉圖形化顯示窗口(播放但不顯示視頻)
noborder播放無邊框
loop number設置播放循環次數
showmode mode設置顯示模式(0顯示視頻 1顯示音頻波形 2顯示音頻頻譜)
window_title title設置窗口標題
vf filtergraph設置視頻濾鏡
af filtergraph設置視頻濾鏡
autoexit播放完畢自動退出

例如 靜音命令的使用命令為 :ffplay -x 400 -y 400 -an jsgd.mp4 。此時你使用命令播放視頻后,視頻將會靜音播放。

若你禁用視頻,則會只播放音頻,命令為:ffplay -x 400 -y 400 -vn jsgd.mp4 ,播放效果如下:

在這里插入圖片描述

如果你想從某個位置(秒數)開始播放視頻,那么此時直接使用 ss 命令定位到對應的秒數即可,命令為: ffplay -x 400 -y 400 -ss 60 jsgd.mp4,播放效果如下:

在這里插入圖片描述
不過你可能對于長視頻的秒數并不感冒,那么此時還可以對應的指定多少分多少秒(格式為:00:05:15)進行播放,例如命令 ffplay -x 400 -y 400 -ss 00:05:15 jsgd.mp4 ,播放效果如下:

在這里插入圖片描述
若你只想播放一個視頻固定時間,例如你指向播放10秒,那么此時可以使用 -t 命令,命令如:ffplay -x 400 -y 400 -ss 00:05:15 -t 10 jsgd.mp4,運行命令后,播放 10 秒后將會結束;

若你想指定多少分鐘,但并不好計算時間,也可以使用時間格式進行指定的播放時間,例如:ffplay -x 400 -y 400 -ss 00:05:15 -t 00:00:05 jsgd.mp4

在這里插入圖片描述

總結

本章節主要講解了 FFmpeg 工具的安裝和使用。由于本章節是第一章,主要通過 ffplay 學習 FFmpeg 工具的使用方法,并且學習了 ffplay 對視頻文件的播放設置,通過本章節的學習為之后 FFmpeg 的使用奠定基礎。

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

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

相關文章

快速掌握 ASP.NET 身份認證框架 Identity - 用戶注冊

推薦關注「碼俠江湖」加星標,時刻不忘江湖事這是 ASP.NET Core Identity 系列的第二篇文章,上一篇文章介紹了 Identity 框架的集成,以及一些基礎知識。這篇文章講一講如何在 ASP.NET Core Identity 中實現用戶注冊。點擊上方或后方藍字&#…

Android命令Monkey壓力測試,詳解

支持原創,前半部分來源博客原文:http://blog.csdn.net/huangbiao86/article/details/8490743shell, monkey, system, Android, 文件系統Monkey, 示例, 簡介一、Monkey測試簡介Monkey測試是Android平臺自動化測試的一種手段,通過Monkey程序模擬…

JAVA 排序工具類

提供了以下排序: 冒泡排序選擇排序插入排序希爾排序快速排序歸并排序桶排序堆排序package com.xingej.algorithm.sort;import java.util.ArrayList; import java.util.Collections;/*** 排序工具類* * author erjun 2017年12月13日 上午8:38:22*/public class SortU…

js中null,undefined,false,0,'',[],{}判斷方法

目錄 1.數據類型 2.JSON字符串 3.數字類型 4.非的布爾值 5.與非比較 一、單獨判斷 1.null 2.undefined 3.0 4.“” 5.判斷undefined、null與NaN: 因為獲取到數據的不確定性,常常會導致一些異常情況,使得頁面報錯,往往要兼容這些異…

【GIS風暴】30米分辨率地表覆蓋數據GlobeLand30原始數據集簡介及下載地址

數據集預覽: GlobeLand30是30米空間分辨率全球地表覆蓋數據,目前可供下載使用的有3年的數據:2000-2010-2020,本文主要講述GlobeLand30的官網下載地址和數據集簡介。 數據處理方法、成果數據下載: 【ArcGIS風暴】ArcGI…

Git之解決git stash pop多次產生的文件沖突問題

1、問題 我們用git命令一般拉取線上代碼的時候,本地修改了,我們一般先git stash下,接下來git pull, 然后git stash pop下,但是我新增了文件,沒有添加到本地git(也就是沒有git add file這個新增加的文件),然…

記一次意外

今天嘗試給同一個對象綁定多個事件: document.getElementById("a").οnfοcus function(){ alert("1") }.οnclick function(){ alert("2") } 發現彈出2,改變focus和click的順序后依舊如此&…

一、基礎折線圖詳解《手把手教你 ECharts 數據可視化詳解》

注:本系列教程需要對應 JavaScript 、html、css 基礎,否則將會導致閱讀時困難,本教程將會從 ECharts 的官方示例出發,詳解每一個示例實現,從中學習 ECharts 。 ECharts 官方示例:https://echarts.apache.o…

NLog自定義Target之MQTT

NLog是.Net中最流行的日志記錄開源項目(之一),它靈活、免費、開源官方支持文件、網絡(TCP、UDP)、數據庫、控制臺等輸出社區支持Elastic、Seq等日志平臺輸出實時日志需求在工業物聯網等特定場景下需要實時獲取日志信息工業物聯網領域常用的是mqtt協議那我們就使用NL…

2016-1-27

2019獨角獸企業重金招聘Python工程師標準>>> 1.前端的三大技能:1.1.描述網頁內容html 1.2.描述網頁樣式css 1.3.描述網頁行為js2.html和jsp區別在于靜態和動態..bootsharp是目前比較火爆的css..angular是目前比較火爆的js.3.單點登陸(SSO):登陸一次就可以訪問所有相…

【ArcGIS風暴】ArcGIS生成GlobeLand30土地利用數據集中國區域行列號shp格式對照圖(附shp下載)

效果預覽: 本文主要講述了在ArcGIS中生成GlobeLand中國區域對照行列號的shp格式矢量數據,用途在于將自己的研究區跟行列號矢量圖層直接疊加顯示,快速找出自己所需要的圖幅號,便于快速下載數據。同時為了方便使用,本文提供了對照圖的下載。 文章目錄 1. 創建文件數據庫2. 創…

Android 節操視頻播放器jiecaovideoplayer自定義播放音頻使用:屏蔽全屏按鈕,增加倒計時,當前時間/總時間

一、屏蔽全屏按鈕 找到JCVideoPlayerStandard.java文件中的代碼: private void fixAudio() {if (SrcType.equalsIgnoreCase("Audio")) {//如果是音頻,始終顯示coverImageView//thumbImageView.setVisibility(View.VISIBLE);coverImageView.se…

Android之Dialog提示Unable to add window -- token is not valid; is your activity running?

1、問題 Dialog奔潰提示Unable to add window -- token android.os.BinderProxy@b251dbc is not valid; is your activity running? 2、解決辦法 傳遞context到dialog的時候,要記得先判斷狀態是不是isFinishing或者isDestroyed狀態,這個時候就不要再去show相關的dialog了,…

nagios監控haproxy(借助腳本)

nagios監控haproxy(借助腳本) 修改后的腳本如下(需添加指示燈的狀態) # vi haproxy.sh #!/bin/bash Portnetstat -ntpl | grep haproxy | awk -F[:" "] {print $5} if [ $Port "1080" ];then echo "OK …

一、Qt初嘗試,做一個QT計算器《QT 入門到實戰》

學習目標 了解 qt 的基本信息了解 qt 的下載及安裝了解創建一個基本 qt 項目的流程了解信號與槽通過示例了解信號與槽的設置與編寫了解控件添加的方式了解控件如何使用代碼獲取其文本了解控件如何使用代碼設置其文本使用 connect 自定義信號與槽了解使用樣式修飾控件外觀了解使…

VS C#語言獲取輸入名稱的漢語拼音簡拼碼和全拼碼完整案例教程

結果預覽: 擴展閱讀: SQL語言獲取拼音碼:SQL Server編寫函數獲取漢字的拼音碼(簡拼) 文章目錄 1. 拼音碼類編寫2. 界面設計3. 前端調用4. 結果展示1. 拼音碼類編寫 打開Visual Studio,新建一個Winform項目,再添加一個類文件,命名為PYM。 鍵入如下代碼: using Syst…

iOS duplicate symbol for architecture arm64 解決辦法

導致這個問題的原因有多種: 1.重復定義了const常量。 2.多個第三方庫同時用到了某個函數庫。 暫時列舉這幾種,以后遇到了其他原因再加。轉載于:https://www.cnblogs.com/zhanglinfeng/p/5987077.html

WPF 實現星空效果

本文經原作者授權以原創方式二次分享,歡迎轉載、分享。原文作者:普通的地球人原文地址:https://www.cnblogs.com/tsliwei/p/6282183.htmlGithub地址:https://github.com/WPFDevelopersOrg/WPFDevelopers效果前陣子看到ay的蜘蛛網效…

data類型的Url的格式

data類型的Url的格式 一、data類型的簡介 所謂"data"類型的Url格式,是在RFC2397中提出的,目的對于一些“小”的數據,可以在網頁中直接嵌入,而不是從外部文件載入。例如對于img這個Tag,哪怕 這個圖片非常非…

C語言試題八十之統計單詞個數

??個人主頁:個人主頁 ??系列專欄:C語言試題200例目錄 ??推薦一款刷算法、筆試、面經、拿大公司offer神器 ?? 點擊跳轉進入網站 ?作者簡介:大家好,我是碼莎拉蒂,CSDN博客專家(全站排名Top 50),阿里云博客專家、51CTO博客專家、華為云享專家 1、題目 終端輸入一…