1. 程式人生 > >從視訊中提取音訊

從視訊中提取音訊

首先,需要在網上下載一個方法ffmpeg.exe工具來處理視訊、音訊的轉換。

1、Flash格式像其他格式進行轉換

(1)、轉換成wmv/asf格式

ffmpeg -i (要轉換的flv檔案完整路徑) -f asf -vcodec (wmv1或wmv2) [-b 視訊位元速率] -acodec mp3

[-ab 音訊位元速率] (輸出的asf/wmv檔案完整路徑)

(2)、轉換成mpeg格式

ffmpeg -i (要轉換的flv檔案完整路徑) -f mpeg -vcodec mpeg1video [-b 視訊位元速率] -acodec mp2

[-ab 音訊位元速率] (輸出的mpg檔案完整路徑)

(3)、轉換成avi格式

ffmpeg -i (要轉換的flv檔案完整路徑) -f avi -vcodec (msmpeg4或msmpeg4v1或msmpeg4v2) [-b 視訊碼

率] -acodec mp3 [-ab 音訊位元速率] (輸出的avi檔案完整路徑

2、ffmpeg的七個技巧

(1)、音訊轉換

ffmpeg -i my_audio.wav my_audio.mp3-i 後為要轉換的音訊檔案,my_audio.mp3為目的音訊檔案(2)、視訊轉換ffmpeg -i my_video.mpeg -s 500×500 my_video.flv-i 後為源視訊檔案, -s 表示設定目標視訊檔案的

解析度 my_video.flv為目的視訊檔案(3)、從視訊中擷取圖片ffmpeg -i test.mpg image%d.jpg預設1s擷取25張圖片,可以通過-r設定每秒擷取的圖片數量-r fps 設定

幀率,也就是每秒擷取圖片的數量(預設25)ffmpeg -i test.mpg -r 1 image%d.jpg這樣子每1s擷取1張圖片還可以設定擷取間隔,起止-ss 設定時間

位置,語法:hh:mm:ss[.xxx]-t 時長:限制轉碼/捕獲視訊的時間,語法:hh:mm:ss[.xxx]ffmpeg -i test.mpg -r 25 -ss 00:00:10 -t 00:00:05 images%05d.png在第10秒開始,以每秒擷取

25張

圖片的速度,擷取5秒時長的圖片(4)、從視訊中採集音訊ffmpeg -i video.avi -f mp3 audio.mp3-f 強制選擇格式ffmpeg -i video.avi -vn audio.mp3-vn 取消擷取視訊(也就是隻輸出音訊檔案)(5)、建立截圖視訊ffmpeg -f x11grab -r 25 -s wxga -i :0.0 /tmp/outputFile.mpg0.0 是你X11 server的螢幕

顯示號碼,和DISPLAY一樣樣的.此條命令以每秒25幀的速率來擷取wxga螢幕視訊,當然這裡可以用-s 來設定視訊解析度,輸出檔案

是/tmp/outputFile.mpg。

(6)、用圖片製作視訊ffmpeg -f image2 -i img%d.jpg /tmp/a.mpg將`img001.jpg’, `img002.jpg'這種順序排列的圖片檔案轉製作為視訊(7)從webcam中擷取視訊ffmpeg -f video4linux2 -s 320x240 -i /dev/video0 out.mpg同時擷取音訊和視訊:ffmpeg -f oss -i /dev/dsp -f video4linux2 -s 320x240 -i /dev/video0 out.mpg/dev/video0為

視訊裝置 /dev/dsp為音訊裝置

[D:\software\MediaCoder\codecs\ffmpeg.exe, -i, d:\test\a.mp4, -ab, 64, -ac, 2, -ar, 22050, 

-b, 230, -r, 29.97, -y, d:\test\b.flv]

package pkg;  
  
import java.io.File;  
import java.util.ArrayList;  
import java.util.List;  
  
public class VideoToVoice {  
    public static List<String> L=new ArrayList<String>();  
    //獲取一個資料夾路徑dir下所有的子目錄地址(子目錄不是資料夾形式)  
    public static void listDirectory(File dir) {  
        if (!dir.exists()) {  
            throw new IllegalArgumentException("目錄" + dir + "不存在");  
        }  
        if (!dir.isDirectory()) {  
            throw new IllegalArgumentException(dir + "不是目錄");  
        }  
  
        File[] files = dir.listFiles();// 返回的是直接子目錄的抽象  
        if (files != null && files.length > 0) {  
            for (File file1 : files) {  
                if (file1.isDirectory()) {  
                    listDirectory(file1);  
                } else {  
                    L.add(file1.toString());  
                }  
            }  
        }  
    }  
  
    private static boolean processMP3(String path) {  
        String voiceName = path.substring(path.lastIndexOf("\\") + 1,  
                path.lastIndexOf("\\") + 3);  
        System.out.println(voiceName);  
        switch (voiceName) {  
        case "憤怒":  
            ffmpeg_process(voiceName, path);  
            break;  
        case "傷心":  
            ffmpeg_process(voiceName, path);  
            break;  
        case "驚訝":  
            ffmpeg_process(voiceName, path);  
            break;  
        case "快樂":  
            ffmpeg_process(voiceName, path);  
            break;  
        case "恐懼":  
            ffmpeg_process(voiceName, path);  
            break;  
        case "厭惡":  
            ffmpeg_process(voiceName, path);  
            break;  
        case "自然":  
            ffmpeg_process(voiceName, path);  
            break;  
        default:  
            break;  
        }  
  
        return true;  
    }  
  
    public static boolean ffmpeg_process(String Name, String path) {  
        String voiceNameNum = path.substring(path.lastIndexOf("\\") + 1,  
                path.indexOf("."));  
        String voiceName = path.substring(path.lastIndexOf("\\") + 1,  
                path.lastIndexOf("\\") +3);  
        String number = voiceNameNum.replaceAll(voiceName, "");  
        System.out.println(number);  
        int num = Integer.parseInt(number);  
        System.out.println(num);  
        List<String> commend = new java.util.ArrayList<String>();  
        commend.add("ffmpeg.exe");  
        commend.add("-i");  
        commend.add(path);  
        commend.add("-vn");  
        commend.add("D:\\迅雷下載\\多模態資源\\視訊中擷取的音訊" +"\\"+ Name + "\\" + Name + num  
                + ".mp3");  
        System.out.println(commend);  
        try {  
            ProcessBuilder builder = new ProcessBuilder();  
            builder.command(commend);  
            builder.start();  
            return true;  
        } catch (Exception e) {  
            e.printStackTrace();  
            return false;  
        }  
    }  
  
    public static void main(String[] args) {  
        listDirectory(new File("D:\\迅雷下載\\多模態資源\\人臉表情"));  
        System.out.println(L.size());  
        for (int i = 0; i < L.size(); i++) {  
            System.out.println(L.get(i));  
            processMP3(L.get(i));  
        }  
//      processMP3("D:\\迅雷下載\\多模態資源\\人臉表情\\傷心\\傷心10.avi");  
    }  
}  


相關推薦

視訊提取音訊

首先,需要在網上下載一個方法ffmpeg.exe工具來處理視訊、音訊的轉換。 1、Flash格式像其他格式進行轉換 (1)、轉換成wmv/asf格式 ffmpeg -i (要轉換的flv檔案完整路徑) -f asf -vcodec (wmv1或wmv2) [-b 

Android視訊提取音訊

     最近在做一款產品,需要從視訊中提取音訊。查了查資料發現了有FFMPEG,MP4Parser,Android自帶的解碼器。首先FFMPEG比較複雜據說也慢(來源於網際網路,我也不知道)然後就是Android自帶的Media Extractor類,不過該類用於4.3以

ffmpeg 視訊提取WAV格式的音訊

步驟 1.下載ffmpeg 2.把下載回來的ffmpeg解壓後的bin目錄路徑新增到環境變數裡面的path裡面 3. ffmpeg -i .[迅雷下載xunbo.cc]愛情公寓第二季EP20.rmvb -f wav -ar 16000 2-20.wav 引數說明 -i

Android視訊編輯器(五)音訊編解碼、視訊分離音訊音訊混音、音訊音量調節等

/** * 歸一化混音 * */ public static byte[] normalizationMix(byte[][] allAudioBytes){ if (allAudioBytes == null || allAudioBytes.length

視訊提取光流 UCF-101

美其名曰:站在巨人的肩膀上 稍微修改,輸出變成我想要的樣子 # main.py import numpy as np import optical_flow_prep as ofp import sys,os import pickle import scandir

多媒體開發(10):視訊提取圖片

小白:提取視訊中的圖片嗎?那很簡單,播放視訊再截圖就行啦。 播放視訊再截圖的做法,當然也可以。但是,手動地截圖會太累而且無法保證準確度,特別是需要反覆提取圖片時,或者需要提取“105秒那一瞬間的美女圖片”時,或者我需要每秒出一張圖片時,那有別的辦法嗎? 本文介紹,如何使用FFmpeg實現從視訊中提取圖片的

[SimplePlayer] 4. 視訊檔案提取音訊

提取音訊,具體點來說就是提取音訊幀。提取方法與從視訊檔案中提取影象的方法基本一樣,這裡僅列出其中的不同點: 1. 由於目的提取音訊,因此在demux的時候需要指定的是提取audio stream AudioStream = av_find_best_stream(pFormatCtx, AVMEDIA_T

提取視訊音訊 怎麼將視訊轉換為ape格式

怎麼將視訊中的視訊的音訊提取出來?小編在網上看視訊的時候,經常會被視訊中的背景音樂給吸引,但是又找不到背景音樂的音樂名稱,所以就沒法搜尋到相應歌曲。直到今天,到今天,小編我終於找到一個不用知道音樂名稱,就能把視訊中背景音樂給下載下來的方法。有時候我們在做視訊編輯

WebRTC:如何WebRTC提取音訊QoS程式碼(Windows下並編譯成dll庫檔案)

WebRTC版本:M66        WebRTC的語音QoS機制幾乎可以說是行業的標杆,其實現的方式主要融入了三種技術,包括丟包重傳(NACK),前向糾錯(FEC)以及原GIPS公司的網路均衡器(NetEqualizer,簡稱NetEQ)。前兩種都是在犧牲一定成本的

Linux下搭建基於ffmpeg的jave並且提取視訊音訊

1.安裝yasm-1.3.0解壓         tar zxvf yasm-1.3.0.tar.gzcd到解壓目錄下對進行:        ./configure         make        make install如果提示說缺少"automake-1.15",

用PDFMinerPDF提取文本文字

dfp port 下載 span setup 技術分享 code with converter 1、下載並安裝PDFMiner   從https://pypi.python.org/pypi/pdfminer/下載PDFMineer wget https://pypi.p

H.264SPS提取視頻寬高

ufs ase tel .html eva depth spl evel rip H.264有兩種封裝模式: (1)annexb模式:傳統模式,使用start code來分隔NAL, SPS和PPS是在ES流的頭部; (2)mp4模式:沒有start code,使用NALU

How to extract pcd from a rosbag? 如何rosbag提取pcd

disk div files org class ont int osb rac 4.1 bag_to_pcd Reads a bag file, saving all ROS point cloud messages on a specified topic as PCD

【hive】url提取需要的部分字串

本人菜鳥一隻,如果有什麼說錯的地方還請大家批評指出!! 事情是這樣的,hive的A表中,有url這樣的一個欄位,我想要提取這個欄位中的某一部分(這不就是擷取字串嘛)。但是substring肯定是滿足不了我的需求的,自己寫hive的udf也不太現實(用最簡單的方式完成任務,才會讓後來的維護變得更加

利用python_opencv和dlib實現視訊抓取人臉照片並儲存(親測有效)

系統:win10 編譯環境:pycharm python庫:cv2、dlib(自己安裝) 程式碼: import dlib import cv2 # 載入並初始化檢測器 detector = dlib.get_frontal_face_detector() camera = cv2.

Excel怎樣字串提取位置和長度不固定的數字

最近上課的時候,常常有學員諮詢怎樣從Excel字元中提取位置和長度都不固定的數字,今天我們分兩種情況來聊一聊對應的解決方案。 情況1:數字前後有特定的分隔符 如果數字前後有特定的分隔符,比如()、##等分隔符,那麼我們可以通過查詢這些分隔符的位置,來定位到數字的位置。 比如下圖所示的這個

按空格和按換行檔案提取資料

1,讀取檔案的類為ifstream,其中“i”代表“in”,針對變數而言,ifstream所在的標頭檔案為fstream; 2,ifstream中有open方法,可以開啟檔案; 3,ifstream中有>>方法,可以以空格為分割符,以換行為結束符讀取資料; 4,iostrea

java視訊獲截幀生成靜態圖與GIF,圖片旋轉

pom: <!-- 視訊截圖 --> <dependency> <groupId>org.bytedeco</groupId> <artifactId>javacv-platform</art

實踐案例:使用開源工具視訊構建人臉檢測模型(Python實現)

介紹 近年來,計算機視覺這個奇妙的領域已經發展到獨樹一幟的地步。在世界各地已經有大量的應用程式在廣泛使用。 我在這個領域最喜歡的事情之一是我們的社群擁抱開源概念的想法。即使是大型科技巨頭也願意與每個人分享新的突破和創新,這樣技術就不會成為“富人的專利”。 其中一種技術是人臉檢測,它在實際

如何字串提取非零數字並求和

執行到console.readline時出現錯誤。求高手幫忙解答。如下圖所示datagridview如何根據訂單表自動更新非手工錄入訂單明細表的插入更改刪除執行到console.readline時出現錯誤。求高手幫忙解答。如下圖所示datagridview如何根據訂單表自動更