zoukankan      html  css  js  c++  java
  • win10系统ffmpeg命令初体验

     

    一.下载配置

    1.1 官网下载地址:

    http://www.ffmpeg.org/download.html

    1.2 选择系统对应的压缩包下载
    (我这里是用window系统测试)

    点击跳转后页面如下,根据操作下载

    1.3 配置环境变量

    ① 把压缩包解压到指定的目录下

    ② 把文件名改为ffmpeg

    ③ 打开ffmpeg复制bin目录之前的路径,把路径配置到系统环境变量path下

    ④ 保存配置,打开cmd命令窗口输入:ffmpeg -version

    输入命令点击回车之后输出内容如下,则下载配置成功,否则请检查前面的步骤是否有错误

    二.ffmpeg中的文件了解

    2.1 ffmpegin

    中的三个命令行程序(这里一般存放可执行程序):

    ​ ffmpeg.exe: 用于操作,转换和流式传输多媒体内容

    ​ ffplay.exe:一个简洁的播放器

    ​ ffprobe.exe: 媒体参数分析工具

    2.2 ffmpegdoc

    大量的离线文档,英文

    2.3 ffmpegpresets

    存放一些预设

    2.4 LICENSE.txt

    版权许可

    2.5 README.txt

    声明文件

    三 命令调试

    (1) 查看ffmpeg的帮助说明,提供的指令
    • ffmpeg -h

    (2) 播放媒体的指令
    • ffplay video.mp4

    • ffplay music.mp3

    (3)常用快捷键

    按键"Q"或"Esc":退出媒体播放键盘方向键:媒体播放的前进后退点击鼠标右键:拖动到该播放位置按键"F":全屏按键"P"或空格键:暂停按键"W":切换显示模式

    (cls清空指令页面)

    (4)查看媒体参数信息
    • ffprobe video.mp4

    四.转换格式(文件格式,封装格式)

    (1)文件名可以是中英文,但不能有空格。
    (2)转换格式:

    mp4转avi:ffmpeg -i video.mp4 video_avi.avi

    flv转mp4:FFmpeg -i .3420001320000167_30000120000001.flv a.mp4

    ffmpeg把m3u8的视频下载到本地(如果是直播流,需要中断ffmpeg下载之后才可以播放): ffmpeg -i http://139.9.63.35:10000/sms/34020000002020000001/hls/34020000001320000462_34020000001320000001/34020000001320000462_34020000001320000001_live.m3u8 o3.mp4

    注意:目前没有找到边下载边播放的办法

    五.改变编码 上(编码,音频转码)

    (1)查看编解码器
    • ffmpeg -codecs

    (2)网站常用编码(1080p以下)

    MP4封装:H264视频编码+ACC音频编码(常用)WebM封装:VP8视频编码+Vorbis音频编码(谷歌的方案,软硬件支持程度不高,为了避开专利纠纷而设计的)OGG封装:Theora视频编码+Vorbis音频编码(完全开源的编码方案,无专利困扰)

    (3)无损编码格式.flac转换编码

    ffmpeg -i music_flac.flac -acodec libmp3lame -ar 44100 -ab 320k -ac 2 music_flac_mp3.mp3说明:acodec:audio Coder Decoder 音频编码解码器libmp3lame:mp3解码器ar:audio rate:音频采样率44100:设置音频的采样率44100。若不输入,默认用原音频的采样率ab:audio bit rate 音频比特率320k:设置音频的比特率。若不输入,默认128Kac: aduio channels 音频声道,2:声道数。若不输入,默认采用源音频的声道数

    概括:设置格式的基本套路-先是指名属性,然后跟着新的属性值

    查看结果属性ffprobe music_flac_mp3.mp3

    六.改变编码 中(视频压制)

    (1)视频转码

    ffmpeg -i video.mp4 -s 1920x1080 -pix_fmt yuv420p -vcodec libx264 -preset medium -profile:v high -level:v 4.1 -crf 23 -acodec aac -ar 44100 -ac 2 -b:a 128k video_avi.avi说明:-s 1920x1080:缩放视频新尺寸(size)-pix_fmt yuv420p:pixel format,用来设置视频颜色空间。参数查询:ffmpeg -pix_fmts-vcodec libx264:video Coder Decoder,视频编码解码器 ,libx264是H264的软件编码器-preset medium: 编码器预设。改变编码算法的精度,精度越高,编码速度越慢,cpu占用率越多,

    ​ 10个可选参数:ultrafast,superfast,veryfast,faster,fast,medium,slow,slower,veryslow,placebo

    -profile:v high :编码器配置,与压缩比有关。实时通讯-baseline,流媒体-main,超清视频-high-level:v 4.1 :对编码器设置的具体规范和限制,权衡压缩比和画质。-crf 23 :设置码率控制模式。constant rate factor-恒定速率因子模式。范围0~51,默认23。数值越小,画质越高。一般在8~28做出选择。-r 30 :设置视频帧率-acodec aac :audio Coder Decoder-音频编码解码器-b:a 128k :音频比特率.大多数网站限制音频比特率128k,129k其他参考上一个教程

    七.改变编码 下(码率控制模式)

    ffmpeg支持的码率控制模式:-qp -crf -b

    (1).qp

    -qp :constant quantizer,恒定量化器模式无损压缩的例子(快速编码)ffmpeg -i input -vcodec libx264 -preset ultrafast -qp 0 output.mkv无损压缩的例子(高压缩比)ffmpeg -i input -vcodec libx264 -preset veryslow -qp 0 output.mkv

    (2).crf(浮动的qp模式)

    -crf :constant rate factor,恒定速率因子模式,常用

    (3).b

    -b :bitrate,固定目标码率模式。一般不建议使用

    3种模式默认单遍编码

    VBR(Variable Bit Rate/动态比特率) 例子ffmpeg -i input -vcodec libx264 -preset veryslow outputABR(Average Bit Rate/平均比特率) 例子ffmpeg -i input -vcodec libx264 -preset veryslow -b:v 3000k outputCBR(Constant Bit Rate/恒定比特率) 例子... -b:v 4000k -minrate 4000k -maxrate 4000k -bufsize 1835k ...

    八.合并,提取音视频

    (1)单独提取视频(不含音频流,实际是将音频剔除)

    ffmpeg -i Av36.mp4 -vcodec copy -an video_silent.mp4

    (2)单独提取音频(不含视频流)

    ffmpeg -i Av36.mp4 -vn -acodec copy video_novideo.m4a

    (3)具备多个音频流的,如

    Stream #0:2[0x81]:Audio:ac3,48000Hz,5.1,s16,384kb/sStream #0:3[0x82]:Audio:ac3,48000Hz,5.1,s16,384kb/sStream #0:4[0x80]:Audio:ac3,48000Hz,5.1,s16,448kb/s

    针对性的单一的提取,例如提取第2条,用指令: -map 0:3

    (4)合并音视频

    ffmpeg -i 修仙.mp3 -i video_silent.mp4 -c copy video_merge.mp4

    九.截取,连接音视频

    (1)截取

    从前往后截取90秒: ffmpeg -i 修仙.mp3 -ss 00:00:30 -to 00:02:00 -acodec copy music_cutout.mp3截取60秒:ffmpeg -i music.mp3 -ss 00:00:30 -t 60 -acodec copy music_cutout60s.mp3

    -sseof : 从媒体末尾开始截取

    fmpeg -i in.mp4 -ss 00:01:00 -to 00:01:10 -c copy out.mp4ffmpeg -ss 00:01:00 -i in.mp4 -to 00:01:10 -c copy out.mp4ffmpeg -ss 00:01:00 -i in.mp4 -to 00:01:10 -c copy -copyts out.mp4

    把-ss放到-i之前,启用了关键帧技术,加速操作。但截取的时间段不一定准确。可用最后一条指令,保留时间戳,保证时间准确。

    (2)连接音视频

    ffmpeg -i "concat:a.mp3|修仙.mp3" -c copy out.mp4

    不同格式的音视频可以连接在一起,但不推荐不同格式连接在一起。建议使用Avidemux软件连接(开源免费,简单)

    十.截图,水印,动图

    (1)截图.

    截取第7秒第1帧的画面

    ffmpeg -i Av36.mp4 -ss 7 -vframes 1 video_image.jpg

    (2)水印

    ffmpeg -i Av36.mp4 -i logo.png -filter_complex "overlay=20:80" video_watermark.mp4

    (3)截取动图

    ffmpeg -i Av36.mp4 -ss 7.5 -to 8.5 -s 640x320 -r 15 video_gif.gif

    十一.录屏,直播

    (1)录屏

    windows命令: ffmpeg -f gdigrab -i desktop rec.mpg //MP4格式无法播放

    ubuntu命令: sudo ffmpeg -f fbdev -framerate 10 -i /dev/fb0 rec.mp4

    gdigrab :ffmpeg中的一个组件。只捕获视频.若要录屏,录音,获取摄像头,麦克风,换组件,推荐使用用OBS Studio软件(开源,免费,稳定)

    (2)直播

    ffmpeg -re i rec.mpg 按照网站要求编码 -f flv "你的rtmp地址/你的直播码"

    将rtmp流,以文件的形势保存到本地

      ffmpeg -i "rtmp://139.9.63.35:11935/hls/34020000001110000400_34020000001320000001" -acodec copy -vcodec copy -f flv -y D:SoftwarelibliDownloadRTMPtest2test.flv

    官方教程

    http://ffmpeg.org/ffmpeg-all.html

    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
  • 相关阅读:
    数据库范式
    java String.split()用法
    1.4 IoC控制反转
    利用shrinkwrap锁定依赖版本
    清晨开启电脑自动拉取项目更新
    JS如何获取屏幕、浏览器及网页高度宽度?
    Navigator 对象,能够清楚地知道浏览器的相关信息
    iconfont 转换为图标字体
    VS code的搜索、替换与正则替换
    点九图制作方法
  • 原文地址:https://www.cnblogs.com/KdeS/p/13566592.html
Copyright © 2011-2022 走看看