FFmpeg主页:http://ffmpeg.org/
环境:
- 版本:ffmpeg-20200628-4cfcfb3-win64-static
- 系统:Win10 家庭版 x64 1909 18363.900
- CPU:Intel i5-8250U
使用
- 命令示例(下拉文章有详细使用)
## 将整个视频转为gif
ffmpeg -i C:/ls/video/ls.mp4 -y C:/ls/video/ls.gif
## 将视频的前10s转为webp
ffmpeg -i C:/ls/video/ls.mp4 -t 10 -r 2 -y C:/ls/video/ls.webp
-
相关参数说明
-
-y
覆盖输出文件而无需询问。 -
-i
输入文件路径(支持URL) -
-t
持续时间(输入/输出)90
/90.0
/90000ms
/00:01:30
均表示90秒- 在输入路径-i参数之前:限制读取的内容持续时间。
- 在输出路径之前:限制输出的内容持续时间。
-
-ss
起点位置(输入/输出)90
/90.0
/90000ms
/00:01:30
均表示90秒- 在输入路径-i参数之前:读取起点位置。
- 在输出路径之前:输出写入起点位置,在此之前的转换将不写入。
-
-sseof
从结束位前推的起点位置(输入)-90
表示结束前的90秒起点位置 -
-vframes
帧数(输出)- 指定输出的总帧数
-
-r
帧率(输入/输出)15
即表示15帧每秒- 在输入路径-i参数之前:强制以指定帧率解析视频,忽略原时间信息。可理解为变速。
- 在输出路径之前:设定输出帧率。
-
-s
设置尺寸大小(输入/输出)480x320
表示宽480px*高320px- 在输入路径-i参数之前:参阅原文档。
- 在输出路径之前:设定输出尺寸。
-
-vf
过滤器(输出)- 详细文档:http://ffmpeg.org/ffmpeg.html#filter_005foption
-
scale=640:ih*640/iw
指定宽为640进行等比缩放
-
-f
指定格式(输入/输出)- 强制输入/输出文件格式。不使用则默认由输入内容解析/输出文件名推测。
-
-map_metadata
元数据设置(输出)-
-map_metadata -1
可清空元数据
-
-
-accurate_seek
启用使用-ss选项(输入) -
-lossless
webp无损开关-
0
/1
默认0 - webp参数细节 http://ffmpeg.org/ffmpeg-codecs.html#toc-libwebp
-
-
-
技巧
- 默认输入输出为时间基准对齐
- 输出帧数/输出帧率 = 输出时长 = 转换部分在原视频的时长
- 可通过设定输入帧率来改变时间比例
-
-t
和-vframes
同时使用时,将忽略-vframes
- 默认输入输出为时间基准对齐
使用示例
- 组件信息
ffmpeg version git-2020-06-28-4cfcfb3 Copyright (c) 2000-2020 the FFmpeg developers
built with gcc 9.3.1 (GCC) 20200621
configuration: --enable-gpl --enable-version3 --enable-sdl2 --enable-fontconfig --enable-gnutls --enable-iconv --enable-libass --enable-libdav1d --enable-libbluray --enable-libfreetype --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-libopus --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libsrt --enable-libtheora --enable-libtwolame --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxml2 --enable-libzimg --enable-lzma --enable-zlib --enable-gmp --enable-libvidstab --enable-libvmaf --enable-libvorbis --enable-libvo-amrwbenc --enable-libmysofa --enable-libspeex --enable-libxvid --enable-libaom --enable-libgsm --disable-w32threads --enable-libmfx --enable-ffnvcodec --enable-cuda-llvm --enable-cuvid --enable-d3d11va --enable-nvenc --enable-nvdec --enable-dxva2 --enable-avisynth --enable-libopenmpt --enable-amf
libavutil 56. 55.100 / 56. 55.100
libavcodec 58. 93.100 / 58. 93.100
libavformat 58. 47.100 / 58. 47.100
libavdevice 58. 11.100 / 58. 11.100
libavfilter 7. 86.100 / 7. 86.100
libswscale 5. 8.100 / 5. 8.100
libswresample 3. 8.100 / 3. 8.100
libpostproc 55. 8.100 / 55. 8.100
- 测试用源视频信息
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'C:/ls/video/ls.mp4':
Metadata:
major_brand : mp42
minor_version : 0
compatible_brands: mp41isom
creation_time : 2020-07-03T09:02:48.000000Z
artist : Microsoft Game DVR
title : 时间_百度搜索 - Google Chrome
Duration: 00:01:01.49, start: 0.000000, bitrate: 20044 kb/s
Stream #0:0(und): Video: h264 (Main) (avc1 / 0x31637661), yuv420p, 1920x1048 [SAR 1:1 DAR 240:131], 19787 kb/s, 29.96 fps, 59.94 tbr, 30k tbn, 59.94 tbc (default)
Metadata:
creation_time : 2020-07-03T09:02:48.000000Z
handler_name : VideoHandler
encoder : AVC Coding
Stream #0:1(und): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 117 kb/s (default)
Metadata:
creation_time : 2020-07-03T09:02:48.000000Z
handler_name : SoundHandler
Stream mapping:
Stream #0:0 -> #0:0 (h264 (native) -> webp (libwebp_anim))
Press [q] to stop, [?] for help
- 测试与输出结果
-
指定输出1帧/秒,总60帧(即控制输出时长为60/1=60s)
## 转为webp C:\ls\ffmpeg\bin>ffmpeg -i C:/ls/video/ls.mp4 -r 1 -vframes 60 -y C:/ls/video/ls.webp Output #0, webp, to 'C:/ls/video/ls.webp': Metadata: major_brand : mp42 minor_version : 0 compatible_brands: mp41isom title : 时间_百度搜索 - Google Chrome artist : Microsoft Game DVR encoder : Lavf58.47.100 Stream #0:0(und): Video: webp (libwebp_anim), yuv420p, 1920x1048 [SAR 1:1 DAR 240:131], q=2-31, 200 kb/s, 1 fps, 1k tbn, 1 tbc (default) Metadata: creation_time : 2020-07-03T09:02:48.000000Z handler_name : VideoHandler encoder : Lavc58.93.100 libwebp_anim frame= 60 fps=8.7 q=-0.0 Lsize= 1737kB time=00:01:00.00 bitrate= 237.2kbits/s dup=0 drop=1688 speed=8.66x video:1737kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.000000% ## 转为gif C:\ls\ffmpeg\bin>ffmpeg -i C:/ls/video/ls.mp4 -r 1 -vframes 60 -y C:/ls/video/ls.gif [swscaler @ 000001bba461bfc0] No accelerated colorspace conversion found from yuv420p to bgr8. Output #0, gif, to 'C:/ls/video/ls.gif': Metadata: major_brand : mp42 minor_version : 0 compatible_brands: mp41isom title : 时间_百度搜索 - Google Chrome artist : Microsoft Game DVR encoder : Lavf58.47.100 Stream #0:0(und): Video: gif, bgr8, 1920x1048 [SAR 1:1 DAR 240:131], q=2-31, 200 kb/s, 1 fps, 100 tbn, 1 tbc (default) Metadata: creation_time : 2020-07-03T09:02:48.000000Z handler_name : VideoHandler encoder : Lavc58.93.100 gif frame= 60 fps= 10 q=-0.0 Lsize= 3029kB time=00:00:59.01 bitrate= 420.4kbits/s dup=0 drop=1688 speed=9.96x video:3029kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.000645%
-
以120帧作为1秒时间单位解析原视频(即61.48s*29.96fps/120≈15s) 指定输出4帧/秒,总60帧(即控制输出时长为60/4=15s)
## 转为webp C:\ls\ffmpeg\bin>ffmpeg -r 120 -i C:/ls/video/ls.mp4 -r 4 -vframes 60 -map_metadata -1 -y C:/ls/video/ls.webp Output #0, webp, to 'C:/ls/video/ls.webp': Metadata: encoder : Lavf58.47.100 Stream #0:0: Video: webp (libwebp_anim), yuv420p, 1920x1048 [SAR 1:1 DAR 240:131], q=2-31, 200 kb/s, 4 fps, 1k tbn, 4 tbc (default) Metadata: encoder : Lavc58.93.100 libwebp_anim frame= 60 fps=8.9 q=-0.0 Lsize= 1735kB time=00:00:15.00 bitrate= 947.7kbits/s dup=0 drop=1692 speed=2.22x video:1735kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.000000% ## 转为gif C:\ls\ffmpeg\bin>ffmpeg -r 120 -i C:/ls/video/ls.mp4 -r 4 -vframes 60 -map_metadata -1 -y C:/ls/video/ls.gif [swscaler @ 000002c9018ff400] No accelerated colorspace conversion found from yuv420p to bgr8. Output #0, gif, to 'C:/ls/video/ls.gif': Metadata: encoder : Lavf58.47.100 Stream #0:0: Video: gif, bgr8, 1920x1048 [SAR 1:1 DAR 240:131], q=2-31, 200 kb/s, 4 fps, 100 tbn, 4 tbc (default) Metadata: encoder : Lavc58.93.100 gif frame= 60 fps= 10 q=-0.0 Lsize= 3056kB time=00:00:14.76 bitrate=1696.1kbits/s dup=0 drop=1692 speed= 2.5x video:3056kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.000639%
-
读取源视频第6秒开始的10秒钟 指定输出分辨率以定宽640px等比缩放
C:\ls\ffmpeg\bin>ffmpeg -ss 6 -t 10 -i C:/ls/video/ls.mp4 -vf scale=640:ih*640/iw -map_metadata -1 -y C:/ls/video/ls.webp Output #0, webp, to 'C:/ls/video/ls.webp': Metadata: encoder : Lavf58.47.100 Stream #0:0: Video: webp (libwebp_anim), yuv420p, 640x349 [SAR 1047:1048 DAR 240:131], q=2-31, 200 kb/s, 29.97 fps, 1k tbn, 29.97 tbc (default) Metadata: encoder : Lavc58.93.100 libwebp_anim frame= 300 fps=179 q=-0.0 Lsize= 306kB time=00:00:10.04 bitrate= 249.5kbits/s speed= 6x video:306kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.000000%
-
网友评论