ffmpeg使用详解
Posted jjw_zyfx
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ffmpeg使用详解相关的知识,希望对你有一定的参考价值。
1、Mac安装请点击这里
2、使用介绍:
显示ffmpeg使用的基本信息命令:ffmpeg -h
显示ffmpeg使用的高级信息命令:ffmpeg -h long
显示ffmpeg使用的所有信息命令:ffmpeg -h full
也可以打印到文件中查看详细的内容:ffmpeg -h long > ffmpeg_h_long.log
粗略查找:
win用: ffmpeg -encoders | findstr x264
mac用: ffmpeg -encoders | grep x264 查找流中包含x264的
详细查找(一般是先用上边的粗略查找查找出具体型号再用下边的详细查找):
ffmpeg -h type = name
ffmpeg -h encoder=libx264
案例1:
ffmpeg -i 1.mp4 -codec copy -ss 200 -t 10 -f flv out.flv
-codec copy 使用原视频的编解码方法
-ss 200 表示从200毫秒开始截取
-t 10 表示截取10毫秒,其实最终结果是视频总共有11毫秒
-f flv 表示输出的格式为flv 格式 这个可以忽略,则就按照自己写的那个后缀解析即
ffmpeg -i 1.mp4 -codec copy -ss 200 -t 10 out.mp4 则解析成mp4
案例2:
ffmpeg -i out.mp4 -b:a 192k -ar 48000 -ac 2 -acodec libmp3lame -aframes 200 out2.mp4
-b:a 192k 音频码率为192k
-ar 48000 采样率为48000
-ac 2 声音通道数为2
-acodec libmp3lame 声音的编解码器为 libmp3lame
-aframes 200 音频帧数为200
案例3:
ffmpeg -i out.mp4 -vframes 300 -b:v 300k -r 30 -s 640x480 -aspect 16:9 -vcodec libx265 out3.mp4
需要注意的是这里边的640x480 中的x是x而不是*
libx265 这个最好是复制
案例3:
ffmpeg -i out.mp4 -acodec copy -vn audio.mp4 抽取音频(只有声音没有画面)
案例4:
ffmpeg -i out.mp4 -vcodec copy -an video.mp4 抽取视频(没声音只有画面)
案例5:
ffmpeg -i test.mp4 -acodec libmp3lame -vn test.mp3
ffmpeg -i out.mp4 -codec:a libmp3lame -vn test2.mp3 这两种写法不一样但是效果是一样的
即 -acodec等价于-codec:a 同理 -vcodec 等价于 -codec:v
视频抽取图片案例:
ffmpeg -i test.mp4 -y -f image2 -ss 00:00:02 -vframes 1 -s 640x360 ./video_test/test.jpg
-y 如果video_test目录下有test.jpg则覆盖了,不用输入是否覆盖,不写-y则会显示交互内容
-vframes 1 输出一帧,可以写多帧例如:
ffmpeg -i test.mp4 -y -f image2 -ss 00:00:02 -vframes 10 -s 640x360 ./video_test/test%02d.jpg
-vframes 10 即抽出连续的10帧 如果是多帧即像现在这个的则需要将输出结果进行格式化:如下
test%02d.jpg %02d 即和c语言的格式化输出的格式是一样的,即d:十进制输出,2 即输出的为两位数,0 即不足两位的在其前边补充0 例如:
视频抽取图片案例:
ffmpeg -i test.mp4 -t 3 -s 640x360 -r 5 -v quiet ./video_test/frame%03d.jpg
-t 3 意思是抽取前三秒数据
-r 5 意思是每秒抽取5帧数据
-v quiet 意思是终端执行完此命令后不会显示无管的多余信息
图片合成视频案例:
ffmpeg -f image2 -i ./video_test/frame%03d.jpg -y -r 5 ./video_test/test.mp4
-y 如果video_test目录下有test.mp4这个文件则直接覆盖了
-r 5 每秒几帧
Hyper fast Audio and Video encoder
usage: ffmpeg [options] [[infile options] -i infile]... [outfile options] outfile...
Getting help:
-h -- print basic options # 查看基本命令信息
-h long -- print more options # 查看更多命令的信息
-h full -- print all options (including all format and codec specific options, very long) # 查看全部命令信息
-h type=name -- print all options for the named decoder/encoder/demuxer/muxer/filter/bsf/protocol
See man ffmpeg for detailed description of the options.
Print help / information / capabilities:
-L show license
-h topic show help
-? topic show help
-help topic show help
--help topic show help
-version show version
-buildconf show build configuration
-formats show available formats
-muxers show available muxers
-demuxers show available demuxers
-devices show available devices
-codecs show available codecs
-decoders show available decoders
-encoders show available encoders
-bsfs show available bit stream filters
-protocols show available protocols
-filters show available filters
-pix_fmts show available pixel formats
-layouts show standard channel layouts
-sample_fmts show available audio sample formats
-dispositions show available stream dispositions
-colors show available color names
-sources device list sources of the input device
-sinks device list sinks of the output device
-hwaccels show available HW acceleration methods
Global options (affect whole program instead of just one file):
-loglevel loglevel set logging level
-v loglevel set logging level
-report generate a report
-max_alloc bytes set maximum size of a single allocated block
-y overwrite output files
-n never overwrite output files
-ignore_unknown Ignore unknown stream types
-filter_threads number of non-complex filter threads
-filter_complex_threads number of threads for -filter_complex
-stats print progress report during encoding
-max_error_rate maximum error rate ratio of decoding errors (0.0: no errors, 1.0: 100% errors) above which ffmpeg returns an error instead of success.
-vol volume change audio volume (256=normal)
Advanced global options:
-cpuflags flags force specific cpu flags
-cpucount count force specific cpu count
-hide_banner hide_banner do not show program banner
-copy_unknown Copy unknown stream types
-recast_media allow recasting stream type in order to force a decoder of different media type
-benchmark add timings for benchmarking
-benchmark_all add timings for each task
-progress url write program-readable progress information
-stdin enable or disable interaction on standard input
-timelimit limit set max runtime in seconds in CPU user time
-dump dump each input packet
-hex when dumping packets, also dump the payload
-vsync video sync method
-frame_drop_threshold frame drop threshold
-async audio sync method
-adrift_threshold threshold audio drift threshold
-copyts copy timestamps
-start_at_zero shift input timestamps to start at 0 when using copyts
-copytb mode copy input stream time base when stream copying
-dts_delta_threshold threshold timestamp discontinuity delta threshold
-dts_error_threshold threshold timestamp error delta threshold
-xerror error exit on error
-abort_on flags abort on the specified condition flags
-filter_complex graph_description create a complex filtergraph
-lavfi graph_description create a complex filtergraph
-filter_complex_script filename read complex filtergraph description from a file
-auto_conversion_filters enable automatic conversion filters globally
-stats_period time set the period at which ffmpeg updates stats and -progress output
-debug_ts print timestamp debugging info
-psnr calculate PSNR of compressed frames
-vstats dump video coding statistics to file
-vstats_file file dump video coding statistics to file
-vstats_version Version of the vstats format to use.
-qphist show QP histogram
-sdp_file file specify a file in which to print sdp information
-init_hw_device args initialise hardware device
-filter_hw_device device set hardware device used when filtering
Per-file main options:
-f fmt force format
-c codec codec name
-codec codec codec name
-pre preset preset name
-map_metadata outfile[,metadata]:infile[,metadata] set metadata information of outfile from infile
-t duration record or transcode "duration" seconds of audio/video
-to time_stop record or transcode stop time
-fs limit_size set the limit file size in bytes
-ss time_off set the start time offset
-sseof time_off set the start time offset relative to EOF
-seek_timestamp enable/disable seeking by timestamp with -ss
-timestamp time set the recording timestamp ('now' to set the current time)
-metadata string=string add metadata
-program title=string:st=number... add program with specified streams
-target type specify target file type ("vcd", "svcd", "dvd", "dv" or "dv50" with optional prefixes "pal-", "ntsc-" or "film-")
-apad audio pad
-frames number set the number of frames to output
-filter filter_graph set stream filtergraph
-filter_script filename read stream filtergraph description from a file
-reinit_filter reinit filtergraph on input parameter changes
-discard discard
-disposition disposition
Advanced per-file options:
-map [-]input_file_id[:stream_specifier][,sync_file_id[:stream_specifier]] set input stream mapping
-map_channel file.stream.channel[:syncfile.syncstream] map an audio channel from one stream to another
-map_chapters input_file_index set chapters mapping
-accurate_seek enable/disable accurate seeking with -ss
-itsoffset time_off set the input ts offset
-itsscale scale set the input ts scale
-dframes number set the number of data frames to output
-re read input at native frame rate; equivalent to -readrate 1
-readrate speed read input at specified rate
-shortest finish encoding within shortest input
-bitexact bitexact mode
-copyinkf copy initial non-keyframes
-copypriorss copy or discard frames before start time
-tag fourcc/tag force codec tag/fourcc
-q q use fixed quality scale (VBR)
-qscale q use fixed quality scale (VBR)
-profile profile set profile
-attach filename add an attachment to the output file
-dump_attachment filename extract an attachment into a file
-stream_loop loop count set number of times input stream shall be looped
-thread_queue_size set the maximum number of queued packets from the demuxer
-find_stream_info read and decode the streams to fill missing information with heuristics
-bits_per_raw_sample number set the number of bits per raw sample
-autorotate automatically insert correct rotate filters
-autoscale automatically insert a scale filter at the end of the filter graph
-muxdelay seconds set the maximum demux-decode delay
-muxpreload seconds set the initial demux-decode delay
-time_base ratio set the desired time base hint for output stream (1:24, 1:48000 or 0.04166, 2.0833e-5)
-enc_time_base ratio set the desired time base for the encoder (1:24, 1:48000 or 0.04166, 2.0833e-5). two special values are defined - 0 = use frame rate (video) or sample rate (audio),-1 = match source time base
-bsf bitstream_filters A comma-separated list of bitstream filters
-fpre filename set options from indicated preset file
-max_muxing_queue_size packets maximum number of packets that can be buffered while waiting for all streams to initialize
-muxing_queue_data_threshold bytes set the threshold after which max_muxing_queue_size is taken into account
-dcodec codec force data codec ('copy' to copy stream)
Video options:
-vframes number set the number of video frames to output
-r rate set frame rate (Hz value, fraction or abbreviation)
-fpsmax rate set max frame rate (Hz value, fraction or abbreviation)
-s size set frame size (WxH or abbreviation)
-aspect aspect set aspect ratio (4:3, 16:9 or 1.3333, 1.7777)
-vn disable video
-vcodec codec force video codec ('copy' to copy stream)
-timecode hh:mm:ss[:;.]ff set initial TimeCode value.
-pass n select the pass number (1 to 3)
-vf filter_graph set video filters
-ab bitrate audio bitrate (please use -b:a)
-b bitrate video bitrate (please use -b:v)
-dn disable data
Advanced Video options:
-pix_fmt format set pixel format
-rc_override override rate control override for specific intervals
-passlogfile prefix select two pass log file name prefix
-psnr calculate PSNR of compressed frames
-vstats dump video coding statistics to file
-vstats_file file dump video coding statistics to file
-vstats_version Version of the vstats format to use.
-intra_matrix matrix specify intra matrix coeffs
-inter_matrix matrix specify inter matrix coeffs
-chroma_intra_matrix matrix specify intra matrix coeffs
-top top=1/bottom=0/auto=-1 field first
-vtag fourcc/tag force video tag/fourcc
-qphist show QP histogram
-force_fps force the selected framerate, disable the best supported framerate selection
-streamid streamIndex:value set the value of an outfile streamid
-force_key_frames timestamps force key frames at specified timestamps
-hwaccel hwaccel name use HW accelerated decoding
-hwaccel_device devicename select a device for HW acceleration
-hwaccel_output_format format select output format used with HW accelerated decoding
-vbsf video bitstream_filters deprecated
-vpre preset set the video options to the indicated preset
Audio options:
-aframes number set the number of audio frames to output
-aq quality set audio quality (codec-specific)
-ar rate set audio sampling rate (in Hz)
-ac channels set number of audio channels
-an disable audio
-acodec codec force audio codec ('copy' to copy stream)
-vol volume change audio volume (256=normal)
-af filter_graph set audio filters
Advanced Audio options:
-atag fourcc/tag force audio tag/fourcc
-sample_fmt format set sample format
-channel_layout layout set channel layout
-guess_layout_max set the maximum number of channels to try to guess the channel layout
-absf audio bitstream_filters deprecated
-apre preset set the audio options to the indicated preset
Subtitle options:
-s size set frame size (WxH or abbreviation)
-sn disable subtitle
-scodec codec force subtitle codec ('copy' to copy stream)
-stag fourcc/tag force subtitle tag/fourcc
-fix_sub_duration fix subtitles duration
-canvas_size size set canvas size (WxH or abbreviation)
-spre preset set the subtitle options to the indicated preset
视频处理工具 FFmpeg 常用实例详解
FFmpeg 是一个专业的多媒体框架,能够解码、编码、转码、复用、解复用、流式传输、过滤和播放几乎所有格式的媒体文件。 其核心就是 FFmpeg 程序本身,是一个基于命令行的视频和音频处理工具,多用于视频转码、基础编辑(修剪和合并)、视频缩放、后期效果制作等场景。 这里通过一些示例简单地介绍下 ffmpeg 命令的基本使用。
一、获取详细信息
ffmpeg -i <inputfile> -hide_banner 其中 -hide_banner 选项用于在输出文件的详细信息时省略 ffmpeg 的版本信息和编译选项等。
$ ffmpeg -i bbb.mp4 -hide_banner Input #0, mov,mp4,m4a,3gp,3g2,mj2, from ‘bbb.mp4‘: Metadata: major_brand : isom minor_version : 1 compatible_brands: isomavc1 creation_time : 2013-12-17T16:40:26.000000Z title : Big Buck Bunny, Sunflower version artist : Blender Foundation 2008, Janus Bager Kristensen 2013 comment : Creative Commons Attribution 3.0 - http://bbb3d.renderfarming.net genre : Animation composer : Sacha Goedegebure Duration: 00:10:34.53, start: 0.000000, bitrate: 8487 kb/s Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p, 3840x2160 [SAR 1:1 DAR 16:9], 8002 kb/s, 60 fps, 60 tbr, 60k tbn, 120 tbc (default) Metadata: creation_time : 2013-12-17T16:40:26.000000Z handler_name : GPAC ISO Video Handler Stream #0:1(und): Audio: mp3 (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 160 kb/s (default) Metadata: creation_time : 2013-12-17T16:40:28.000000Z handler_name : GPAC ISO Audio Handler Stream #0:2(und): Audio: ac3 (ac-3 / 0x332D6361), 48000 Hz, 5.1(side), fltp, 320 kb/s (default) Metadata: creation_time : 2013-12-17T16:40:28.000000Z handler_name : GPAC ISO Audio Handler Side data: audio service type: main At least one output file must be specified
二、格式转换
ffmpeg -i <inputfile> <outputfile>
FFmpeg 是一个强大的音频和视频格式转换器,几乎支持当前所有常用的格式,如: $ ffmpeg -i input.avi output.mp4
或者经常需要用到的,将视频文件转为 GIF 动图: $ ffmpeg -i input.mp4 output.gif
如果在格式转换时需要保留源视频的质量,可以添加上 -qscale 0 选项(-qscale 的值越低,输出视频的质量越高): $ ffmpeg -i input.webm -qscale 0 output.mp4
可以使用 -formats 选项列出 ffmpeg 命令支持的所有格式(很长很长的一个列表。。。):
$ ffmpeg -formats -hide_banner File formats: D. = Demuxing supported .E = Muxing supported -- D 3dostr 3DO STR E 3g2 3GP2 (3GPP2 file format) E 3gp 3GP (3GPP file format) D 4xm 4X Technologies E a64 a64 - video for Commodore 64 D aa Audible AA format files D aac raw ADTS AAC (Advanced Audio Coding) DE ac3 raw AC-3 D acm Interplay ACM D act ACT Voice file format D adf Artworx Data Format D adp ADP D ads Sony PS2 ADS E adts ADTS AAC (Advanced Audio Coding) DE adx CRI ADX D aea MD STUDIO audio D afc AFC DE aiff Audio IFF D aix CRI AIX DE alaw PCM A-law D alias_pix Alias/Wavefront PIX image DE amr 3GPP AMR D amrnb raw AMR-NB D amrwb raw AMR-WB D anm Deluxe Paint Animation D apc CRYO APC D ape Monkey‘s Audio ...
三、指定编码
可以通过 -c 选项手动指定输出文件的编码,如: $ ffmpeg -i input.mp4 -c:v vp9 -c:a libvorbis output.mkv 其中 -c:v 用于指定视频编码,-c:a 指定音频编码
PS:视频文件的后缀如 mp4、mkv、avi 等只是表示用来装载媒体流的“容器”类型,而编码时使用的编码方式则另需指定。 当然很多时候 ffmpeg 会根据输出文件的后缀自行选择默认的编码方式,无需手动指定。
只改变视频或者音频流的编码
可以在指定编码时,只改变视频或者音频编码中的一项,另一项则保持原来的格式: $ ffmpeg -i input.webm -c:v copy -c:a flac output.mkv -c:v copy 表示复制输入文件中的视频流到输出文件,不重新进行编码
只改变文件后缀
即输入文件中的视频流和音频流同时复制到输出文件,只改变文件后缀: $ ffmpeg -i input.webm -c:av copy output.mkv
编码列表
查看 FFmpeg 支持的所有音视频编码格式(又一个很长的列表。。。):
$ ffmpeg -codecs -hide_banner Codecs: D..... = Decoding supported .E.... = Encoding supported ..V... = Video codec ..A... = Audio codec ..S... = Subtitle codec ...I.. = Intra frame-only codec ....L. = Lossy compression .....S = Lossless compression ------- ... DEV.L. flv1 FLV / Sorenson Spark / Sorenson H.263 (Flash Video) (decoders: flv ) (encoders: flv ) D.V..S fmvc FM Screen Capture Codec D.VI.S fraps Fraps D.VI.S frwu Forward Uncompressed D.V.L. g2m Go2Meeting D.V.L. gdv Gremlin Digital Video DEV..S gif GIF (Graphics Interchange Format) DEV.L. h261 H.261 DEV.L. h263 H.263 / H.263-1996, H.263+ / H.263-1998 / H.263 version 2 D.V.L. h263i Intel H.263 DEV.L. h263p H.263+ / H.263-1998 / H.263 version 2 DEV.LS h264 H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10 (decoders: h264 h264_qsv h264_cuvid ) (encoders: libx264 libx264rgb h264_amf h264_nvenc h264_qsv nvenc nvenc_h264 ) DEVIL. hap Vidvox Hap DEV.L. hevc H.265 / HEVC (High Efficiency Video Coding) (decoders: hevc hevc_qsv hevc_cuvid ) (encoders: libx265 nvenc_hevc hevc_amf hevc_nvenc hevc_qsv ) ...
四、视频压缩
编码与比特率
有些时候,基于磁盘空间和网络传输的考虑,需要对视频文件进行压缩处理。其中一种方法就是改变视频的比特率。 在某些情况下,比特率的适当缩减对视频的观看效果并不会产生太大的影响(人眼察觉的范围内)。 当然编码的选择也会对输出文件的大小产生一定的影响,示例如下:
$ ffmpeg -i input.webm -c:a copy -c:v vp9 -b:v 1M output.mkv -b:v 用于指定视频的比特率。
帧率
另一种方式就是改变视频文件的帧率,也就是人们常常提到的FPS。
$ ffmpeg -i input.webm -c:a copy -c:v vp9 -r 30 output.mkv -r 30 选项用于指定输出视频的帧率为 30 FPS。
分辨率
视频的分辨率也会影响文件的大小,可以使用 -s 选项指定输出文件的分辨率。当然,视频的画幅大小也会产生相应的变化:
$ ffmpeg -i input.mkv -c:a copy -s hd720 output.mkv 或 $ ffmpeg -i input.mkv -c:a copy -s 1280x720 output.mkv
五、提取音频
通过格式转换,FFmpeg 可以直接将视频文件转为音频文件,只需要指定输出文件的格式为 .mp3 或 .ogg 等。如: $ ffmpeg -i input.mp4 output.mp3
同时,也可以在转换时指定音频的格式选项: $ ffmpeg -i input.mp4 -vn -ar 44100 -ac 2 -ab 320 -f mp3 output.mp3
其中: -vn :指定输出文件中禁用视频 -ar :指定输出文件中音频的采样率 -ac:指定音频的通道数 -ab:指定音频的比特率 -f:指定输出文件的格式
六、常用实用命令集锦
调整分辨率
将某视频文件的分辨率改为 1280x720: $ ffmpeg -i input.mp4 -filter:v scale=1280:720 output.mp4 或者: $ ffmpeg -i input.mp4 -s 1280x720 output.mp4
压缩视频文件
$ ffmpeg -i input.mp4 -vf scale=1280:-1 -c:v libx264 -preset veryslow -crf 24 output.mp4
也可以添加如下选项同时对音频流进行压缩: -c:a aac -strict -2 -b:a 128k
移除音频
$ ffmpeg -i input.mp4 -an output.mp4 -an 选项表示在输出文件中禁用音频
提取图片
$ ffmpeg -i input.mp4 -r 1 -f image2 image-%2d.png
其中各选项的含义: -r :设置帧率,即每秒有多少帧画面被提取到图片中。默认为 25 -f :指定输出的格式。本例中为图片(image2) -image-%2d.png :指定提取出的图片的命名方式。本例中最终的命名为 image-01.png、image-02.png 等。如使用 image-%3d.png ,则最终的命名为 image-001.png、imag-002.png 等
裁剪视频
即截取指定范围内的视频画面,裁切掉多余的部分: $ ffmpeg -i input.mp4 -vf "crop=w:h:x:y" output.mp4
其中 crop=w:h:x:y 用于指定“裁剪框”的大小和位置。 w 表示裁剪部分的宽度(默认为源视频的宽度 iw); h 表示裁剪部分的高度(默认为源视频的高度 ih; x 表示 x 轴上裁剪的起始位置(最左边为 0,默认为源视频的中间位置); y 表示 y 轴上裁剪的起始位置(最顶部为 0,默认为源视频的中间位置)。
改变视频比例
视频比例即视频画幅的长宽比,也就是通常所说的 4:3 和 16:9 等。 $ ffmpeg -i input.mp4 -aspect 16:9 output.mp4
设置音频封面
即创建以一张静止的图片为画面的视频。
$ ffmpeg -loop 1 -i inputimage.jpg -i inputaudio.wav -c:v libx264 -tune stillimage -c:a aac -b:a 192k -shortest output.mp4 其中的选项和参数可以根据需求自行修改和省略。
截取视频片段
$ ffmpeg -i input.mp4 -ss 00:00:50 -codec copy -t 60 output.mp4 截取视频中从第 50 秒开始,持续时间为一分钟的视频片段。
其中 -ss 用于指定视频片段的开始时间; -t 指定视频片段的持续时间,单位都为秒。
也可以使用如下方式: $ ffmpeg -i audio.mp3 -ss 00:01:54 -to 00:06:53 -c copy output.mp3
以上命令也适用于音频文件。
视频分割
$ ffmpeg -i input.mp4 -t 00:00:30 -c copy part1.mp4 -ss 00:00:30 -codec copy part2.mp4 将输入的视频文件分割为两段,第一段为从最开始到第 30 秒;第二段为第 30 秒到视频结束。 其中 -t 00:00:30 前面省略了 -ss 00:00:00; -ss 00:00:30 后面省略了 -t 剩余时间。
有点类似于截取多个连续的视频片段。
视频合并
首先创建包含各媒体文件路径列表的文本文件 join.txt :
file ‘~/myvideos/part1.mp4‘ file ‘~/myvideos/part2.mp4‘ file ‘~/myvideos/part3.mp4‘
使用 -f concat 选项对多个视频进行合并: $ ffmpeg -f concat -i join.txt -c copy output.mp4
添加字幕文件
$ ffmpeg -i input.mp4 -i subtitle.srt -map 0 -map 1 -c copy -c:v libx264 -crf 23 -preset veryfast output.mp4
改变视频播放速度(音频不受影响)
$ ffmpeg -i input.mp4 -vf "setpts=0.5*PTS" output.mp4
上述命令会加快视频画面的播放速度,音频播放速度不变。
如果想放慢视频画面的切换速度,可以相应地将 setpts=0.5*PTS 中的 0.5 改为大于 1 的数值。
Padding
即宽银幕视频中上下的两道“黑边”,可以使用 FFmpeg 命令添加类似的效果: $ ffmpeg -i input.mp4 -vf "scale=1920:1080:force_original_aspect_ratio=decrease,pad=1920:1080:(ow-iw)/2:(oh-ih)/2:black" output.mp4
该效果由 -vf 选项的 pad 参数指定,可以根据情况自行修改。
从图片创建视频
$ ffmpeg -framerate 1 -i img%02d.jpg -c:v libx264 -r 30 -pix_fmt yuv420p output.mp4 把当前目录下的多张图片(名字为 img01.jpg、img02.jpg 的形式)组合为一个视频文件,效果类似于自动播放的 PPT。 每秒切换一张图片。
$ ffmpeg -framerate 30 -i img%02d.jpg -c:v libx264 -pix_fmt yuv420p output.mp4 也是将当前目录下的多张图片组合成一个完整的视频,该视频帧率为 30 FPS。 每帧切换一张图片。
需要更多音视频、webrtc、ffmpeg视频学习资料 文档请后台私信【音视频】获取
以上是关于ffmpeg使用详解的主要内容,如果未能解决你的问题,请参考以下文章
FFmpeg入门详解--音视频原理及应用:梅会东:清华大学出版社