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             Monkeys 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入门详解--音视频原理及应用:梅会东:清华大学出版社

FFMPEG进阶系列03-ffmpeg转码专题(中)x264参数详解

ffmpeg从某站提取视频音频详解

FFmpeg滤镜API用法详解

FFmpeg解码H264及swscale缩放详解

FFmpeg滤镜API用法详解