php利用ffmpeg提取视频中音频与视频画面的方法详解


Posted in PHP onJune 07, 2017

前言

FFmpeg的名称来自MPEG视频编码标准,前面的“FF”代表“Fast Forward”,FFmpeg是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。可以轻易地实现多种视频格式之间的相互转换。

FFmpeg的用户有Google,Facebook,Youtube,优酷,爱奇艺,土豆等。

组成

       1、libavformat:用于各种音视频封装格式的生成和解析,包括获取解码所需信息以生成解码上下文结构和读取音视频帧等功能,包含demuxers和muxer库;

       2、libavcodec:用于各种类型声音/图像编解码;

       3、libavutil:包含一些公共的工具函数;

       4、libswscale:用于视频场景比例缩放、色彩映射转换;

       5、libpostproc:用于后期效果处理;

       6、ffmpeg:是一个命令行工具,用来对视频文件转换格式,也支持对电视卡实时编码;

       7、ffsever:是一个HTTP多媒体实时广播流服务器,支持时光平移;

       8、ffplay:是一个简单的播放器,使用ffmpeg 库解析和解码,通过SDL显示;

提取视频中音频与视频画面

想要提取视频中的音频信息,首选的技术是ffmpeg,网上的绝大多数ffmpeg使用教程都是:

比如你的文件是 test.mp4

分离视频出来:ffmpeg -i test.mp4 -vcodec copy -an 视频流.avi

分离音频出来:ffmpeg -i test.mp4 -acodec copy -vn 音频流.mp3

用这样的方法,提取视频是没有问题的。但在提取音频时,我遇到了以下错误:

Invalid audio stream. Exactly one MP3 audio stream is required. could not write header for output file #0 (incorrect codec parameters ) invalid argument

其实,简单地提取音视频并不需要这么复杂,只要执行以下两行就行了:

分离视频出来:ffmpeg -i test.mp4 视频流.avi

分离音频出来:ffmpeg -i test.mp4 音频流.mp3

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对三水点靠木的支持。

PHP 相关文章推荐
php的urlencode()URL编码函数浅析
Aug 09 PHP
使用PHP编写的SVN类
Jul 18 PHP
php合并js请求的例子
Nov 01 PHP
对PHP语言认识上需要避免的10大误区
Jun 12 PHP
Mac系统下使用brew搭建PHP(LNMP/LAMP)开发环境
Mar 03 PHP
php遍历类中包含的所有元素的方法
May 12 PHP
PHP输出一个等腰三角形的方法
May 12 PHP
PHP使用CURL模拟登录的方法
Jul 08 PHP
yii2实现根据时间搜索的方法
May 25 PHP
PHP7新特性之抽象语法树(AST)带来的变化详解
Jul 17 PHP
PHP使用函数用法详解
Sep 30 PHP
PHP常用函数之根据生日计算年龄功能示例
Oct 21 PHP
PHP实现删除多重数组对象属性并重新赋值的方法
Jun 07 #PHP
PHP laravel中的多对多关系实例详解
Jun 07 #PHP
PHP基于正则批量替换Img中src内容实现获取缩略图的功能示例
Jun 07 #PHP
PHP框架laravel的.env文件配置教程
Jun 07 #PHP
理清PHP在Linxu下执行时的文件权限方法
Jun 07 #PHP
Laravel如何友好的修改.env配置文件详解
Jun 07 #PHP
PHP面向对象之事务脚本模式(详解)
Jun 07 #PHP
You might like
example2.php
2006/10/09 PHP
Discuz Uchome ajaxpost小技巧
2011/01/04 PHP
PHP echo,print,printf,sprintf函数之间的区别与用法详解
2013/11/27 PHP
destoon实现公司新闻详细页添加评论功能的方法
2014/07/15 PHP
PHP防止注入攻击实例分析
2014/11/03 PHP
php观察者模式应用场景实例详解
2017/02/03 PHP
PHP Laravel中的Trait使用方法
2019/01/20 PHP
通过Unicode转义序列来加密,按你说的可以算是混淆吧
2007/05/06 Javascript
JQuery中如何传递参数如click(),change()等具体实现
2013/04/28 Javascript
JavaScript创建对象的方式小结(4种方式)
2015/12/17 Javascript
微信小程序-详解数据缓存
2016/11/24 Javascript
jQuery实现的模拟弹出窗口功能示例
2016/11/24 Javascript
Javascript中类式继承和原型式继承的实现方法和区别之处
2017/04/25 Javascript
jQuery图片加载失败替换默认图片方法汇总
2017/11/29 jQuery
vue iView 上传组件之手动上传功能
2018/03/16 Javascript
vue.js this.$router.push获取不到params参数问题
2020/03/03 Javascript
[02:30]联想杯DOTA2完美世界全国高校联赛—北京站现场
2015/11/16 DOTA
Python爬虫使用Selenium+PhantomJS抓取Ajax和动态HTML内容
2018/02/23 Python
使用pandas对矢量化数据进行替换处理的方法
2018/04/11 Python
python pytest进阶之conftest.py详解
2019/06/27 Python
PyTorch预训练的实现
2019/09/18 Python
Tensorflow获取张量Tensor的具体维数实例
2020/01/19 Python
在python下实现word2vec词向量训练与加载实例
2020/06/09 Python
PyCharm中关于安装第三方包的三个建议
2020/09/17 Python
Python爬虫之Selenium警告框(弹窗)处理
2020/12/04 Python
Selenium关闭INFO:CONSOLE提示的解决
2020/12/07 Python
CSS3实现同时执行倾斜和旋转的动画效果
2016/10/27 HTML / CSS
基于HTML5的WebSocket的实例代码
2018/08/15 HTML / CSS
去加拿大的旅行和假期:Canadian Affair
2016/10/25 全球购物
加拿大拼图大师:Puzzle Master
2020/12/28 全球购物
Shell如何接收变量输入
2012/09/24 面试题
青春励志演讲稿范文
2014/08/25 职场文书
个人作风纪律整顿整改措施
2014/10/25 职场文书
Redis6.0搭建集群Redis-cluster的方法
2021/05/08 Redis
浅析JavaScript中的变量提升
2022/06/01 Javascript
pytest实现多进程与多线程运行超好用的插件
2022/07/15 Python