流媒体开发7ffmpeg基础命令
Posted 努力努力再努力~~
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了流媒体开发7ffmpeg基础命令相关的知识,希望对你有一定的参考价值。
一、ffmpeg命令参数说明
1.1主要参数:
- -i 设定输入流
- -f 设定输出格式(format)
- 如果指定了输出格式,后面文件名即便是mp4,输出的也是-f指定的flv,如果不指定则以后缀为准
ffmpeg -i Forrest_Gump_IMAX.mp4 -codec copy -ss 10 -t 10 -f flv out.mp4
- -ss 开始时间
- -t 时间长度
1.2音频参数:
- -aframes 设置要输出的音频帧数
- -b:a 音频码率
- -ar 设定采样率
- -ac 设定声音的Channel数
- -acodec 设定声音编解码器,如果用copy表示原始编解码数据必须被拷贝。
- -an 不处理音频
- -af 音频过滤器
ffmpeg -i test.mp4 -b:a 192k -ar 48000 -ac 2 -acodec libmp3lame -aframes 200 out2.mp3
提取出音频,修改编码方式为mp3,并且修改输出的码率、帧率、采样率、通道数
1.3视频参数:
- -vframes 设置要输出的视频帧数
- -b 设定视频码率
- -b:v 视频码率
- -r 设定帧速率
- -s 设定画面的宽与高
- -vn 不处理视频
- -aspect aspect 设置横纵比 4:3 16:9 或 1.3333 1.7777(分辨率没变,只是修改了显示的横纵比)
- -vcodec 设定视频编解码器,如果用copy表示原始编解码数据必须被拷贝。
- -vf 视频过滤器
ffmpeg -i test.mp4 -vframes 300 -b:v 300k -r 30 -s 640x480 -aspect 16:9 -vcodec libx265 out.265
更多参考:
http://www.ffmpeg.org/ffmpeg.html
二、ffmpeg命令提取音视频数据
- 保留封装格式
#只提取音频
ffmpeg -i test.mp4 -acodec copy -vn audio.mp4
#只提取视频
ffmpeg -i test.mp4 -vcodec copy -an video.mp4
- 提取视频
保留编码格式:ffmpeg -i test.mp4 -vcodec copy -an test_copy.h264
强制格式:ffmpeg -i test.mp4 -vcodec libx264 -an test.h264
- 提取音频
保留编码格式:ffmpeg -i test.mp4 -acodec copy -vn test.aac
强制格式:ffmpeg -i test.mp4 -acodec libmp3lame -vn test.mp3
三、提取像素格式和PCM数据
- 提取YUV
- 提取3秒数据,分辨率和源视频一致
ffmpeg -i test_1280x720.mp4 -t 3 -pix_fmt yuv420p yuv420p_orig.yuv
- 提取3秒数据,分辨率转为320x240
ffmpeg -i test_1280x720.mp4 -t 3 -pix_fmt yuv420p -s 320x240 yuv420p_320x240.yuv
- 提取RGB
- 提取3秒数据,分辨率转为320x240
ffmpeg -i test.mp4 -t 3 -pix_fmt rgb24 -s 320x240 rgb24_320x240.rgb
- RGB和YUV之间的转换
ffmpeg -s 320x240 -pix_fmt yuv420p -i yuv420p_320x240.yuv -pix_fmt rgb24 rgb24_320x240_2.rgb
- 提取PCM
ffmpeg -i buweishui.mp3 -ar 48000 -ac 2 -f s16le 48000_2_s16le.pcm
####-f s16le,pcm纯裸数据,ffmpeg -muxers | findstr PCM #查找对应的PCM封装格式
ffmpeg -i buweishui.mp3 -ar 48000 -ac 2 -sample_fmt s16 out_s16.wav
####-sample_fmt,ffmpeg -sample_fmts #查看当前支持的所有格式,wav有个头部,后面的pcm数据是一样的
ffmpeg -i buweishui.mp3 -ar 48000 -ac 2 -codec:a pcm_s16le out2_s16le.wav
codec:a和acodec是一样的,ffmpeg -encoders | findstr PCM
ffmpeg -i buweishui.mp3 -ar 48000 -ac 2 -f f32le 48000_2_f32le.pcm
ffmpeg -i test.mp4 -t 10 -vn -ar 48000 -ac 2 -f f32le 48000_2_f32le_2.pcm
- 不同命令sle生成的wav是一模一样的
- wav的可以直接使用ffplay播放,因为有头,pcm则需要指定采样率、通道、封装格式
四、命令转封装
- 保持编码格式:
ffmpeg -i test.mp4 -vcodec copy -acodec copy test_copy.ts
ffmpeg -i test.mp4 -codec copy test_copy2.ts
两条命令效果一样
- 改变编码格式:
ffmpeg -i test.mp4 -vcodec libx265 -acodec libmp3lame out_h265_mp3.mkv
需要注意有些封装格式不支持h265
- 修改帧率:
ffmpeg -i test.mp4 -r 15 -codec copy output.mp4 (错误命令,包含-codec copy帧率就不会被修改了)
ffmpeg -i test.mp4 -r 15 output2.mp4
- 修改视频码率:
ffmpeg -i test.mp4 -b 400k output_b.mkv
ffmpeg -i test.mp4 -b:v 400k output_bv.mkv
两条命令实现一样,并且音频也被重新编码了,编码成mkv默认支持的编码格式,不想改变音频需要加-acodec copy
- 修改音频码率:
ffmpeg -i test.mp4 -b:a 192k output_ba.mp4
如果不想重新编码video,需要加上-vcodec copy
- 修改音视频码率:
ffmpeg -i test.mp4 -b:v 400k -b:a 192k output_bva.mp4
- 修改视频分辨率:
ffmpeg -i test.mp4 -s 480x270 output_480x270.mp4
- 修改音频采样率:
ffmpeg -i test.mp4 -ar 44100 output_44100hz.mp4
以上是关于流媒体开发7ffmpeg基础命令的主要内容,如果未能解决你的问题,请参考以下文章