ffmpeg之-ffmpeg/ffplay/ffprobe(六)
ffplay常用命令
1、ffplay播放yuv文件
ffplay -f rawvideo -pix_fmt nv12 -video_size 640x480 -framerate 50 -i test.yuv
备注:如果不指定-pix_fmt,默认为yuv420p;如果不指定framerate 默认25fps
通过ffplay -pix_fmts 可以查看支持的播放格式
2、ffplay播放pcm文件
ffplay -ar 44100 -ac 2 -f f32le -i test_441_f32le_2.pcm
备注:播放采样率为44100,声道数为2 存储格式为32位小端序的音频数据
ffmpeg常用命令
-
ffmpeg -i input -c:v libx264 -preset slow -crf 22-c:a copy output.mkv
-c:v:表示使用的视频编码器库 这里表示使用x264库;copy代表视频不重新编码
-preset:设定x264的预设参数为 "slow";它可取值为"ultrafast,superfast,veryfast,
faster,fast,medium,slow,slower,veryslow,placebo";默认值为medium。预设参数代表了编码速度,编码速度越慢,压缩率则越大。
-crf:x264默认的质量和码率控制方式;x264的取值范围(0-51),默认值为23,值越小,压缩率越小(视频质量月好),压缩后文件越大;推荐的取值为(18-28) -
ffmpeg -i test_1280x720.MP4 -ss 00:00:00 -t 00:00:10 -pix_fmt yuv420p -vf scale=640:360 -f rawvideo test_640x360_yuv420p.yuv
MP4转换为YUV并同时进行压缩和截取 -
其它格式转换为PCM格式
ffmpeg -i test-mp3-1.mp3 -f s16le -ar 44100 -ac 2 -acodec pcm_s16le test_441_s16le_2.pcm
tips:pcm的不同格式之间不能相互转化 -
PCM格式转化为其它格式
ffmpeg -f s16le -ar 44100 -ac 2 -acodec pcm_s16le -i input.pcm output.wav -
音频和视频合成一个视频文件
ffmpeg -i test_1280x720_1.mp4 -i test-mp3-1.mp3 -map 0:v:0 -map 1:a:0 -c:a copy output.mp4 -
ffmpeg生成HLS的m3u8与ts片段
1、方式一:
ffmpeg -i cat.mp4 -c copy -bsf h264_mp4toannexb cat.ts
ffmpeg -i cat.ts -c copy -map 0 -f segment -segment_list playlist.m3u8 -segment_time 2 cat_output%03d.ts
2、方式二:
ffmpeg -i input.mp4 -c:v libx264 -c:a aac -strict -2 -f hls output.m3u8
-hls_time n: 设置每片的长度,默认值为2。单位为秒
-hls_list_size n:设置播放列表保存的最多条目,设置为0会保存有所片信息,默认值为5
-hls_wrap n:设置多少片之后开始覆盖,如果设置为0则不会覆盖,默认值为0.这个选项能够避免在磁盘上存储过多的片,而且能够限制写入磁盘的最多的片的数量
-hls_start_number n:设置播放列表中sequence number的值为number,默认值为0 -
从视频中提取图片并生成jpg
ffmpeg -i test.mp4 -r 30 -ss 00:00:20 -vframes 10 image-%3d.jpg
-ss 00:00:20 表示从20秒开始提取
-r 30 表示提取的图片序列帧率为30fps
-vframes 10 表示提取10帧 -
图片序列生成视频
ffmpeg -y -r 10 -i image%04d.jpg output.mp4
将当前目录下image001.jpg,image002.jpg,image003.jpg,......序列生成视频。视频帧率为10