go视频提取音频
package main import (
"bytes"
"fmt"
"log"
"os"
"os/exec"
"strings"
) func main() { var inputPath string
var out bytes.Buffer fmt.Print("默认输出音频路径: d:/audio\n 请输入要转换的视频路径:")
fmt.Scan(&inputPath) fmt.Println(inputPath)
// 获取最后的字符串 得到名字
countSplit := strings.Split(inputPath, "\\")
fileName := countSplit[len(countSplit)-1]
nameArr := strings.Split(fileName,".")
outputName := nameArr[0]+".aac" // 输出路径 默认为c:\audio fmt.Println(outputName)
outPutDir := "d:/audio"
mkdirOutputDir(outPutDir) outputPath := outPutDir+"/"+outputName fileExist := FileExist(outputPath)
if fileExist == true {
deleteFile(outputPath)
} cmdArguments := []string{"-i", inputPath, outputPath}
cmd := exec.Command("ffmpeg", cmdArguments...) cmd.Stdout = &out
err := cmd.Run()
if err != nil {
log.Fatal(err)
} else{
fmt.Println("...... 转换成功.......")
}
//fmt.Printf("command output: %q", out.String()) } func deleteFile(fileName string) {
err := os.Remove(fileName) if err != nil {
//fmt.Println("删除已经存在的文件 "+fileName+" 失败")
} else {
//fmt.Println("删除已经存在的文件 "+fileName+" 成功")
}
}
func mkdirOutputDir(dir string) { exist, err := PathExists(dir)
if err != nil {
fmt.Printf("get dir error![%v]\n", err)
return
} if exist {
//fmt.Printf("已经存在目录 [%v]\n", dir)
} else {
//fmt.Printf("不存在目录[%v]\n", dir)
// 创建文件夹
err := os.Mkdir(dir, os.ModePerm)
if err != nil {
//fmt.Printf("创建目录失败[%v]\n", err)
} else {
//fmt.Printf("创建目录成功\n")
}
}
} // 判断文件夹是否存在
func PathExists(path string) (bool, error) {
_, err := os.Stat(path)
if err == nil {
return true, nil
}
if os.IsNotExist(err) {
return false, nil
}
return false, err
} func FileExist(path string) bool {
_, err := os.Lstat(path)
return !os.IsNotExist(err)
}
go视频提取音频的更多相关文章
- Linux下从视频提取音频的方法
Linux下可以利用mencoder将视频里的音频提取出来.方法如下: 1.首先安装mencoder.对于Ubuntu来说,软件仓库里就有mencoder,可直接输入如下命令安装 sudo apt-g ...
- [SimplePlayer] 4. 从视频文件中提取音频
提取音频,具体点来说就是提取音频帧.提取方法与从视频文件中提取图像的方法基本一样,这里仅列出其中的不同点: 1. 由于目的提取音频,因此在demux的时候需要指定的是提取audio stream Au ...
- FFmpeg进行视频帧提取&音频重采样-Process.waitFor()引发的阻塞超时
由于产品需要对视频做一系列的解析操作,利用FFmpeg命令来完成视频的音频提取.第一帧提取作为封面图片.音频重采样.字幕压缩等功能: 前一篇文章已经记录了FFmpeg在JAVA中的使用-音频提取&am ...
- 分享macOS平台好用的视频分割、合并视频、提取音频、分离音频、音频转码的工具CCVideo
CCVideo 是一款运行在macOS上可分割视频(可多段分割).合并视频.提取音频.分离音频.音频转码的工具,操作方便,只需简单几步,便可轻松完成. 下载地址
- C# 提取Word中插入的多媒体文件(视频、音频)
在Word中可将文件通过OLE对象嵌入的方式插入到文档,包括Word.excel.PDF.PPT.图片.宏文件.文件包等在内的多种文件类型.对文档中已插入的文档对象,也可通过本文中的方法提取出来另存到 ...
- Android开发 多媒体提取器MediaExtractor详解_将一个视频文件分离视频与音频
前言 此篇博客讲解MediaExtractor将一个视频文件分离视频与音频,如果你对MediaExtractor还没有一个笼统的概念建议先了解我的另一篇入门博客:https://www.cnblogs ...
- libavcodec是一款LGPL自由软件编解码库,用于视频和音频数据的编解码工作
http://zh.wikipedia.org/zh-cn/Libavcodec http://baike.baidu.com/view/856526.htm libavcodec是一款LGPL自由软 ...
- js的视频和音频采集
js的视频和音频采集 今天要写的,不是大家平时会用到的东西.因为兼容性实在不行,只是为了说明下前端原来还能干这些事. 大家能想象前端是能将摄像头和麦克风的视频流和音频流提取出来,再为所欲为的么.或者说 ...
- Python玩转各种多媒体,视频、音频到图片
我们经常会遇到一些对于多媒体文件修改的操作,像是对视频文件的操作:视频剪辑.字幕编辑.分离音频.视频音频混流等.又比如对音频文件的操作:音频剪辑,音频格式转换.再比如我们最常用的图片文件,格式转换.各 ...
随机推荐
- 【NOIP2013模拟】黑魔法师之门
题目描述 经过了16个工作日的紧张忙碌,未来的人类终于收集到了足够的能源.然而在与Violet星球的战争中,由于Z副官的愚蠢,地球的领袖applepi被邪恶的黑魔法师Vani囚禁在了Violet星球. ...
- LuoGu P1909 买铅笔???
题目描述 P老师需要去商店买n支铅笔作为小朋友们参加NOIP的礼物.她发现商店一共有 3种包装的铅笔,不同包装内的铅笔数量有可能不同,价格也有可能不同.为了公平起 见,P老师决定只买同一种包装的铅笔. ...
- 使用App Metrics实现性能监控
App Metrics监控需要安装InfluxDB时序数据库和Grafana可视化分析工具 1.安装InfluxDB 下载地址:https://portal.influxdata.com/downlo ...
- vue v-for渲染数据出现DOMException: Failed to execute 'removeChild' on 'Node': The node .....
在项目中,使用了vue的v-for渲染数组数据,在一次改变数组的时候出现异常报错,而实际的数组是已经变化过的了,页面卡死 网上找了一下原因,说是vue的DOM渲染的时候,删除之后DOM里面的还没有反应 ...
- redis实现计数器
用redis实现计数器 社交产品业务里有很多统计计数的功能,比如: 用户: 总点赞数,关注数,粉丝数 帖子: 点赞数,评论数,热度 消息: 已读,未读,红点消息数 话题: 阅读数,帖子数,收藏数 统计 ...
- elasticsearch备份和还原(基于hdfs)
备份和还原,为什么elasticsearch还需要备份呢,明明可以设置副本做到高可用,那怕啥呢? 其实在实际的生产环境中,一般最终的结果数据都是要备份的,这样的做的目的,就是能够以最快的速度还原数据, ...
- v-if和v-show的区别与使用
1.共同点: v-if 和 v-show 都能实现元素的显示隐藏. 2.不同点: v-if显示隐藏是将dom元素整个添加或删除,v-show元素隐藏时,会在dom节点中把该元素设置css属性为disp ...
- Spring系列之新注解配置+Spring集成junit+注解注入
Spring系列之注解配置 Spring是轻代码而重配置的框架,配置比较繁重,影响开发效率,所以注解开发是一种趋势,注解代替xml配置文件可以简化配置,提高开发效率 你本来要写一段很长的代码来构造一个 ...
- shiro-重写标签功能----shiro:hasPermission 标签重写
public abstract class ShiroAuthorizingRealm extends AuthorizingRealm{ private static final String OR ...
- tf.app.flags与argparse功能类似
https://blog.csdn.net/ei1990/article/details/76423277 tensorflow中tf.app.flags与argparse模块有点类似,通过它们都可以 ...