音频相关 ALSA ffmpeg ffplay 命令用法 g7xx
采样率: samples
441100 每秒 DAC/ADC 采样的频率,声卡一般还支持 48k 8k 等模式。
通道:channels
2声道 左右声道 也有单声道的声音,5.1 声道
位数:
16bit 采样 DAC/ADC 深度 16bit 就是 65536 种声音层次
pcm 原始的 bit 流,如果是2声道 16bit,就是 左 16bit , 右 16bit 共 4个 Byte。
一个典型的 alsa 配置就按上面。
采样频率 支持音频带宽 输出码率 最低算法延迟
G711 8KHz 300 Hz ~ 3,400 Hz 64 Kbps <1ms
G722 16kHz 50 Hz ~ 7 kHz 64 Kbps 3ms
G722.1 16kHz 50 Hz ~7 kHz 24、32 Kbps 40ms
G722.1 C 32kHz 50 Hz~14 kHz 24、32、48Kbps 40ms
AAC-LD 48kHz 20 Hz-20kHz 48~64 Kbps 20ms
G729 8KHz
G 711 有2种编码格式也称为 PCMA A-Law PCMU μ -Law 。
推荐一个好用的 音频编辑及混音软件
https://www.audacityteam.org/
可以很方便的,查看 左右声道数据,可以播放原始 PCM 数据,也可以播放 PCMA PCMU 。
ffmpeg ffplay 命令用法
windows 版下载地址 https://ffmpeg.zeranoe.com/builds/
ffplay -decoders 显示所有解码器
ffplay -formats 显示所有格式
ffplay -layouts 显示所有layout
ffplay xxx.m4a
ffplay -f s16le -ar 8000 -ac 2 rec.pcm
ffplay 播放 g711 alaw 格式的PCM
ffplay -f s16le -ar 8000 -acodec pcm_alaw -ac 2 xxx.pcm
播放 g722
ffplay -f s16le -ar 16000 -acodec g722 -ac 2 xxx.g722
mp3 转 wav
ffmpeg -i xxx.mp3 -f wav xxx.wav
播放 wav
ffplay -f s16le -ar 44100 -ac 2 SunshineGirl.wav
mp3 转 g722
ffmpeg -i xxx.mp3 -ar 16000 -acodec g722 xxx.g722
g722 转 mp3
ffmpeg -i xxx.g722 xxx.mp3
mp3 调整采样率 声道数
ffmpeg -i 27.mp3 -ac 1 -ar 44100 new-27.mp3
mp3 转 aac 需要用到 fdk 库,需要安装编译好
ffmpeg -i 11.mp3 -c:a libfdk_aac 11.m4a
生成缩略图
ffmpeg -i xxx.avi -y -f mjpeg -ss 3 -t 1 -s 320x240 d:/1.jpg
查看视频信息
ffmpeg -i xxx.mp4
提取视频中的音频aac
ffmpeg -i 1.mp4 -vn -codec copy out.m4a
视频转码FHD 1080p 转 720p
ffmpeg -i xxx.mp4 -b:v 500k -s 1280x720 720p-md.mp4
提取音频:
ffmpeg -i 01.mkv -vn -codec copy out.m4a
ffmpeg -i out.m4a -f wav out.wav
ffmpeg -i out.wav out.mp3
hls流转 mp4
ffmpeg -i http://xxxx.com/2019.m3u8 -vcodec copy -acodec copy -absf aac_adtstoasc output.mp4
更新
ubuntu 16.0.4
ffplay 播放出错
Failed to initialize a hardware accelerated renderer: Couldn't find matching render driver
Failed to create window or renderer: Couldn't find matching render driver
因为 SDL 使用 OpenGL 进行渲染,所以需要安装库
sudo apt-get install libgl1-mesa-dev
sudo apt-get install libglew-dev
sudo apt-get install libglm-dev
安装上这几个库以后,重新编译 SDL2 就可以了。