基于FFmpeg的视频播放器之十一:倍速播放
倍速播放通常有两种方式:一种是变速变调,另一种是变速不变调
一.变速变调
这种方法的原理就是音频重采样。比如说44100Hz采样率的音频,每秒钟有44100个采样点,如果我们要加速为200%播放,最简单的方法是将解码出来的音频数据,均匀的扔掉一部分即可。解码出来44100个采样点,本来可以播放1s的时长,我扔掉一半,那么我们就只剩下 22050 个采样点,仍然按照 44100 的采样率去播放,那么我们就只能播放0.5s的时长,这样音频的播放速率就变为了200%。
如果原始采样率为44100Hz,播放速度为speed,那么重采样的采样率计算公式为:
newSamprate = 44100 * 100.0 / speed;
我们以 newSamprate的采样率对解码出来的原始音频进行重采样,然后仍然以原来的44100Hz的速率去播,就实现了音频的变速播放。音频的重采样,详见:基于FFmpeg的视频播放器之八:音频重采样
二.变速不变调
这种方法需借助第三方库,常用的有sonic和soundtouch,本客户端就是采用soundtouch加速音频播放,因为采用的同步策略的是视频同步到音频,因此当音频加速播放时,视频也会加速。
1.soundtouch
soundtouch是一个用C++编写的开源的音频处理库,可以改变音频文件或实时音频流的节拍(Tempo)、音调(Pitch)、速率(Rat
基于FFmpeg的视频播放器之十一:倍速播放相关推荐
- 基于FFmpeg的视频播放器之十五:录像
一.效果 1.录制视频 2.播放录制的视频 二.原理 将上一篇基于FFmpeg的视频播放器之十四:remuxing中的代码直接用于录像是行不通的,会存在下列问题. 1.因为可以从任意时间点开始录制,此 ...
- 酷播云html5倍速功能视频播放器,可以倍速播放视频的浏览器插件
可以倍速播放视频的浏览器插件 Video Speed Controller 是一款倍速播放视频的浏览器插件! 现在网站上播放的视频,基本上都可以实现倍速播放,但偶尔也有些网站上的视频:没有倍速播放功能 ...
- 基于FFmpeg的视频播放器之十六:完结
学习FFmpeg个人认为是不需要买书的,只需利用好下面四种资源 1.优秀的博客,比如雷神的博客:https://blog.csdn.net/leixiaohua1020 2.FFmppeg的exanm ...
- Ubuntu18.04下 安装SMPlyer视频播放器 设置倍速播放
安装方法 添加源,需要按回车键继续 sudo apt-add-repository ppa:rvm/smplayer 更新 sudo apt-get update 安装SMPlyer sudo apt ...
- 基于FFmpeg的视频播放器之十二:seek
seek是播放器的常用操作,也是衡量播放器好坏的重要标志之一. 一.效果 下面是对正在播放的4K视频执行seek操作 二.原理 1.av_seek_frame FFmpeg提供了av_seek_fra ...
- 基于FFmpeg的视频播放器之十三:抓图
抓图的话当然可以用QImage来实现,但是得先把yuv图像转成图像再通过QImage保持,比较麻烦.这里直接通过ffmpeg从视频流中抓取图片,也就是在yuv渲染之前抓取. 整个takeSnapsho ...
- ffplay使用ffmpeg滤镜实现倍速播放
第一章 自定义播放器接口 第二章 倍速播放(本章) ______第一节 sonic实现倍速播放 ______第二节 soundtouch实现倍速播放 ______第三节 ffmpeg滤镜实现倍速播放( ...
- 从零开始学习音视频编程技术(七) FFMPEG Qt视频播放器之SDL的使用
从零开始学习音视频编程技术(七) FFMPEG Qt视频播放器之SDL的使用 原文地址:http://blog.yundiantech.com/?log=blog&id=10 前面介绍了使用F ...
- 从零开始学习音视频编程技术(六) FFMPEG Qt视频播放器之显示图像
从零开始学习音视频编程技术(六) FFMPEG Qt视频播放器之显示图像 原文地址:http://blog.yundiantech.com/?log=blog&id=9 前面讲解了如何用FFM ...
最新文章
- Springboot结合 framework 加载静资源 出现404 问题解决 记录
- 【习题4-1 Uva1589】Xiangqi
- Eclipse中部署hadoop2.3.0
- 判断两线段是否相交——快速排斥与跨立实验
- 计算机一级办公软件试题,计算机一级《MS Office》练习题(含答案)
- 解决The total number of locks exceeds the lock table size错误
- java map的遍历
- 【转】STM32中的抢占优先级、响应优先级概念
- css 3小时从入门到略通
- 进度条上的小圆点怎么做_Android自定义带圆点的半圆形进度条
- 内容页超连接关键词的完美实现
- python3 format用法_python3 str.format()的使用
- Cocos2d-x 地图行走的实现3:A*算法
- HBase与Zookeeper数据结构查询
- paip.表格化CSV输出
- 思科网络综合实验(服务器,三层交换机,路由器)
- VS中的debug和releasse版本的区别
- PHP教程5-安装PHPNow
- 前端弹出对话框 js实现 ajax交互
- Docker - Dockerfile之FROM、ARG、LABEL、MAINTAINER、RUN、CMD指令详解
热门文章
- ajax java首字母检索_AJAX的拼音首字母查找对应中文的portlet
- 洛谷 P1551 亲戚
- RFID在固定资产盘点系统中的应用
- java哪些类重写equals方法_Java自定义类中重写equals方法
- PWM的周期和占空比是如何计算
- .so文件移动游戏破解范例
- 解决双击tomcat startup.bat的弹框一闪而过的问题,以及如何配置 jre_home 和 java_home
- shell_小技巧_掐头去尾法
- 【论文阅读】【综述】从Optical Flow到Scene Flow
- 推荐画UML图以及流程图的在线网站Site