音频相关 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 就可以了。
2025-10-18 更新,一个批量转换视频的 bash
#!/bin/bash # 批量转码脚本:将指定目录下的视频转为省空间版本 # ====== 配置部分 ====== INPUT_DIR="F:\\火影忍者 全集4K 720集全" # 输入目录 OUTPUT_DIR="F:\\火影忍者 全集480p 720集全" # 输出目录 mkdir -p "$OUTPUT_DIR" # 如果不存在则创建 # 转码参数 SCALE="854:480" # 目标分辨率 FPS=30 # 目标帧率 CRF=28 # H.264 压缩质量 (23 高质量 / 30 体积小) PRESET="slow" # 编码预设 (slower=更省空间) AUDIO_BITRATE="64k" # 音频码率 # ====== 转码循环 ====== # 处理常见视频格式 for f in "$INPUT_DIR"/*.{mp4,mkv,avi,flv,mov}; do # 跳过不存在的匹配 [ -e "$f" ] || continue # 获取不带扩展名的文件名 filename=$(basename "$f") name="${filename%.*}" echo "正在转码:$filename ..." ffmpeg -i "$f" \ -vf "scale=$SCALE" \ -r $FPS \ -c:v libx264 -crf $CRF -preset $PRESET \ -c:a aac -b:a $AUDIO_BITRATE \ "$OUTPUT_DIR/${name}.mp4" echo "完成:$filename" rm -rf "$f" #转换后删除源文件 echo done echo "全部转码完成,输出目录:$OUTPUT_DIR"