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

使用ffmpeg從視頻文件中提取音頻文件、視頻抽幀和切割視頻

這篇具有很好參考價值的文章主要介紹了使用ffmpeg從視頻文件中提取音頻文件、視頻抽幀和切割視頻。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

目錄

ffmpeg下載

使用ffmpeg從視頻文件中提取音頻文件

批量提取文件夾下多個視頻文件的音頻

使用ffmpeg從視頻文件中提取視頻幀

使用ffmpeg將按固定時長將視頻切割成多個小片段

將分割得到的視頻存放在新建文件夾下(這個我運(yùn)行的時候好像有點(diǎn)問題,音頻文件沒有存放在新建的文件夾中)

批量處理多個視頻

將輸出文存儲在文件夾中,命名與原視頻一致


ffmpeg下載

先下載ffmpeg軟件,可以參考下面這個鏈接,下載不了可以參考里面的評論區(qū),我下載的時候參考過評論區(qū)的方法

Windows下下載安裝ffmpeg - 知乎 (zhihu.com)

使用ffmpeg從視頻文件中提取音頻文件

MP3文件和WAV文件都是數(shù)字音頻格式,由于兩者的壓縮比例和編碼上面的差異,因此但是兩者在文件大小和音質(zhì)上有所不同。WAV是最接近無損的音樂格式,MP3文件通過對音頻進(jìn)行編碼,去掉了某些部分,從而節(jié)省了空間。

使用 -f wav 輸出wav格式音頻文件:

E:\>ffmpeg -i test.mp4 -vn -f wav output.wav

使用 -f mp3 輸出mp3格式音頻文件:

E:\>ffmpeg -i test.mp4 -vn -f mp3 output.mp3

使用 -c:a mp3 輸出mp3格式音頻文件:?

E:\>ffmpeg -i test.mp4 -vn -c:a mp3 output.mp3

試了一下提取mp3文件比提取wav文件慢一些,也不清楚兩種提取mp3文件的方法有什么區(qū)別

  • ?-i???輸入文件,test.mp4?為原始視頻文件;
  • ?-vn? 表示no video,輸出不包含視頻
  • ?-f???輸出文件格式
  • output.mp3 /output.wav為處理結(jié)果文件;

批量提取文件夾下多個視頻文件的音頻

在該目錄下創(chuàng)建一個批處理文件(例如 music.bat)

在批處理文件中添加以下命令:

for %%a in (*.mp4) do ffmpeg -i %%a -vn -f wav %%~na.wav

使用ffmpeg從視頻文件中提取音頻文件、視頻抽幀和切割視頻

使用ffmpeg從視頻文件中提取音頻文件、視頻抽幀和切割視頻

使用ffmpeg從視頻文件中提取視頻幀

ffmpeg -i output_000.mp4 -r 8 -f image2 ./%05d.jpg
ffmpeg -i output_000.mp4 -vf fps=fps=8 -f image2 ./%05d.jpg

上面兩個指令都可以

其中 -r 8 -vf fps=fps=8 均表示按 fps = 8 進(jìn)行抽幀?

得到的結(jié)果如下圖所示,但是我是將10s的視頻進(jìn)行提取,按理說應(yīng)該是10*8=80幀,但是最終剛得到的是86張圖片,這個10s的視頻是按照下面的方法將大視頻按照固定時長(10s)切割成小片段得到的,不太清楚這是怎么回事。

使用ffmpeg從視頻文件中提取音頻文件、視頻抽幀和切割視頻

使用ffmpeg將按固定時長將視頻切割成多個小片段

ffmpeg -i input_video.mp4 -c copy -map 0 -segment_time 60 -f segment output_%03d.mp4

這個命令將會把 "input_video.mp4" 這個視頻按照60秒的時長切割成多個小片段,每個小片段保存在以 "output_001.mp4", "output_002.mp4", "output_003.mp4" ...等格式命名的文件中。

命令的解釋:

  • -i input_video.mp4: 輸入視頻文件的路徑和文件名。
  • -c copy: 使用“copy”編解碼器,將視頻從輸入直接復(fù)制到輸出,不做任何修改。
  • -map 0: 將輸入文件中的所有流全部復(fù)制到輸出文件中。
  • -segment_time 60: 視頻分段的時間長度,這里設(shè)置為60秒。
  • -f segment: 指定輸出格式為分段的視頻格式。
  • output_%03d.mp4: 輸出文件的名稱格式,%03d 表示輸出文件名以 3 位數(shù)字為格式,例如 output_001.mp4。

這個命令將會在同級目錄下生成一系列的小片段視頻文件,可以根據(jù)需要自定義參數(shù)來滿足需求。

請注意,上述示例中的命令行參數(shù) -c copy 表示使用“copy”編解碼器,將視頻從輸入直接復(fù)制到輸出,不做任何修改。如果你需要對視頻進(jìn)行轉(zhuǎn)碼或其他處理,請根據(jù)需要修改命令行參數(shù)。

將分割得到的視頻存放在新建文件夾下(這個我運(yùn)行的時候好像有點(diǎn)問題,音頻文件沒有存放在新建的文件夾中)

import os
import subprocess

input_video = "input_video.mp4"
output_folder = os.path.splitext(input_video)[0]  # 獲取文件名去掉擴(kuò)展名的部分作為輸出文件夾名
os.makedirs(output_folder, exist_ok=True)  # 創(chuàng)建輸出文件夾,如果已經(jīng)存在則不會報(bào)錯

command = ["ffmpeg", "-i", input_video, "-c", "copy", "-map", "0", "-segment_time", "60", "-f", "segment", os.path.join(output_folder, f"{input_video}_%03d.mp4"), "-reset_timestamps", "1", "-strftime", "1", "-v", "warning", "-stats", "-hide_banner", "-nostdin", "-y", "-vcodec", "copy", "-acodec", "copy", "-copyts", "-avoid_negative_ts", "make_zero"]
subprocess.run(command)

批量處理多個視頻

首先,將 ffmpeg.exe 和所有需要處理的視頻文件放在同一個目錄下。

然后,在該目錄下創(chuàng)建一個批處理文件(例如 batch_process.bat)。

在批處理文件中添加以下命令:

for %%a in (*.mp4) do ffmpeg -i "%%a" -c copy -map 0 -segment_time 60 -f segment "output_%%~na_%%03d.mp4"

這個命令將對該目錄下的所有 mp4 文件進(jìn)行處理。假設(shè)我們有一個名為 "video1.mp4" 的視頻文件,該命令將生成以下文件:

  • output_video1_001.mp4
  • output_video1_002.mp4
  • output_video1_003.mp4
  • ...

其中 "video1" 是輸入文件的名稱。

保存并運(yùn)行該批處理文件,它將會自動對目錄下的所有 mp4 文件進(jìn)行處理,生成相應(yīng)的分段視頻文件。

注意:如果視頻文件不是以 mp4 格式結(jié)尾,可以將 *.mp4 替換為相應(yīng)的格式。同時,如果需要修改分段視頻文件的命名格式,可以根據(jù)自己的需求修改輸出文件名的格式。

將輸出文存儲在文件夾中,命名與原視頻一致

import glob
import os
import subprocess


def split_video(input_file, duration):
    output_folder = os.path.splitext(input_file)[0]
    if not os.path.exists(output_folder):
        os.makedirs(output_folder)

    command = ['ffmpeg', '-i', input_file, '-c', 'copy', '-f', 'segment', '-reset_timestamps', '1', '-segment_time',
               str(duration), '-map', '0', os.path.join(output_folder, 'output_%03d.mp4')]
    subprocess.call(command)


if __name__ == '__main__':
    duration = 10 # 單位是秒,這里設(shè)置每個片段的時長為10秒
    input_folder = r"E:\video"
    for input_video in glob.glob(os.path.join(input_folder, "*.mp4")):
        split_video(input_video, duration)

下面是代碼運(yùn)行的效果?

使用ffmpeg從視頻文件中提取音頻文件、視頻抽幀和切割視頻

使用ffmpeg從視頻文件中提取音頻文件、視頻抽幀和切割視頻文章來源地址http://www.zghlxwxcb.cn/news/detail-401705.html

到了這里,關(guān)于使用ffmpeg從視頻文件中提取音頻文件、視頻抽幀和切割視頻的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

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

相關(guān)文章

  • 使用FFMPEG庫封裝264視頻和acc音頻數(shù)據(jù)到MP4文件中

    使用FFMPEG庫封裝264視頻和acc音頻數(shù)據(jù)到MP4文件中

    ffmepeg 4.4 一段H264的視頻文件 一段acc格式的音頻文件 1.使用avformat_open_input分別打開視頻和音頻文件,初始化其AVFormatContext,使用avformat_find_stream_info獲取編碼器基本信息 2.使用avformat_alloc_output_context2初始化輸出的AVFormatContext結(jié)構(gòu) 3.使用函數(shù)avformat_new_stream給輸出的AVFormatContext結(jié)

    2024年02月11日
    瀏覽(20)
  • 使用FFMPEG分離mp4/flv文件中的264視頻和aac音頻

    使用FFMPEG分離mp4/flv文件中的264視頻和aac音頻

    ffmpeg 4.4 一個MP4或flv格式的視頻文件 大致分為以下幾個簡單步驟: 1.使用avformat_open_input 函數(shù)打開文件并初始化結(jié)構(gòu)AVFormatContext 2.查找是否存在音頻和視頻信息 3.構(gòu)建一個h264_mp4toannexb比特流的過濾器,用來給視頻avpaket包添加頭信息 4.打開2個輸出文件(音頻, 視頻) 5.循環(huán)讀

    2024年02月15日
    瀏覽(18)
  • 基于Whisper語音識別的實(shí)時視頻字幕生成 (一): 流式顯示視頻幀和音頻幀

    基于Whisper語音識別的實(shí)時視頻字幕生成 (一): 流式顯示視頻幀和音頻幀

    Whistream(微流)是基于Whisper語音識別的的在線字幕生成工具,支持rtsp/rtmp/mp4等視頻流在線語音識別 whishow(微秀)是python實(shí)現(xiàn)的在線音視頻流播放器,支持rtsp/rtmp/mp4等流式輸入,也是whistream的前端。python實(shí)現(xiàn)原理如下: (1) SPROCESS.run() 的三個子線程負(fù)責(zé):緩存流數(shù)據(jù),處理音

    2024年04月13日
    瀏覽(96)
  • 提取視頻文件里的音頻和無聲視頻

    一、提取視頻文件里的音頻: 二、提取視頻文件里的無聲視頻

    2024年02月11日
    瀏覽(30)
  • 怎么視頻提取音頻文件?分享這3種簡單實(shí)用的提取方法

    怎么視頻提取音頻文件?分享這3種簡單實(shí)用的提取方法

    不知道大家平時用手機(jī)刷視頻的時候,會不會被一些好聽的背景音樂給吸引了呢?這些背景音樂大多都是網(wǎng)友們自己合成導(dǎo)入視頻上傳的,可能在許多音樂平臺都不能找到音源播放。遇到這樣的情況,大家一定都很苦惱吧?但其實(shí),我們可以使用一些軟件將視頻中的音頻提取

    2023年04月09日
    瀏覽(20)
  • ffmpeg 截取切割視頻報(bào)錯

    ffmpeg 截取切割視頻報(bào)錯

    在用ffmpeg來截取只有視頻沒有音頻的mp4文件時,有一些視頻可以切割,少部分不能分割,遇到到了bug。 截取命令: 報(bào)錯如下: [mp3float @ 0000022b8220d300] Header missing Error while decoding stream #0:1: Invalid data found when processing input [mp3float @ 0000022b8220d300] Header missing Error while decoding stream

    2023年04月10日
    瀏覽(21)
  • 【音視頻】基于ffmpeg對視頻的切割/合成/推流

    【音視頻】基于ffmpeg對視頻的切割/合成/推流

    基于FFmpeg對視頻進(jìn)行切割、合成和推流的價值和意義在于它提供了一種高效、靈活且免費(fèi)的方式來實(shí)現(xiàn)視頻內(nèi)容的定制、管理和分發(fā)。通過FFmpeg,用戶可以輕松地剪輯視頻片段,根據(jù)需要去除不必要的部分或提取特定時間段的內(nèi)容,從而優(yōu)化觀看體驗(yàn)和提高內(nèi)容的價值。視頻

    2024年01月18日
    瀏覽(40)
  • 使用ffmpeg實(shí)現(xiàn)給音頻,視頻添加水印的操作

    使用ffmpeg實(shí)現(xiàn)給音頻,視頻添加水印的操作

    本文主要針對ffmpeg進(jìn)行整理,從而解決在現(xiàn)實(shí)中可能存在的問題。 這里參考的是 Java后臺用ffmpeg命令給視頻添加水印 - ^身后有尾巴^ - 博客園 (cnblogs.com) 1:先去ffmpeg官網(wǎng)下載其壓縮包??Download FFmpeg 下載,解壓到指定位置? 2.將壓縮包拷貝到你想的任意位置并解壓,正常解壓出

    2023年04月08日
    瀏覽(21)
  • 【FFmpeg】音視頻錄制 ① ( 查詢系統(tǒng)中 ffmpeg 可錄制的音視頻輸入設(shè)備 | 使用 ffmpeg 命令錄制音視頻數(shù)據(jù) | 錄制視頻數(shù)據(jù)命令 |錄制音頻數(shù)據(jù)| 同時錄制音頻和視頻數(shù)據(jù)命令 )

    【FFmpeg】音視頻錄制 ① ( 查詢系統(tǒng)中 ffmpeg 可錄制的音視頻輸入設(shè)備 | 使用 ffmpeg 命令錄制音視頻數(shù)據(jù) | 錄制視頻數(shù)據(jù)命令 |錄制音頻數(shù)據(jù)| 同時錄制音頻和視頻數(shù)據(jù)命令 )

    在 Windows 系統(tǒng)中 , 使用 ffmpeg 命令 錄制 音視頻 , 需要先獲取 系統(tǒng)的 音視頻設(shè)備 信息 , 錄制 音視頻 本質(zhì)上是從 系統(tǒng)音視頻設(shè)備 中獲取數(shù)據(jù) ; 執(zhí)行 命令 , 可以獲取 系統(tǒng)中 ffmpeg 可用的 DirectShow 音視頻輸入設(shè)備 ; 命令參數(shù)解析 : -list_devices true : 列出所有 ffmpeg 的 指定類型的可

    2024年04月25日
    瀏覽(31)
  • 【HarmonyOS】實(shí)現(xiàn)從視頻提取音頻并保存到pcm文件功能(API6 Java)

    ?【】 視頻提取類Extractor、視頻編解碼、保存pcm文件 【寫在前面】 在使用API6開發(fā)HarmonyOS應(yīng)用時,通常會開發(fā)一些音視頻媒體功能,這里介紹如何從視頻中提取音頻保存到pcm文件功能,生成pcm音頻文件后,就可使用音頻播放類AudioRenderer進(jìn)行播放了。這里主要介紹從視頻

    2024年02月15日
    瀏覽(21)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包