基于FFmpeg的视频播放器之九:使用SDL2播放音频
一.pcm文件准备
找一个mp3文件,然后用FFmpeg命令将它转换成pcm文件,这里使用NorwayForest-500.mp3(挪威的森林-伍佰)。
首先要使用ffmpeg查看mp3文件的一些信息,比如采样率、声道数等。
ffmpeg -i NorwayForest-500.mp3
从上图所示的信息,可以看到mp3文件采样率是44100Hz,双声道,在转换成pcm文件时要用到上面的信息。
ffmpeg -i NorwayForest-500.mp3 -acodec pcm_s16le -f s16le -ac 2 -ar 44100 NorwayForest-500.pcm
其中:
-acodec pcm_s16le 指定编码器
-f s16le 指定文件格式,是大端模式还是小端模式
-ac 2 指定通道数,2 代表双通道
-ar 44100 指定采样率,这里是 44100 Hz
在转换时要根据原文件的采样率和声道数进行转换,否则转换后的pcm文件播放声音不对,下面用ffplay播放一下。
ffplay -ar 44100 -channels 2 -f s16le -i NorwayForest-500.pcm
二.SDL音频播放
SDL(Simple DirectMedia Layer)是一套开放源代码的跨平台多媒体开发库,使用C语言写成。SDL提供了数种控制图像、声音、输出入的函数&#
基于FFmpeg的视频播放器之九:使用SDL2播放音频相关推荐
- 基于FFmpeg的视频播放器之十五:录像
一.效果 1.录制视频 2.播放录制的视频 二.原理 将上一篇基于FFmpeg的视频播放器之十四:remuxing中的代码直接用于录像是行不通的,会存在下列问题. 1.因为可以从任意时间点开始录制,此 ...
- 基于FFmpeg的视频播放器之十一:倍速播放
倍速播放通常有两种方式:一种是变速变调,另一种是变速不变调 一.变速变调 这种方法的原理就是音频重采样.比如说44100Hz采样率的音频,每秒钟有44100个采样点,如果我们要加速为200%播放,最简 ...
- 基于FFmpeg的视频播放器之十六:完结
学习FFmpeg个人认为是不需要买书的,只需利用好下面四种资源 1.优秀的博客,比如雷神的博客:https://blog.csdn.net/leixiaohua1020 2.FFmppeg的exanm ...
- 基于FFmpeg的视频播放器之十二:seek
seek是播放器的常用操作,也是衡量播放器好坏的重要标志之一. 一.效果 下面是对正在播放的4K视频执行seek操作 二.原理 1.av_seek_frame FFmpeg提供了av_seek_fra ...
- 基于FFmpeg的视频播放器之十三:抓图
抓图的话当然可以用QImage来实现,但是得先把yuv图像转成图像再通过QImage保持,比较麻烦.这里直接通过ffmpeg从视频流中抓取图片,也就是在yuv渲染之前抓取. 整个takeSnapsho ...
- 基于libVLC的视频播放器之九:添加抓图和录像功能
一.效果 抓图和录像的路径或文件名都可以设置.这里为了测试方便,都用的固定值. 如果编译出的源码提示: libvlc_media.h:368: error: C2065: "libvlc_m ...
- 从零开始学习音视频编程技术(七) 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 ...
- 基于libVLC的视频播放器之二:使用VLC-Qt播放RTSP流
此篇是 使用VLC浏览器插件播放RTSP流的姊妹篇. 一.直接使用libVLC libVLC是VLC media player多媒体框架的核心引擎和接口,开发者使用它能轻松的创建大量具有VLC特性的应 ...
- QT软件开发-基于FFMPEG设计视频播放器-解码音频(三)
QT软件开发-基于FFMPEG设计视频播放器-CPU软解视频(一) https://xiaolong.blog.csdn.net/article/details/126832537 QT软件开发-基于 ...
最新文章
- python元类编程_python元类编程
- Sicily 6768. Log Books 解题报告
- 【MyBatis框架】查询缓存-一级缓存原理
- c++读取文件夹下特定文件
- 安卓seekbar 怎么判断正负_如果没有万用表,我们要怎么区分电源DC线的正负极呢...
- C++Primer第5版学习笔记(一)
- 在idea或eclipse软件下配置Tomcat
- K3CLOUD表关联
- android7.0电话录音,芒果录音手机版-芒果通话录音app(电话通话录音软件)下载7.3.2官方安卓版-西西软件下载...
- 基于Sobel算法的边缘检测简介
- ionic的用法和作用
- Glide使用心得——加载图片出现浅绿色背景问题和Glide加载完成的监听设置
- 从MWC到AWE,中国柔性黑科技为消费电子产业撒下蒲公英的种子
- 三角形周长最短问题_最短路径问题之三角形的周长最小
- python对图片颜色校正,使用Python PIL更改图像色调
- Apple Silicon M1 MacBook Air上手详细评测M1的强大!
- 抖音头条小程序常见的问题
- 通信信号处理的一些基本常识
- spring cloud gateway实现https访问
- Elasticsearch(022):es常见的字段映射类型之地理形状类型(geo_shape、多边的复杂的地址形状)
热门文章
- Debian 10 使用 rz sz 命令
- Spring中注解实现原理
- 持续交付+springboot+k8s
- 快手短视频去水印方法
- 简约却不简单的科学原理闲谈(A Talk:Principles with simplicity but complicacy)
- 微型计算机任务名称,任务五微型计算机的硬件组成.ppt
- 【Xilinx FPGA】vivado工具下载安装
- zabbix mysql安装配置_Zabbix安装图解教程 | 系统运维
- 点云应用——三维空间边界点排序+机器人轨迹引导(1)
- linux下载m3u8工具,m3u8命令行下载工具