FFmpeg备忘录】的更多相关文章

av_dup_packet函数 av_dup_packet会为destruct指针为av_destruct_packet_nofree的AVPacket新建一个缓冲区,将原有的缓冲区数据拷贝至新缓冲区,置data的值为新缓冲区的地址,同时设置destruct指针为av_destruct_packet,而av_destruct_packet_nofree的意思就是在调用av_free_packet的时候,不能将缓冲区彻底释放,而调用av_dup_packet函数后,将desctruct指针改变后,…
本文主要记录ffmpeg探测输入源的几个点,方便以后查阅代码.虽然项目时间很赶,还是找个时间做个记录, 好记性不如不如备忘录,时间久了终是会忘记.Ffmpeg版本为4.0.2,版本很重要,Ffmpeg前后版本差距很大. 以264为例,探测输入源视频是否是H264编码的代码在h264dec.c文件中,该文件在libavformat目录下.文件内容 不多,截图如下. 图1 h264dec 代码截图 此外,有一个方法跟探测输入源format有关,具体的方法名是probe_codec 该方法在 liba…
在上一篇文章中,视频和音频是各自独立播放的,并不同步.本文主要描述了如何以音频的播放时长为基准,将视频同步到音频上以实现视音频的同步播放的.主要有以下几个方面的内容 视音频同步的简单介绍 DTS 和 PTS 计算视频中Frame的显示时间 获取Audio clock(audio的播放时长) 将视频同步到音频上,实现视音频同步播放 视音频同步简单介绍 一般来说,视频同步指的是视频和音频同步,也就是说播放的声音要和当前显示的画面保持一致.想象以下,看一部电影的时候只看到人物嘴动没有声音传出:或者画面…
AVPacket保存的是解码前的数据,也就是压缩后的数据.该结构本身不直接包含数据,其有一个指向数据域的指针,FFmpeg中很多的数据结构都使用这种方法来管理数据. AVPacket的使用通常离不开下面4个函数: 使用av_packet_alloc来创建一个AVPacket的实例,但该函数并不会为数据分配空间,其指向数据域的指针为NULL. 通常调用av_read_frame将流中的数据读取到AVPacket中. av_packet_free void av_packet_free(AVPack…
本文使用FFmpeg + SoundTouch实现将音频解码后,进行变调变速处理,并将处理后的结果保存为WAV文件. 主要有以下内容: 实现一个FFmpeg的工具类,保存多媒体文件所需的解码信息 将解码后的音频保存为WAV文件 SoundTouch的使用指南 1.从视频文件中提取音频保存为WAV文件 本小节实现从视频文件中提取音频,解码并保存为WAV文件. 在使用FFmpeg解码时,一般的流程是: 打开一个多媒体文件流 得到媒体流信息 查找视频.音频流的index 根据流的index查找相应的的…
/** * 备忘录模式 * @author TMAC-J * 用于存储bean的状态 */ public class MementoPattern { public class Memento{ private int lifeValue; private int grade; public int getLifeValue() { return lifeValue; } public void setLifeValue(int lifeValue) { this.lifeValue = lif…
如果直接找视频剪切和合并视频的软件,通常出来的都是大的视频编辑软件或者是有图形界面的剪切软件,大型一点的功能太多安装麻烦,小型一点的功能可能不齐全. 只是简单的剪切或者一下合并一下,还是ffmpeg这个命令行工具最方便和快速. 一.剪切视频 ffmpeg -i input.mp4 -ss 30 -c copy -to 40 output.mp4 剪切从30秒开始到40秒结束的视频. ffmpeg -i input.wmv -ss 30 -c copy -t 10 output.wmv 二.合并视…
访问者模式的实现是把作用于某种数据结构上的操作封装到访问者中,使得操作和数据结构隔离.而本文要介绍的备忘者模式与命令模式有点相似,不同的是,命令模式保存的是发起人的具体命令(命令对应的是行为),而备忘录模式保存的是发起人的状态(而状态对应的数据结构,如属性).下面具体来看看备忘录模式. 一. 备忘录(Memento)模式 从字面意思就可以明白,备忘录模式就是对某个类的状态进行保存下来,等到需要恢复的时候,可以从备忘录中进行恢复.生活中这样的例子经常看到,如备忘电话通讯录,备份操作操作系统,备份数…
一.介绍Vuex Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式.它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化,适合于构建中大型单页应用. 1.什么是状态管理模式? 看个简单的例子: <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name="viewport" content=&q…
http://ffmpeg.org/ 官网 ffmpeg(命令行工具) 是一个快速的音视频转换工具. 1.分离视频音频流 ffmpeg -i input_file -vcodec copy -an output_file_video //分离视频流 ffmpeg -i input_file -acodec copy -vn output_file_audio //分离音频流 2.视频解复用 ffmpeg –i test.mp4 –vcodec copy –an –f m4v test.264 f…