音视频开源基础 - ffmpeg命令( 二 )

  • -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.mp34.2.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 libx2654.2.4 提取音频数据
    # 保留封装格式ffmpeg -i test.mp4 -acodec copy -vn audio.mp4# 保留编码格式ffmpeg -i test.mp4 -acodec copy -vn test.aac# 强制格式ffmpeg -i test.mp4 -acodec libmp3lame -vn test.mp34.2.5 提取视频数据# 保留封装格式ffmpeg -i test.mp4 -vcodec copy -an video.mp4# 保留编码格式ffmpeg -i test.mp4 -vcodec copy -an test.h264# 强制格式ffmpeg -i test.mp4 -vcodec libx264 -an test_force.h2644.2.6 提取YUV-pix_fmt
    -s
    # 提取3秒数据,分辨率和源视频一致ffmpeg -i test_1280x720.mp4 -t 3 -pix_fmt yuv420p yuv420p_orig.yuv#提取3秒数据,分辨率转为320x240ffmpeg -i test_1280x720.mp4 -t 3 -pix_fmt yuv420p -s 320x240 yuv420p_320x240.yuv4.2.7 提取RGB【音视频开源基础 - ffmpeg命令】# 提取3秒数据,分辨率转为320x240ffmpeg -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.rgb4.2.8 提取PCMffmpeg -i buweishui.mp3 -ar 48000 -ac 2 -f s16le 48000_2_s16le.pcmffmpeg -i buweishui.mp3 -ar 48000 -ac 2 -sample_fmt s16 out_s16.wavffmpeg -i buweishui.mp3 -ar 48000 -ac 2 -codec:a pcm_s16le out2_s16le.wavffmpeg -i buweishui.mp3 -ar 48000 -ac 2 -f f32le 48000_2_f32le.pcmffmpeg -i test.mp4 -t 10 -vn -ar 48000 -ac 2 -f f32le 48000_2_f32le_2.pcm4.2.9 保持编码格式ffmpeg -i test.mp4 -vcodec copy -acodec copy test.tsffmpeg -i test.mp4 -codec copy test.ts4.2.10 改变编码格式ffmpeg -i test.mp4 -vcodec libx265 -acodec libmp3lame out.mkv4.2.11 改变帧率ffmpeg -i test.mp4 -r 15 -codec copy output.mp4(错误命令)ffmpeg -i test.mp4 -r 15 output2.mp44.2.12 修改视频码率ffmpeg -i test.mp4 -b 400k output_b.mkv(音频也被重新编码)ffmpeg -i test.mp4 -b:v 400k output_b.mkv4.2.13 修改音频码率ffmpeg -i test.mp4 -b:a 192k output.mp4# 不重新编码videoffmpeg -i test.mp4 -b:a 192k -vcodec copy output.mp44.2.14 修改音视频码率ffmpeg -i test.mp4 -b:v 400k -b:a 192k out.mp44.2.15 修改视频分辨率ffmpeg -i test.mp4 -s 480x270 output_480x270.mp44.2.16 修改音频采样率ffmpeg -i test.mp4 -ar 44100 output_44100hz.mp44.2.17 裁剪视频,并转化成ts和flv格式,然后合并视频流# 找三个不同的视频每个视频截取10秒内容ffmpeg -i JAVA.mp4 -ss 00:05:00 -t 10 -codec copy 1.mp4ffmpeg -i cpp.mp4 -ss 00:05:00 -t 10 -codec copy 2.mp4ffmpeg -i go.mp4 -ss 00:05:00 -t 10 -codec copy 3.mp4# 如果音视频格式不统一则强制统一为 -vcodec libx264 -acodec aac# 将上述1.mp4/2.mp4/3.mp4转成ts格式ffmpeg -i 1.mp4 -codec copy -vbsf h264_mp4toannexb 1.tsffmpeg -i 2.mp4 -codec copy -vbsf h264_mp4toannexb 2.tsffmpeg -i 3.mp4 -codec copy -vbsf h264_mp4toannexb 3.ts# 分离某些封装格式(例如MP4/FLV/MKV等)中的H.264的时候,需要首先写入SPS和PPS,否则会导致分离出来的数据没有SPS、PPS而无法播放 。H.264码流的SPS和PPS信息存储在AVCodecContext结构体的extradata中 。需要使用ffmpeg中名称为“h264_mp4toannexb”的bitstream filter处理# 转成flv格式ffmpeg -i 1.mp4 -codec copy 1.flvffmpeg -i 2.mp4 -codec copy 2.flvffmpeg -i 3.mp4 -codec copy 3.flv# 拼接视频流# 以MP4格式进行拼接# 方法1:只有第一个个视频,所以此法不行ffmpeg -i "concat:1.mp4|2.mp4|3.mp4" -codec copy out_mp4.mp4# 方法2:音频正常,视频从第二个视频开始就便缓慢,不同步ffmpeg -f concat -i mp4list.txt -codec copy out_mp42.mp4# 以TS格式进行拼接# 方法1:正常播放ffmpeg -i "concat:1.ts|2.ts|3.ts" -codec copy out_ts.mp4 # 方法2:正常播放ffmpeg -f concat -i tslist.txt -codec copy out_ts2.mp4# 以FLV格式进行拼接# 方法1:只有第一个个视频,所以此法不行ffmpeg -i "concat:1.flv|2.flv|3.flv" -codec copy out_flv.mp4 # 方法2:正常播放ffmpeg -f concat -i flvlist.txt -codec copy out_flv2.mp4# 修改音频编码ffmpeg -i 2.mp4 -vcodec copy -acodec ac3 -vbsf h264_mp4toannexb mod_1.tsffmpeg -i "concat:1.ts|2.ts|3.ts" -codec copy out1.mp4 结果第二段没有声音# 修改音频采样率ffmpeg -i 2.mp4 -vcodec copy -acodec aac -ar 96000 -vbsf h264_mp4toannexb 2.tsffmpeg -i "concat:1.ts|2.ts|3.ts" -codec copy out2.mp4 第二段播放异常# 修改视频编码格式ffmpeg -i 1.mp4 -acodec copy -vcodec libx265 1.tsffmpeg -i "concat:1.ts|2.ts|3.ts" -codec copy out3.mp4 # 修改视频分辨率ffmpeg -i 1.mp4 -acodec copy -vcodec libx264 -s 800x472 -vbsf h264_mp4toannexb 1.tsffmpeg -i "concat:1.ts|2.ts|3.ts" -codec copy out4.mp4


    推荐阅读