1.命令行录一段wav,PCM数据
ffmpeg -f alsa -i hw:0,0 xxx.wav//录制
ffplay out.wav//播放
ffmpeg -f alsa -i hw:0,0 -ar 16000 -channels 1 -f s16le 1.pcm
ffplay -ar 16000 -channels 1 -f s16le 1.pcm
-ar freq 设置音频采样率
-ac channels 设置通道 缺省为1
2.将pcm压缩为aac
ffmpeg -f s16le -ar 16000 -ac 1 -i s16_1_16000.pcm output.aac
3.将aac转为pcm
ffmpeg -i out.aac -f s16le -ar 16000 -ac 1 -acodec pcm_s16le 16000_1_s16le.pcm
4.将aac通过网络传输
5.拉流网络数据
6.录一段原格式视频
7.录一段H264视频
ffmpeg -video_size 1280x720 -f x11grab -i "" -vcodec libx264 -preset ultrafast -f h264 -r 30 test.h264
使用RTP发送H264,接收
ffmpeg -re -i d:\videos80P.264 -vcodec copy -f rtp rtp://127.0.0.1:1234
ffplay -protocol_whitelist "file,udp,rtp" -i rtp://127.0.0.1:1234//拉流并播放
注意:ffplay的RTP协议默认是不启用的,需要添加-protocol_whitelist参数把RTP协议加入白名单。但是,执行了上面的命令可能会出错,因为ffplay使用RTP协议接收需要一个SDP文件,该文件定义了输入流的格式信息以及接收端的IP和端口号。
我们可以让FFmpeg在执行推流输出时导出一个SDP,命令行如下:
ffmpeg -re -i d:\videos80P.264 -vcodec copy -f rtp rtp://127.0.0.1:1234>test_rtp_h264.sdp
(SDP文件的信息说明:传输协议:RTP/AVP, 接收端IP:127.0.0.1, 接收端口号:1234 , PayloadType:96 ,视频格式:H264 )
以上面SDP文件为输入让ffplay打开流,命令行是:
ffplay -protocol_whitelist "file,udp,rtp" -i test_rtp_h264.sdp
8.用ffmpeg库录制一段音频数据
语音信号处理-基本概念(二):音频通道数、采样频率、采样位数、采样个数(样本数)、一帧音频的大小、每秒播放的音频字节大小、一帧的播放时长、音频重采样_语音录制采样率和采样率-CSDN博客
在Linux环境下使用ffmpeg将PCM音频数据编码成aac数据_linux ffmpeg pcm转acc-CSDN博客
9.重采样音频
两种重采样方法:
【FFmpeg实战】音频重采样_ffmpeg 音频采样率-CSDN博客
10.编码
11.传输
相关结构体:
AVFormatContext:FFMPEG结构体 - 简书 (jianshu.com) 主要和流的一些信息相关,混合流和文件流
AVDictionary:设置流的参数信息,主要是采集时候
问题:视频常见问题(四):视频花屏和绿屏 - 知乎 (zhihu.com)
视频编码出来一半正常,一半绿屏
我的问题GPT给我解决了,产生问题到解决问题用来不到三分钟,GPT真香