[工具类]视频音频格式转换

简介:

写在前面

在终端越来越多的情况下,对媒体文件的要求就需要统一了,由于一些移动端的浏览器对flash兼容性不好,所以就需要考虑对视频或者音频格式进行转化了。

FFmpeg是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。采用LGPL或GPL许可证。它提供了录制、转换以及流化音视频的完整解决方案。它包含了非常先进的音频/视频编解码库libavcodec,为了保证高可移植性和编解码质量,libavcodec里很多codec都是从头开发的。

工具类

http://ffmpeg.org/download.html 可以去这里进行下载。

使用的时候,需要一下文件

复制代码
    /// <summary>
    /// 转换工具类
    /// </summary>
    public static class FFmpegUtility
    {
        /// <summary>
        ///根目录
        /// </summary>
        public static string rootDirPath = AppDomain.CurrentDomain.BaseDirectory;
        /// <summary>
        /// ffmpeg路径
        /// </summary>
        private readonly static string _strFFmpegPath = Path.Combine(rootDirPath, "ffmpeg.exe");
        /// <summary>
        /// 将音频转换为mp3的bat文件路径
        /// </summary>
        private readonly static string _audioToMp3BatPath = Path.Combine(rootDirPath, "audiotomp3.bat");
        /// <summary>
        /// 获取视频第一帧图片的bat文件路径
        /// </summary>
        private readonly static string _videoImageBatPath = Path.Combine(rootDirPath, "videotomp4.bat");
        /// <summary>
        /// 组装进程信息
        /// </summary>
        /// <returns></returns>
        private static void BuildProcessStartInfo(string batPath, string sourPath, string savePath)
        {
            if (string.IsNullOrEmpty(batPath))
            {
                throw new ArgumentNullException("bat文件路径不正确");
            }
            if (!File.Exists(batPath))
            {
                throw new Exception("bat文件不存在");
            }
            ProcessStartInfo processStartInfo = new ProcessStartInfo();
            processStartInfo.FileName = batPath;
            processStartInfo.WindowStyle = ProcessWindowStyle.Hidden;
            processStartInfo.Arguments = _strFFmpegPath + " " + sourPath + " " + savePath;
            processStartInfo.ErrorDialog = false;
            processStartInfo.CreateNoWindow = true;
            Process.Start(processStartInfo);

        }
        /// <summary>
        /// 将音频文件转换为mp3
        /// </summary>
        public static void ConvertAudioToMp3OrMp4(string sourcePath, string savePath)
        {
            if (!File.Exists(_audioToMp3BatPath))
            {
                File.WriteAllText(_audioToMp3BatPath, "%1 -i %2 %3");
            }

            BuildProcessStartInfo(_audioToMp3BatPath, sourcePath, savePath);
        }
        /// <summary>
        /// 将视频文件转换为MP4
        /// </summary>
        /// <param name="sourcePath">视频文件</param>
        /// <param name="savePath">图片保存的路径</param>
        /// <param name="width">图片宽度</param>
        /// <param name="height">图片高度</param>
        /// <returns></returns>
        public static string GetVideoImage(string sourcePath, string savePath, int width, int height)
        {
            if (!File.Exists(_videoImageBatPath))
            {
                File.WriteAllText(_videoImageBatPath, "%1 -i %2 -y -f image2 -t 0.001 -s " + width + "x" + height + " %3");
            }
            BuildProcessStartInfo(_videoImageBatPath, sourcePath, savePath);
            return savePath;
        }

    }
复制代码

测试

复制代码
    class Program
    {
        static void Main(string[] args)
        {
            try
            {
                string exePath = AppDomain.CurrentDomain.BaseDirectory;
                string amrPath = Path.Combine(exePath, "1.amr");
                string mp3Path = Path.Combine(exePath, "23333333333333333.mp3");
                string mp4Path = Path.Combine(exePath, "o5.mp4");
                string mp4ImgPath = Path.Combine(exePath, "1111111111111111.png");
                FFmpegUtility.rootDirPath = exePath;
                FFmpegUtility.ConvertAudioToMp3OrMp4(amrPath, mp3Path);
                FFmpegUtility.GetVideoImage(mp4Path, mp4ImgPath, 500, 500);
                Console.WriteLine("转换成功");
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }
            Console.Read();
        }
复制代码

结果

总结

这里实现了amr转MP3,获取视频的缩略图。

博客地址: http://www.cnblogs.com/wolf-sun/
博客版权: 本文以学习、研究和分享为主,欢迎转载,但必须在文章页面明显位置给出原文连接。
如果文中有不妥或者错误的地方还望高手的你指出,以免误人子弟。如果觉得本文对你有所帮助不如【推荐】一下!如果你有更好的建议,不如留言一起讨论,共同进步!
再次感谢您耐心的读完本篇文章。http://www.cnblogs.com/wolf-sun/p/5048610.html

相关文章
|
Java Maven Docker
java 音频转为wav格式标准音频 | Java工具类
java 音频转为wav格式标准音频 | Java工具类
java 音频转为wav格式标准音频 | Java工具类
|
5月前
|
监控 Oracle Java
Java视频流提取与播放技术详解
Java视频流提取与播放技术详解
|
5月前
|
流计算 计算机视觉 索引
使用ffmpeg将视频转成HLS(m3u8)格式
HLS (HTTP Live Streaming)是苹果推出的视频流协议,HLS格式的视频包含一个m3u8文本文件,以及众多的.ts的视频片段,而m3u8文本文件的作用就是将这些ts片段索引起来。 因为HLS协议是将视频切分成很多小的ts片段,这些小片段很适合放到cdn上,有很多视频文章都使用了hls格式传输视频。今天我在这里教大家如何用ffmpeg将mp4格式的视频转为HLS(m3u8)格式。
245 0
|
6月前
|
编解码
D/A转换器的转换速度的介绍
D/A转换器的转换速度 引言: 数字到模拟(D/A)转换器是一种常见的电子设备,用于将数字信号转换为模拟信号。在许多应用中,D/A转换器的转换速度是一个重要的参数。本文将介绍D/A转换器的转换速度以及影响转换速度的因素。 一、什么是D/A转换器的转换速度 D/A转换器的转换速度是指从输入数字信号到输出模拟信号的转换时间。它通常以每秒转换的次数(即转换速率)来表示,单位为赫兹(Hz)。转换速度越高,D/A转换器能够更快地将数字信号转换为模拟信号。 二、影响D/A转换器转换速度的因素 1. D/A转换器的类型:不同类型的D/A转换器具有不同的转换速度。例如,串行式D/A转换器比并行式D/A转
127 0
|
8月前
D类音频功放
D类音频功放
106 0
|
8月前
|
Linux 计算机视觉 iOS开发
使用ffmpeg将MP4转换为WebM格式
使用ffmpeg将MP4转换为WebM格式
795 2
|
Java
Java实现将视频转换为mp4格式
Java实现将视频转换为mp4格式
1097 0
|
编解码
ffmpeg封装格式转换
ffmpeg封装格式转换
144 0
|
编解码
ffmpeg编码格式转换
ffmpeg编码格式转换
369 0
|
算法 图形学 数据安全/隐私保护
Unity 之 音频类型和编码格式介绍
Inspector窗口显示多个导入设置。这些设置决定了:加载行为,压缩行为,质量,采样率,以及是否支持双声道音频。
372 0
Unity 之 音频类型和编码格式介绍