zoukankan      html  css  js  c++  java
  • ffmpeg命令的简单使用

    通用参数

    • -f fmt:指定格式(音频或者视频格式)
    • -i filename:指定输入文件名,在Linux下当然也能制定:屏幕录制或者摄像头
    • -y:覆盖已有文件
    • -t duration:指定时长
    • -fs limit_size:设置文件大小
    • -ss time_off: 从指定的时间(单位:S)开始,也支持hh:mm:ss[.xxx]的格式
    • -re:按照帧率发送,作为推流工具的时候一定要加入该参数,否则ffmpeg会按照最高速率向流媒体服务器不停发送数据。
    • -map:输出文件的流映射关系。

    视频参数

    • -b:指定比特率(bit/s),ffmpeg是自动使用VBR的,若指定了该参数则使用平均比特率。
    • -bitexact:使用标准比特率。
    • -vb:指定视频比特率(bits/s)
    • -r rate:帧速率(fps)
    • -s size:指定分辨率
    • -aspect aspect:设置视频长宽比
    • -croptop size:设置顶部切除尺寸
    • -cropbottom size:设置底部切除尺寸
    • -cropleft size:设置左切除尺寸
    • -cropright size:设置右切除尺寸
    • -padtop size:设置顶部补齐尺寸
    • -padbottom size: 设置底部补齐尺寸
    • -padleft size:设置左部补齐
    • -padright size:设置右部补齐
    • -padcolor color:补齐使用的颜色
    • -vn:取消视频的输出
    • -vcodec codec:强制使用codec编码方式('copy' 代表不进行重新编码)

    音频参数

    • -ab:设置比特率,对于MP3若要听高品质声音建议设置为单声道80Kbit/s,双声道160Kbit/s
    • -aq quality: 设置音频采样率(Hz)
    • -ac channel:声道数,1单声道,2立体声。
    • -an:取消音频轨
    • -acodec codec:指定音频编码('copy' 代表不进行重新编码)
    • -vol volume: 设置录制音量大小

    实践

    • 列出ffmpeg支持的所有格式
    ffmpeg -formats
    
    • 剪切一段音频或视频文件
    # 表示将文件input.mp4从第50s开始剪切20s的时间,输出到文件 output.mp4中
    ffmpeg -i input.mp4 -ss 00:00:50.0 -codec copy -t 20 output.mp4
    
    • 将视频文件切割为多个文件
    ffmpeg -i input.mp4 -t 00:00:50 -c copy small-1.mp4 --ss 00:00:50 -codec copy small-2.mp4
    
    • 提取一个视频文件中的音频文件
    ffmpeg -i input.mp4 -vn -acodec copy output.m4a
    
    • 使一个视频中的音频静音
    
    ffmpeg -i input.mp4 -an -vcodec copy output.mp4
    
    • 从MP4文件中抽取视频流导出为裸H264数据
    # 视频数据使用mp4toannexb
    ffmpeg -i input.mp4 -an -vcodec copy -bsf:v h264_mp4toannexb output.h264
    
    • 使用AAC音频数据和H264的视频生产MP4文件
    ffmpeg -i input.aac -i input.h264 -acodec copy -bsf:a aac_adtstoasc -vcodex copy -f mp4 output.mp4
    
    • 对音频文件的编码格式做转换
    ffmpeg -i input.wav -acodec libfdk_aac output.aac
    
    • 从WAV音频文件中导出PCM裸数据
    ffmpeg -i input.wav -acodec pcm_s16le -f s16le output.pcm
    
    • 重新编码视频文件,复制音频流,同时封装到MP4格式的文件中
    ffmpeg -i input.flv -vcodec libx264 -acodec copy output.mp4
    
    • 将MP4格式的视频转换成为gif格式的动图
    # 按照分辨比例不动宽度改为100(使用VideoFilter的 scaleFilter),帧率改为10(-r),只处理前5秒钟(-t)的视频,生成gif
    ffmpeg -i input.mp4 -vf scale=100:-1 -t 5 -r 10 output.gif
    
    • 将一个视频的画面部分生成图片
    # 每4秒钟截取一帧视频画面生成一张图片,生成的图片从 frames_0001.png开始一直递增下去
    ffmpeg -i input.mp4 -r 0.25 frames_%04d.png
    
    • 将一组图片生成一个gif
    ffmpeg -i frames_%04d.png -r 5 output.gif
    
    • 改变一个音频媒体文件中的音量
    # 将input.wav中的声音减小一半
    ffmpeg -i input.wav -af 'volume=0.5' output.wav
    
    • 淡入效果器的使用
    # 将input.wav文件中的前5s做一个淡入效果
    ffmpeg -i input.wav -filter_complex afade=t=in:ss=0:d=5 output.wav
    
    • 淡出效果器的使用
    # 将input.wav文件从200s开始,做5s的淡出效果
    ffmpeg -i input.wav -filter_complex afade=t=out:st=200:d=5 output.wav
    
    • 将两路声音合并
    # 将input.wav和accompany.wav两个文件进行mix,按照时间长度较短的音频文件的时间长度作为最终输出的output.wav的时间长度。
    ffmpeg -i input.wav -i accompany.wav -filter_complex amix=inputs=2:duration=shortest output.wav
    
    • 对声音进行变速但不变调效果器的使用
    # 将input.wav按照0.5倍的速度进行处理生成output.wav
    ffmpeg -i input.wav -filter_complex atempo=0.5 output.wav
    
    • 为视频增加水印
    # main_w代表主视频宽度,overlay_w 代表水印宽度,main_h代表主视频高度,overlay_h代表水印高度
    ffmpeg -i input.mp4 -i input.png -filter_complex '[0:v][1:v]overlay=main_w-overlay_w-10:10:1[out]' -map '[out]' output.mp4
    
    • 视频提亮效果器的使用
    # 提亮参数是brightness,取值范围是从-1.0到1.0,默认值是0
    ffmpeg -i input.flv -c:v libx264 -b:v 800k -c:a libfdk_aac -vf eq=brightness=0.25
               -f mp4 output.mp4
    
    • 视频增加对比度效果
    # 比度参数是contrast,取值范围是从-2.0到2.0,默认值是1.0
    ffmpeg -i input.flv -c:v libx264 -b:v 800k -c:a libfdk_aac -vf eq=contrast=1.5 -f mp4 output.mp4
    
    • 视频旋转效果
    ffmpeg -i input.mp4 -vf "transpose=1" -b:v 600k output.mp4
    
    • 视频裁剪
    ffmpeg -i input.mp4 -an -vf "crop=240:480:120:0" -vcodec libx264 -b:v 600k output.mp4
    
    • 将一张RGBA格式表示的数据转换为JPEG格式的图片
    ffmpeg -f rawvideo -pix_fmt rgba -s 480*480 -i input.rgb -f image2 -vcodec mjpeg
    output.jpg
    
    • 将一个YUV格式表示的数据转换为JPEG格式的图片
    ffmpeg -f rawvideo -pix_fmt yuv420p -s 480*480 -i input.yuv -f image2 -vcodec mjpeg output.jpg
    
    • 将一段视频推送到流媒体服务器上
    ffmpeg -re -i input.mp4 -acodec copy -vcodec copy -f flv rtmp://xxx
    
    • 将流媒体服务器上的流拉到本地
    ffmpeg -i http://xxx/xxx.flv -acodec copy -vcodec copy -f flv output.flv
    
    • 将两个音频文件以两路流的形式封装到一个文件中
    ffmpeg -i 131.mp3 -i 134.mp3 -map 0:a -c:a:0 libfdk_aac -b:a:0 96k -map 1:a -c:a:1 libfdk_aac -b:a:1 64k -vn -f mp4 output.m4a
    
  • 相关阅读:
    docker容器,镜像常用操作
    微信小程序登录状态
    微信小程序登录流程图
    GET和POST可传递的值到底有多大?
    php发送请求
    thinkphp 导入微信小程序加密解密库
    thinkphp 随机获取一条数据
    bootstrap row 行间距
    webstorm es6 语法报错
    Laravel
  • 原文地址:https://www.cnblogs.com/AliliWl/p/14990544.html
Copyright © 2011-2022 走看看