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

ffmpeg系列學(xué)習(xí)——FFmpeg的音視頻處理

這篇具有很好參考價值的文章主要介紹了ffmpeg系列學(xué)習(xí)——FFmpeg的音視頻處理。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

1.音視頻的采樣率、采樣位深度和聲道數(shù)

音頻和視頻的采樣率、采樣位深度和聲道數(shù)是媒體文件中的重要參數(shù),它們會直接影響到音視頻的質(zhì)量和文件大小。下面對它們進行詳細解釋:

采樣率

采樣率指音頻每秒鐘采樣的次數(shù),用赫茲(Hz)表示。采樣率越高,音頻的還原度越高,音質(zhì)也越好,但同時文件大小也會增加。常見的采樣率有44.1kHz、48kHz、96kHz等。

采樣位深度

采樣位深度指音頻采樣時每個樣本的位數(shù),通常是8位、16位、24位、32位等。采樣位深度越高,音頻的動態(tài)范圍越大,能表現(xiàn)更細膩的音頻信息,但同時文件大小也會增加。

聲道數(shù)

聲道數(shù)指音頻的通道數(shù)量,常見的有單聲道(mono)和立體聲(stereo)兩種。立體聲一般包括左右兩個聲道,而單聲道只有一個聲道。通常來說,立體聲能夠更好地還原音頻的空間感,但同時文件大小也會增加。

在處理音視頻時,了解這些參數(shù)可以幫助我們更好地選擇合適的參數(shù)進行處理,從而得到更高質(zhì)量的音視頻文件。

2.音頻處理的常用命令

音頻處理是 FFmpeg 的主要功能之一。以下是一些常用的音頻處理命令:

  • 轉(zhuǎn)換音頻格式

將一個音頻文件轉(zhuǎn)換成另一個格式,可以使用下面的命令:

ffmpeg -i input.mp3 output.wav

上面的命令將 input.mp3 文件轉(zhuǎn)換成 output.wav 文件。

  • 剪切音頻

可以使用下面的命令剪切音頻:

ffmpeg -ss 00:00:10 -i input.mp3 -t 10 output.mp3

上面的命令將 input.mp3 文件從第 10 秒開始剪切,長度為 10 秒,并將結(jié)果保存到 output.mp3 文件。

  • 合并音頻

可以使用下面的命令合并多個音頻文件:

ffmpeg -i "concat:input1.mp3|input2.mp3" -acodec copy output.mp3

上面的命令將 input1.mp3 和 input2.mp3 文件合并成一個 output.mp3 文件。

  • 調(diào)整音量

可以使用下面的命令調(diào)整音頻的音量:

ffmpeg -i input.mp3 -filter:a "volume=2.0" output.mp3
  • 提取音頻

可以使用下面的命令從視頻中提取音頻:

ffmpeg -i input.mp4 -vn -acodec copy output.mp3

上面的命令從 input.mp4 文件中提取音頻,忽略視頻,直接將音頻保存到 output.mp3 文件。

3.視頻處理的常用命令

視頻處理是 FFmpeg 最常用的功能之一,以下是一些常用的視頻處理命令:

  1. 視頻轉(zhuǎn)碼命令
ffmpeg -i input.mp4 -vcodec copy -acodec copy output.avi

該命令將 input.mp4 轉(zhuǎn)換為 output.avi,同時保留原有的視頻和音頻編碼格式。

2.裁剪視頻命令

ffmpeg -i input.mp4 -ss 00:00:05 -t 00:00:10 -c:v libx264 -c:a copy output.mp4

該命令將 input.mp4 的第 5 秒開始裁剪,裁剪 10 秒鐘,視頻編碼為 H.264,音頻保持原格式,輸出為 output.mp4

3.視頻合并命令

ffmpeg -i "concat:input1.mp4|input2.mp4|input3.mp4" -c copy output.mp4

該命令將 input1.mp4、input2.mp4 和 input3.mp4 三個視頻文件合并為一個文件 output.mp4,視頻和音頻編碼格式保持不變。

4.添加水印命令

ffmpeg -i input.mp4 -i watermark.png -filter_complex "overlay=10:10" output.mp4

該命令將輸入視頻 input.mp4 和水印文件 watermark.png 進行疊加,疊加位置為視頻左上角偏移 10 像素的位置,輸出為 output.mp4。

5.提取視頻幀命令

ffmpeg -i input.mp4 -vf "select=eq(n\,0)" -q:v 3 -f image2 output.jpg

該命令將輸入視頻 input.mp4 的第一幀提取出來,輸出為 output.jpg,圖像質(zhì)量為 3。

4.音視頻混合和分離

1、音視頻混合

音視頻混合是指將多個音頻或視頻文件混合成一個文件,或?qū)⒁纛l和視頻文件合并成一個視頻文件。

合并視頻文件

將多個視頻文件合并成一個視頻文件,可以使用 FFmpeg 中的 concat 協(xié)議。下面是一個例子,將三個視頻文件 test1.mp4、test2.mp4 和 test3.mp4 合并成一個文件 output.mp4:

ffmpeg -i "concat:test1.mp4|test2.mp4|test3.mp4" -c copy output.mp4

其中,-i 參數(shù)指定輸入文件,使用 concat 協(xié)議,參數(shù)為需要合并的文件列表,多個文件之間使用 | 分隔;-c copy 參數(shù)指定復(fù)制視頻和音頻流,不進行轉(zhuǎn)碼。

合并音頻文件

將多個音頻文件合并成一個音頻文件,可以使用 FFmpeg 中的 concat 協(xié)議。下面是一個例子,將三個音頻文件 test1.mp3、test2.mp3 和 test3.mp3 合并成一個文件 output.mp3:

ffmpeg -f concat -i <(for f in test1.mp3 test2.mp3 test3.mp3; do echo "file '$PWD/$f'"; done) -c copy output.mp3

其中,-f concat 指定使用 concat 協(xié)議,-i 參數(shù)指定輸入文件,使用子進程的方式生成文件列表,-c copy 參數(shù)指定復(fù)制音頻流,不進行轉(zhuǎn)碼。

合并音視頻文件

將音頻和視頻文件合并成一個視頻文件,可以使用 FFmpeg 中的 -map 選項。下面是一個例子,將 test.mp4 視頻和 test.mp3 音頻合并成一個視頻文件 output.mp4:

ffmpeg -i test.mp4 -i test.mp3 -map 0:v:0 -map 1:a:0 -c:v copy -c:a copy output.mp4

其中,-i 參數(shù)指定輸入文件,-map 選項指定需要使用的視頻流和音頻流,-c:v copy 和 -c:a copy 參數(shù)分別指定復(fù)制視頻流和音頻流,不進行轉(zhuǎn)碼。

2、音視頻分離

音視頻分離是指將一個音視頻文件分離成音頻文件和視頻文件,可以分別對其進行處理或編輯。

分離視頻文件

將視頻文件分離成視頻流和音頻流,可以使用 FFmpeg 中的 -map 選項。下面是一個例子,將 test.mp4 分離成視頻文件 test_video.mp4 和音頻文件 test_audio.mp3:

ffmpeg -i test.mp4 -map 0:v:0 -c copy test_video.mp4 -map 0:a:0 -c copy test_audio.mp3

其中,-i 參數(shù)指定輸入文件,-map 選項指定需要使用的視頻流和音頻流,-c copy 參數(shù)指定復(fù)制流,不進行轉(zhuǎn)碼。

分離音頻文件

分離音頻文件是指將音頻流從視頻文件中分離出來,生成一個單獨的音頻文件,可以方便地對音頻進行編輯和處理。

ffmpeg -i input.mp4 -vn -acodec libmp3lame -q:a 4 output.mp3

其中,

-i input.mp4:指定輸入文件名,這里是一個視頻文件

-vn:表示不處理視頻流,只處理音頻流。

-acodec copy:表示復(fù)制音頻流,不進行重新編碼。

-acodec libmp3lame:表示將音頻流重新編碼為MP3格式。

-q:a 4:表示指定輸出音頻的質(zhì)量,值為0-9,數(shù)值越小,質(zhì)量越好,文件大小越大。

output.aac:指定輸出文件名,這里是一個AAC格式的音頻文件。

5.音視頻同步處理

音視頻同步處理是指將音頻和視頻的時間軸進行同步,使其在播放過程中達到良好的效果。在實際應(yīng)用中,由于采集設(shè)備、編碼器、網(wǎng)絡(luò)傳輸?shù)纫蛩氐挠绊懀纛l和視頻的時間軸往往會存在一定的偏差。因此,需要對音視頻進行同步處理,以保證播放效果的質(zhì)量。

在 FFmpeg 中,可以通過設(shè)置音頻和視頻的時間基(time base)和時間戳(timestamp)來實現(xiàn)音視頻同步處理。

時間基是一種時間單位,用于將時間戳轉(zhuǎn)換為實際的時間。在 FFmpeg 中,音頻和視頻的時間基可以通過音頻流和視頻流的 time_base 屬性獲取。時間戳則是指某個樣本在整個媒體流中的時間位置,一般表示為 PTS(Presentation Time Stamp)或 DTS(Decode Time Stamp)。在 FFmpeg 中,可以通過 AVPacket 結(jié)構(gòu)體中的 pts 和 dts 字段獲取時間戳。

具體的音視頻同步處理操作,可以參考以下步驟:

代碼層面

獲取音頻流和視頻流的 time_base 屬性,將其作為時間基。

AVRational audio_timebase = input_audio_stream->time_base;
AVRational video_timebase = input_video_stream->time_base;

獲取音頻流和視頻流的時鐘基準(zhǔn)值(時鐘基準(zhǔn)值指的是第一個樣本的時間戳),分別保存為 audio_clock 和 video_clock 變量。

double audio_clock = 0;
double video_clock = 0;
AVPacket packet;
int ret;
 
// 讀取音頻流和視頻流的樣本
while ((ret = av_read_frame(input_format_context, &packet)) == 0) {
    if (packet.stream_index == audio_stream_index) {
        // 處理音頻樣本
        // ...
        audio_clock = av_q2d(audio_timebase) * frame->pts;
    } else if (packet.stream_index == video_stream_index) {
        // 處理視頻樣本
        // ...
        video_clock = av_q2d(video_timebase) * frame->pts;
    }
 
    av_packet_unref(&packet);
}

計算音頻和視頻的時間差(diff),并根據(jù)時間差來調(diào)整音頻和視頻的時間戳。

double diff = video_clock - audio_clock;
 
if (diff > 0.1) {
    // 視頻比音頻快,需要將音頻的時間戳加上時間差
    // ...
} else if (diff < -0.1) {
    // 音頻比視頻快,需要將視頻的時間戳加上時間差
    // ...
}

將調(diào)整后的音頻樣本和視頻樣本寫入輸出文件。

AVFrame *audio_frame;
AVFrame *video_frame;
 
// 循環(huán)處理音頻樣本和視頻樣本,并寫入輸出文件
while (has_more_audio_samples || has_more_video_samples) {
    if (has_more_audio_samples) {
        // 處理音頻樣本
        // ...
        av_interleaved_write_frame(output_format_context, &

命令行

  1. 根據(jù)時間戳對齊音視頻

在進行音視頻合并時,需要對齊音頻和視頻的時間戳,保證它們在相同的時間播放。可以通過使用FFmpeg的"-itsoffset"參數(shù)來實現(xiàn)對齊。該參數(shù)用于指定一個時間偏移量,可以正數(shù)或負(fù)數(shù)。正數(shù)表示音頻比視頻快,負(fù)數(shù)表示視頻比音頻快。例如:

ffmpeg -i video.mp4 -itsoffset 0.5 -i audio.mp3 -c:v copy -c:a copy output.mp4

上述命令中,將音頻向后偏移0.5秒,使其與視頻對齊。

  1. 調(diào)整音頻速率

有時候,在進行音視頻處理時,可能需要改變音頻的播放速率??梢允褂肍Fmpeg的"atempo"過濾器來實現(xiàn)調(diào)整音頻速率。該過濾器接受一個浮點數(shù)參數(shù),表示音頻的播放速率。例如:

ffmpeg -i input.mp3 -filter:a "atempo=1.5" output.mp3

上述命令將音頻播放速率提高到1.5倍。

  1. 調(diào)整音頻音量

在進行音視頻處理時,有時候需要調(diào)整音頻的音量大小??梢允褂肍Fmpeg的"volume"過濾器來實現(xiàn)調(diào)整音量大小。該過濾器接受一個浮點數(shù)參數(shù),表示音頻的音量大小。例如:

ffmpeg -i input.mp3 -filter:a "volume=2.0" output.mp3

上述命令將音頻的音量調(diào)整為原來的2倍。

  1. 調(diào)整視頻速率

類似于調(diào)整音頻速率,有時候在進行音視頻處理時,需要調(diào)整視頻的播放速率??梢允褂肍Fmpeg的"setpts"過濾器來實現(xiàn)調(diào)整視頻速率。該過濾器接受一個時間參數(shù),表示視頻播放的速率。例如:

ffmpeg -i input.mp4 -filter:v "setpts=0.5*PTS" output.mp4

上述命令將視頻的播放速率降低到原來的一半。

  1. 調(diào)整視頻畫面大小

在進行音視頻處理時,有時候需要調(diào)整視頻的畫面大小??梢允褂肍Fmpeg的"scale"過濾器來實現(xiàn)調(diào)整視頻畫面大小。該過濾器接受一個字符串參數(shù),表示視頻的寬度和高度。例如:

ffmpeg -i input.mp4 -vf scale=640:360 output.mp4

上述命令將視頻的畫面大小調(diào)整為640x360。

原文 ffmpeg系列學(xué)習(xí)--FFmpeg的音視頻處理_ffmpeg itsoffset_ayou_llf的博客-CSDN博客

?文章來源地址http://www.zghlxwxcb.cn/news/detail-755933.html

★文末名片可以免費領(lǐng)取音視頻開發(fā)學(xué)習(xí)資料,內(nèi)容包括(FFmpeg ,webRTC ,rtmp ,hls ,rtsp ,ffplay ,srs)以及音視頻學(xué)習(xí)路線圖等等。

見下方!↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓

?

到了這里,關(guān)于ffmpeg系列學(xué)習(xí)——FFmpeg的音視頻處理的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

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

相關(guān)文章

  • 【FFmpeg】ffmpeg 命令行參數(shù) ⑧ ( 使用 ffmpeg 轉(zhuǎn)換封裝格式 | 音視頻編解碼器參數(shù)設(shè)置 | 視頻 幀率 / 碼率 / 分辨率 設(shè)置 | 音頻 碼率 / 采樣率 設(shè)置 )

    【FFmpeg】ffmpeg 命令行參數(shù) ⑧ ( 使用 ffmpeg 轉(zhuǎn)換封裝格式 | 音視頻編解碼器參數(shù)設(shè)置 | 視頻 幀率 / 碼率 / 分辨率 設(shè)置 | 音頻 碼率 / 采樣率 設(shè)置 )

    音視頻 文件 從 采樣 - 處理 - 得到原始數(shù)據(jù)幀隊列 - 音視頻編碼 - 音視頻包隊列 - 格式封裝 的過程如下 : 封裝格式 參考 【音視頻原理】音視頻 “ 采樣 - 編碼 - 封裝 過程 “ 和 “ 解封裝 - 解碼 - 播放 過程 “ 分析 ( 視頻采集處理流程 | 音頻采集處理流程 | 音視頻文件解封裝

    2024年04月17日
    瀏覽(101)
  • 音視頻開發(fā)-ffmpeg介紹-系列一

    音視頻開發(fā)-ffmpeg介紹-系列一

    目錄 一.簡介 FFmpeg框架的基本組成包含: 二.?FFmpeg框架梳理音視頻的流程?編輯 基本概念: 三.ffmpeg、ffplay、ffprobe區(qū)別 ? ? ?4.1 ffmpeg是用于轉(zhuǎn)碼的應(yīng)用程序? 4.2?fffplay是用于播放的應(yīng)用程序? ? ? ?4.3?ffprobe是用于查看文件格式的應(yīng)用程序 ? ? ?4.4?ffmpeg是用于轉(zhuǎn)碼的應(yīng)用程

    2024年02月16日
    瀏覽(32)
  • 音視頻剪輯|FFMPEG|windows10下的音視頻格式轉(zhuǎn)換,遮擋填充,GIF動圖制作,背景音頻抽取,替換

    音視頻剪輯|FFMPEG|windows10下的音視頻格式轉(zhuǎn)換,遮擋填充,GIF動圖制作,背景音頻抽取,替換

    最近對于音視頻和圖像的處理問題比較感興趣,但發(fā)現(xiàn)很多目前需要的功能要么需要付費但不會過于麻煩,要么比較麻煩,很可能某個功能實現(xiàn)需要安裝很多軟件 例如,視頻轉(zhuǎn)GIF動圖,該功能的實現(xiàn)要么使用Photoshop全家桶,要么找在線網(wǎng)站,或者是wps充會員,或者找其它方法

    2024年02月20日
    瀏覽(26)
  • [音視頻處理] FFmpeg使用指北1-視頻解碼

    本文將詳細介紹如何使用ffmpeg 4.4在C++中解碼多種格式的媒體文件,這些媒體文件可以是視頻、視頻流、圖片,或是桌面截屏或USB攝像頭的實時圖片。解碼文件后,還將每幀圖片轉(zhuǎn)換為OpenCV的Mat格式以供后續(xù)使用。 目錄 1 基于ffmpeg的媒體文件解碼 1.1 簡介 1.2 詳細代碼 2 ffmpeg函

    2024年02月07日
    瀏覽(26)
  • FFmpeg音視頻處理工具介紹及應(yīng)用

    FFmpeg音視頻處理工具介紹及應(yīng)用

    FFmpeg項目由 Fabrice Bellard在2000年創(chuàng)立。到目前為止,F(xiàn)Fmpeg項目的開發(fā)者仍然與VLC、MPV、dav1d、x264等多媒體開源項目有著廣泛的重疊。Ffmpeg(FastForward Mpeg)是一款遵循GPL的開源軟件,在音視頻處理方面表現(xiàn)十分優(yōu)秀,幾乎囊括了現(xiàn)存所有的視音頻格式的編碼,解碼、轉(zhuǎn)碼、混合

    2024年02月08日
    瀏覽(95)
  • JavaCV與FFmpeg:音視頻流處理技巧

    1. JavaCV簡介 JavaCV是一個開源的Java接口,為OpenCV、FFmpeg和其他類似工具提供了封裝。它允許Java開發(fā)者直接在他們的應(yīng)用程序中使用這些強大的本地庫,而無需深入了解復(fù)雜的本地代碼。JavaCV特別適用于處理圖像和視頻數(shù)據(jù),提供了一系列的功能,如圖像捕獲、處理和視頻編解

    2024年02月04日
    瀏覽(109)
  • 音視頻處理 ffmpeg中級開發(fā) H264編碼

    音視頻處理 ffmpeg中級開發(fā) H264編碼

    libavcodec/avcodec.h 常用的數(shù)據(jù)結(jié)構(gòu) AVCodec 編碼器結(jié)構(gòu)體 AVCodecContext 編碼器上下文 AVFrame 解碼后的幀 結(jié)構(gòu)體內(nèi)存的分配和釋放 av_frame_alloc 申請 av_frame_free() 釋放 avcodec_alloc_context3() 創(chuàng)建編碼器上下文 avcodec_free_context() 釋放編碼器上下文 解碼步驟 avcodec_find_decoder 查找解碼器 avcod

    2024年02月01日
    瀏覽(109)
  • 開源的跨平臺的音視頻處理工具FFmpeg

    FFmpeg是一個開源的跨平臺的音視頻處理工具,可以對音頻、視頻進行轉(zhuǎn)碼、裁剪、調(diào)節(jié)音量、添加水印等操作。 廣泛的格式支持。 FFmpeg能夠解碼、編碼、轉(zhuǎn)碼、復(fù)用、分離、流式傳輸、過濾和播放幾乎人類和機器所創(chuàng)造的任何內(nèi)容。它支持最古老且晦澀難懂的格式,也支持

    2024年02月15日
    瀏覽(88)
  • 強大開源的音視頻處理工具ffmpeg安裝與使用

    強大開源的音視頻處理工具ffmpeg安裝與使用

    FFmpeg 是一個開源的跨平臺音視頻處理工具,提供了豐富的命令行模式下音視頻處理功能,包括格式轉(zhuǎn)換、編解碼、過濾器應(yīng)用等。 由于 FFmpeg 支持的格式廣泛,且可用于多個平臺和操作系統(tǒng)(如 Windows、Linux、MacOS 等),因此它已成為許多多媒體應(yīng)用程序和服務(wù)的核心組件。

    2024年02月05日
    瀏覽(101)
  • 音視頻處理工具FFmpeg與Java結(jié)合的簡單使用

    音視頻處理工具FFmpeg與Java結(jié)合的簡單使用

    一、什么是FFmpeg FFmpeg是一套可以用來記錄、轉(zhuǎn)換數(shù)字音頻、視頻,并能將其轉(zhuǎn)化為流的開源計算機程序。采用LGPL或GPL許可證。它提供了錄制、轉(zhuǎn)換以及流化音視頻的完整解決方案。它包含了非常先進的音頻/視頻編解碼庫libavcodec,為了保證高可移植性和編解碼質(zhì)量,libavcod

    2024年02月11日
    瀏覽(91)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包