1、查询用法
ffmpeg -encoders | findstr mp3
ffmpeg -muxers | findstr pcm
------------音频转码-----------------
-b:a 音频码率
-ar 设定采样率
-ac 设定声音的channel数
acodec 设定声音编解码器
-an 不处理音频
-af 音频过滤器
ffmpeg -i kfct.mp4 -b:a 192l -ar 48000 -ac 2 -acodec libmp3lame -aframes 200 out.mp3
--------------------ffmpeg 提取PCM数据-----------------------------
ffmpeg -i test.mp3 -ar 48000 -ac 2 -f s16le 48000_2_s16le.pcm
-----------ffmpeg wav转pcm------单声道---16khz比特率------------
ffmpeg -i xingqi_left.wav -acodec pcm_s16le -f s16le -ac 1 -ar 16000 out.pcm
---------播放pcm------------
ffplay -ar 16000 -ac 1 -f s16le out.pcm
----------------录制--------------------------
windows先下载一个插件:Screen Captuer Recirder
----------------------------------音频格式转换---------------------------------------------
可以用ffmpeg将wav双声道音频转换成单声道音频
ffmpeg -i wendu.wav -ac 1 -map_channel 0.0.0 wendu_left.wav
ffmpeg -i wendu_left.wav 查看属性
Duration: 00:00:02.51, bitrate: 256 kb/s
Stream #0:0: Audio: pcm_s16le ([1][0][0][0] / 0x0001), 16000 Hz, mono, s16, 256 kb/s
---------wav转aac--------
ffmpeg -i input.wav -c:a aac -b:a 192k output.aac
这里的参数解释如下:
-
-i input.wav
指定输入文件。 -
-c:a aac
指定输出音频编码为AAC。 -
-b:a 192k
指定音频比特率为192kbps。你可以根据需求调整这个值。 -
output.aac
是输出文件的名称。
------------mp4 转yuv-------------------
该命令的作用是把所在路径下的video1.mp4文件转换为帧宽度为640,帧高度为272,像素格式为yuv420p的YUV文件:video1.yuv。
ffmpeg -i video1.mp4 -s 640x272 -pix_fmt yuv420p video1.yuv
------------mp4 转flv-------------------
ffmpeg -i Larkin_22_0529.mp4 -vcodec copy -acodec copy Larkin_22_0529.flv
ffmpeg -i Larkin_22_0529.mp4 -s 1280x720 -pix_fmt
-------------flv转h264 设置slice 为1---------------------
ffmpeg -i Larkin_22_0529.mp4 -vcodec libx264 -slices 1 arkin_22_0529.h264
-------------提取3秒 分辨率转为320x240-----------------
ffmpeg -i test_1280x720.mp4 -t 3 -pix_fmt yuv420p -s 320x240 yuv420p_320x240.yuv
播放yuv
ffplay -video_size 1280x720 -i my.yuv
---------------------转换视频分辨率--------------------------
ffmpeg -i input.mp4 -vf scale=1080:1920 -y output.mp4
ffmpeg -i Larkin_22_0529.flv -vf scale=480:640 -y output_640x480.flv
-vf scale后面就是跟宽:高,如果某一个值是-1代表保持原来的比例自动生成,比如 1080:-1就是宽为1080,高则自动计算,避免变形。
可以附加code参数,来改变视频音频的编码,比如 -c:v -c:a 等。
转隔行扫描
ffmpeg -i test1.mp4 -flags +ilme+ildct -alternate_scan 1 -top 0 output.mp4
ffmpeg -i stream_chn0.h264 -flags +ilme+ildct -alternate_scan 1 -top 0 output.h26
-------------------------------------------------------
使用查看视频帧详细信息的showinfo滤镜区分隔行扫描和逐行扫描
ffmpeg -y -i output.mp4 -vf showinfo -frames:v 2 -f flv null
------------------------画中画显示效果-------------------------
ffplay -i test_1920x1080.mp4 -vf "movie=test.mp4[sub];[in][sub]overlay=x=20:y=20[out]"
子画面保留前一帧:eof_action=0
子画面停止所有流:eof_action=1
ffplay -i input.mp4 -vf "movie=sub_320x240.mp4[sub];[in][sub]overlay=x=20:y=20:eof_action=1[out]"
终止最短的视频时全部终止(默认 false)
ffplay -i input.mp4 -vf "movie=sub_320x240.mp4[sub];[in][sub]overlay=x=20:y=20:shortest =1[out]"
----------------------ffmpeg 推流至srs 服务器-----ip地址为我本地ubuntu的地址-----------------
先在unbuntu搭建好srs服务器搭建,搭建过程我后面会写篇文章。
ffmpeg -re -i Larkin_22_0529.flv -vcodec copy -acodec copy -f flv -y rtmp://192.168.1.102/live/livestream
拉流:
ffplay rtmp://192.168.1.150/live/livestream
ffplay -x 1280 -y 720 rtmp://192.168.1.102/live/livestream
------------------------------rtsp服务器推流----------------------------------------------
h264推流:
ffmpeg -re -i Larkin_22_0529.mp4 -vcodec h264 -acodec aac -f rtsp -rtsp_transport tcp rtsp://192.168.1.102/live/test
拉流:
ffplay -x 1280 -y 720 -rtsp_transport tcp rtsp://192.168.1.102/live/test