ffmpeg libx264_3.FFmpeg最常用操作

目录:

1. FFmpeg简介 FFmpeg编码流程 FFmpeg混淆概念

2.FFmpeg操作参数

3.FFmpeg常用操作

6. FFmpeg常用操作

上一篇的2.FFmpeg操作参数,FFmpeg用法中全局选项和文件主选项等内容,尤为重要。

FFmpeg用法:

ffmpeg [global_options] {[input_file_options] -i input_file} ... {[output_file_options] output_file} ...

ffmpeg [全局选项] {[输入文件选项] -i 输入/url/地址}... {[输出文件选项] 输出/url/地址}...

1.查看视频格式

输入:

#桌面ffmpeg文件夹中的input.mp4

输出:(可不看)

ffmpeg version 4.2.2 Copyright (c) 2000-2019 the FFmpeg developers
  built with Apple clang version 11.0.0 (clang-1100.0.33.16)
  configuration: --prefix=/usr/local/Cellar/ffmpeg/4.2.2_1 --enable-shared --enable-pthreads --enable-version3 --enable-avresample --cc=clang --host-cflags='-I/Library/Java/JavaVirtualMachines/adoptopenjdk-13.0.1.jdk/Contents/Home/include -I/Library/Java/JavaVirtualMachines/adoptopenjdk-13.0.1.jdk/Contents/Home/include/darwin -fno-stack-check' --host-ldflags= --enable-ffplay --enable-gnutls --enable-gpl --enable-libaom --enable-libbluray --enable-libmp3lame --enable-libopus --enable-librubberband --enable-libsnappy --enable-libtesseract --enable-libtheora --enable-libvidstab --enable-libvorbis --enable-libvpx --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxvid --enable-lzma --enable-libfontconfig --enable-libfreetype --enable-frei0r --enable-libass --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-librtmp --enable-libspeex --enable-libsoxr --enable-videotoolbox --disable-libjack --disable-indev=jack
  libavutil      56. 31.100 / 56. 31.100
  libavcodec     58. 54.100 / 58. 54.100
  libavformat    58. 29.100 / 58. 29.100
  libavdevice    58.  8.100 / 58.  8.100
  libavfilter     7. 57.100 /  7. 57.100
  libavresample   4.  0.  0 /  4.  0.  0
  libswscale      5.  5.100 /  5.  5.100
  libswresample   3.  5.100 /  3.  5.100
  libpostproc    55.  5.100 / 55.  5.100
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '/Users/AAA/Desktop/ffmpeg/input.mp4':
  Metadata:
    major_brand     : isom
    minor_version   : 512
    compatible_brands: isomiso2mp41
    encoder         : Lavf58.29.100
    description     : Packed by Bilibili XCoder v2.0.2
  Duration: 00:06:28.00, start: 0.000000, bitrate: 573 kb/s
    Stream #0:0(und): Video: hevc (Main) (hev1 / 0x31766568), yuv420p(tv), 1728x1080 [SAR 1:1 DAR 8:5], 436 kb/s, 30 fps, 30 tbr, 16k tbn, 30 tbc (default)
    Metadata:
      handler_name    : VideoHandler
    Stream #0:1(und): Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz, stereo, fltp, 126 kb/s (default)
    Metadata:
      handler_name    : SoundHandler
At least one output file must be specified 

2. 修改视频封装格式:(转为.mov)

输入:

ffmpeg -i /Users/AAA/Desktop/ffmpeg/input.mp4  /Users/AAA/Desktop/ffmpeg/output.mov

输出:(可不看)

ffmpeg version 4.2.2 Copyright (c) 2000-2019 the FFmpeg developers
  built with Apple clang version 11.0.0 (clang-1100.0.33.16)
  configuration: --prefix=/usr/local/Cellar/ffmpeg/4.2.2_1 --enable-shared --enable-pthreads --enable-version3 --enable-avresample --cc=clang --host-cflags='-I/Library/Java/JavaVirtualMachines/adoptopenjdk-13.0.1.jdk/Contents/Home/include -I/Library/Java/JavaVirtualMachines/adoptopenjdk-13.0.1.jdk/Contents/Home/include/darwin -fno-stack-check' --host-ldflags= --enable-ffplay --enable-gnutls --enable-gpl --enable-libaom --enable-libbluray --enable-libmp3lame --enable-libopus --enable-librubberband --enable-libsnappy --enable-libtesseract --enable-libtheora --enable-libvidstab --enable-libvorbis --enable-libvpx --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxvid --enable-lzma --enable-libfontconfig --enable-libfreetype --enable-frei0r --enable-libass --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-librtmp --enable-libspeex --enable-libsoxr --enable-videotoolbox --disable-libjack --disable-indev=jack
  libavutil      56. 31.100 / 56. 31.100
  libavcodec     58. 54.100 / 58. 54.100
  libavformat    58. 29.100 / 58. 29.100
  libavdevice    58.  8.100 / 58.  8.100
  libavfilter     7. 57.100 /  7. 57.100
  libavresample   4.  0.  0 /  4.  0.  0
  libswscale      5.  5.100 /  5.  5.100
  libswresample   3.  5.100 /  3.  5.100
  libpostproc    55.  5.100 / 55.  5.100
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '/Users/AAA/Desktop/ffmpeg/input.mp4':
  Metadata:
    major_brand     : isom
    minor_version   : 512
    compatible_brands: isomiso2mp41
    encoder         : Lavf58.29.100
    description     : Packed by Bilibili XCoder v2.0.2
  Duration: 00:06:28.00, start: 0.000000, bitrate: 573 kb/s
    Stream #0:0(und): Video: hevc (Main) (hev1 / 0x31766568), yuv420p(tv), 1728x1080 [SAR 1:1 DAR 8:5], 436 kb/s, 30 fps, 30 tbr, 16k tbn, 30 tbc (default)
    Metadata:
      handler_name    : VideoHandler
    Stream #0:1(und): Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz, stereo, fltp, 126 kb/s (default)
    Metadata:
      handler_name    : SoundHandler
Stream mapping:
  Stream #0:0 -> #0:0 (hevc (native) -> h264 (libx264))
  Stream #0:1 -> #0:1 (aac (native) -> aac (native))
Press [q] to stop, [?] for help
[libx264 @ 0x7fd0bf80b600] using SAR=1/1
[libx264 @ 0x7fd0bf80b600] using cpu capabilities: MMX2 SSE2Fast SSSE3 SSE4.2 AVX FMA3 BMI2 AVX2
[libx264 @ 0x7fd0bf80b600] profile High, level 4.0
[libx264 @ 0x7fd0bf80b600] 264 - core 155 r2917 0a84d98 - H.264/MPEG-4 AVC codec - Copyleft 2003-2018 - x264, the best H.264/AVC encoder - options: cabac=1 ref=3 deblock=1:0:0 analyse=0x3:0x113 me=hex subme=7 psy=1 psy_rd=1.00:0.00 mixed_ref=1 me_range=16 chroma_me=1 trellis=1 8x8dct=1 cqm=0 deadzone=21,11 fast_pskip=1 chroma_qp_offset=-2 threads=6 lookahead_threads=1 sliced_threads=0 nr=0 decimate=1 interlaced=0 bluray_compat=0 constrained_intra=0 bframes=3 b_pyramid=2 b_adapt=1 b_bias=0 direct=1 weightb=1 open_gop=0 weightp=2 keyint=250 keyint_min=25 scenecut=40 intra_refresh=0 rc_lookahead=40 rc=crf mbtree=1 crf=23.0 qcomp=0.60 qpmin=0 qpmax=69 qpstep=4 ip_ratio=1.40 aq=1:1.00
Output #0, mov, to '/Users/AAA/Desktop/ffmpeg/output.mov':
  Metadata:
    major_brand     : isom
    minor_version   : 512
    compatible_brands: isomiso2mp41
    description     : Packed by Bilibili XCoder v2.0.2
    encoder         : Lavf58.29.100
    Stream #0:0(und): Video: h264 (libx264) (avc1 / 0x31637661), yuv420p, 1728x1080 [SAR 1:1 DAR 8:5], q=-1--1, 30 fps, 15360 tbn, 30 tbc (default)
    Metadata:
      handler_name    : VideoHandler
      encoder         : Lavc58.54.100 libx264
    Side data:
      cpb: bitrate max/min/avg: 0/0/0 buffer size: 0 vbv_delay: -1
    Stream #0:1(und): Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz, stereo, fltp, 128 kb/s (default)
    Metadata:
      handler_name    : SoundHandler
      encoder         : Lavc58.54.100 aac
frame=11640 fps= 79 q=-1.0 Lsize=   18175kB time=00:06:27.97 bitrate= 383.8kbits/s speed=2.62x  #这一行一直更新,待其更改完成
video:11652kB audio:6111kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 2.320352%
[libx264 @ 0x7fd0bf80b600] frame I:50    Avg QP:14.99  size: 84946
[libx264 @ 0x7fd0bf80b600] frame P:3061  Avg QP:18.46  size:  1925
[libx264 @ 0x7fd0bf80b600] frame B:8529  Avg QP:18.22  size:   210
[libx264 @ 0x7fd0bf80b600] consecutive B-frames:  1.6%  1.7%  1.1% 95.6%
[libx264 @ 0x7fd0bf80b600] mb I  I16..4: 30.7% 51.7% 17.6%
[libx264 @ 0x7fd0bf80b600] mb P  I16..4:  0.4%  0.6%  0.2%  P16..4:  2.1%  0.5%  0.3%  0.0%  0.0%    skip:95.9%
[libx264 @ 0x7fd0bf80b600] mb B  I16..4:  0.0%  0.0%  0.0%  B16..8:  1.5%  0.0%  0.0%  direct: 0.0%  skip:98.4%  L0:49.8% L1:49.4% BI: 0.8%
[libx264 @ 0x7fd0bf80b600] 8x8 transform intra:50.5% inter:73.5%
[libx264 @ 0x7fd0bf80b600] coded y,uvDC,uvAC intra: 17.9% 10.6% 7.8% inter: 0.2% 0.3% 0.1%
[libx264 @ 0x7fd0bf80b600] i16 v,h,dc,p: 64% 32%  2%  3%
[libx264 @ 0x7fd0bf80b600] i8 v,h,dc,ddl,ddr,vr,hd,vl,hu: 64%  9% 22%  2%  2%  0%  0%  1%  1%
[libx264 @ 0x7fd0bf80b600] i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 35% 28% 14%  3%  4%  4%  4%  4%  4%
[libx264 @ 0x7fd0bf80b600] i8c dc,h,v,p: 87%  8%  4%  1%
[libx264 @ 0x7fd0bf80b600] Weighted P-Frames: Y:0.2% UV:0.1%
[libx264 @ 0x7fd0bf80b600] ref P L0: 67.6%  9.8% 13.5%  9.1%  0.0%
[libx264 @ 0x7fd0bf80b600] ref B L0: 73.0% 25.9%  1.1%
[libx264 @ 0x7fd0bf80b600] ref B L1: 97.8%  2.2%
[libx264 @ 0x7fd0bf80b600] kb/s:246.00
[aac @ 0x7fd0bf80ce00] Qavg: 939.389

3. 删除视频片头和片尾(三种方式)

片头:00:00-00:13,

片尾:05:53-结束,

删除片头后,正片内容持续时间段为 t:

t = 05:53-00:13 = 5min * 60s + (53-13)s = 300+40 = 340 s;

-t 持续时间段 ,显示格式:-t 340:

340 -accurate_seek -i /Users/AAA/Desktop/ffmpeg/input.mov -vcodec copy -acodec copy /Users/AAA/Desktop/ffmpeg/output.mov

或者:使用 -t 持续时间段,显示时间格式:HOURS:MM:SS.MICROSECONDS[1]

#从00:13开始截取视频,截取一段时长为05:40秒的视频。
实际本质同上一条:-t 

或者:使用 -to 截止时间点,截取时间点从 -ss 00:13 秒开始到 -to 05:53 秒结束[2]

截止时间点 -to 计算方式:00:13 + 340 s =00:13 + 05:40 = 05:53

#-to 是截止时间点,时间格式:HOURS:MM:SS.MICROSECONDS 即-to 00:05:53.000

以上三种同输出:(可不看)

ffmpeg version 4.2.2 Copyright (c) 2000-2019 the FFmpeg developers
  built with Apple clang version 11.0.0 (clang-1100.0.33.16)
  configuration: --prefix=/usr/local/Cellar/ffmpeg/4.2.2_1 --enable-shared --enable-pthreads --enable-version3 --enable-avresample --cc=clang --host-cflags='-I/Library/Java/JavaVirtualMachines/adoptopenjdk-13.0.1.jdk/Contents/Home/include -I/Library/Java/JavaVirtualMachines/adoptopenjdk-13.0.1.jdk/Contents/Home/include/darwin -fno-stack-check' --host-ldflags= --enable-ffplay --enable-gnutls --enable-gpl --enable-libaom --enable-libbluray --enable-libmp3lame --enable-libopus --enable-librubberband --enable-libsnappy --enable-libtesseract --enable-libtheora --enable-libvidstab --enable-libvorbis --enable-libvpx --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxvid --enable-lzma --enable-libfontconfig --enable-libfreetype --enable-frei0r --enable-libass --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-librtmp --enable-libspeex --enable-libsoxr --enable-videotoolbox --disable-libjack --disable-indev=jack
  libavutil      56. 31.100 / 56. 31.100
  libavcodec     58. 54.100 / 58. 54.100
  libavformat    58. 29.100 / 58. 29.100
  libavdevice    58.  8.100 / 58.  8.100
  libavfilter     7. 57.100 /  7. 57.100
  libavresample   4.  0.  0 /  4.  0.  0
  libswscale      5.  5.100 /  5.  5.100
  libswresample   3.  5.100 /  3.  5.100
  libpostproc    55.  5.100 / 55.  5.100
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '/Users/AAA/Desktop/ffmpeg/input.mov':
  Metadata:
    major_brand     : qt  
    minor_version   : 512
    compatible_brands: qt  
    encoder         : Lavf58.29.100
  Duration: 00:06:28.00, start: 0.000000, bitrate: 383 kb/s
    Stream #0:0: Video: h264 (High) (avc1 / 0x31637661), yuv420p, 1728x1080 [SAR 1:1 DAR 8:5], 246 kb/s, 30 fps, 30 tbr, 15360 tbn, 60 tbc (default)
    Metadata:
      handler_name    : VideoHandler
      encoder         : Lavc58.54.100 libx264
    Stream #0:1: Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz, stereo, fltp, 129 kb/s (default)
    Metadata:
      handler_name    : SoundHandler
Output #0, mov, to '/Users/AAA/Desktop/ffmpeg/output.mov':
  Metadata:
    major_brand     : qt  
    minor_version   : 512
    compatible_brands: qt  
    encoder         : Lavf58.29.100
    Stream #0:0: Video: h264 (High) (avc1 / 0x31637661), yuv420p, 1728x1080 [SAR 1:1 DAR 8:5], q=2-31, 246 kb/s, 30 fps, 30 tbr, 15360 tbn, 15360 tbc (default)
    Metadata:
      handler_name    : VideoHandler
      encoder         : Lavc58.54.100 libx264
    Stream #0:1: Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz, stereo, fltp, 129 kb/s (default)
    Metadata:
      handler_name    : SoundHandler
Stream mapping:
  Stream #0:0 -> #0:0 (copy)
  Stream #0:1 -> #0:1 (copy)
Press [q] to stop, [?] for help
frame=10242 fps=0.0 q=-1.0 Lsize=   13749kB time=00:05:39.98 bitrate= 331.3kbits/s speed=2.96e+03x    
video:7984kB audio:5402kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 2.712406%

4. 删除视频台标/水印/logo[3]

  • 打开视频,使用INNA播放器(不要用QuickTime播放!),选择以视频实际大小进行播放,快捷键:⌘+1
  • 截取有台标/水印/logo的画面,我系统自定义快捷键:⌥+A
  • 打开在线PS网页,显示标尺,查看台标/水印/logo的坐标位置。

99b13fde24270af79e837f8dd44c594c.png

例如:

x1=1440px y1=40px x2=1700px y2=80px

w=x2-x1=260px h=y2-y1=40px

输入:

"delogo=x=1440:y=40:w=260:h=40:show=0" -c:a copy /Users/AAA/Desktop/ffmpeg/output.mov

输出:(可不看)

ffmpeg version 4.2.2 Copyright (c) 2000-2019 the FFmpeg developers
  built with Apple clang version 11.0.0 (clang-1100.0.33.16)
  configuration: --prefix=/usr/local/Cellar/ffmpeg/4.2.2_1 --enable-shared --enable-pthreads --enable-version3 --enable-avresample --cc=clang --host-cflags='-I/Library/Java/JavaVirtualMachines/adoptopenjdk-13.0.1.jdk/Contents/Home/include -I/Library/Java/JavaVirtualMachines/adoptopenjdk-13.0.1.jdk/Contents/Home/include/darwin -fno-stack-check' --host-ldflags= --enable-ffplay --enable-gnutls --enable-gpl --enable-libaom --enable-libbluray --enable-libmp3lame --enable-libopus --enable-librubberband --enable-libsnappy --enable-libtesseract --enable-libtheora --enable-libvidstab --enable-libvorbis --enable-libvpx --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxvid --enable-lzma --enable-libfontconfig --enable-libfreetype --enable-frei0r --enable-libass --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-librtmp --enable-libspeex --enable-libsoxr --enable-videotoolbox --disable-libjack --disable-indev=jack
  libavutil      56. 31.100 / 56. 31.100
  libavcodec     58. 54.100 / 58. 54.100
  libavformat    58. 29.100 / 58. 29.100
  libavdevice    58.  8.100 / 58.  8.100
  libavfilter     7. 57.100 /  7. 57.100
  libavresample   4.  0.  0 /  4.  0.  0
  libswscale      5.  5.100 /  5.  5.100
  libswresample   3.  5.100 /  3.  5.100
  libpostproc    55.  5.100 / 55.  5.100
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '/Users/AAA/Desktop/ffmpeg/input.mov':
  Metadata:
    major_brand     : qt  
    minor_version   : 512
    compatible_brands: qt  
    encoder         : Lavf58.29.100
  Duration: 00:05:41.43, start: 0.000000, bitrate: 329 kb/s
    Stream #0:0: Video: h264 (High) (avc1 / 0x31637661), yuv420p, 1728x1080 [SAR 1:1 DAR 8:5], 191 kb/s, 30 fps, 30 tbr, 15360 tbn, 60 tbc (default)
    Metadata:
      handler_name    : VideoHandler
      encoder         : Lavc58.54.100 libx264
    Stream #0:1: Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz, stereo, fltp, 129 kb/s (default)
    Metadata:
      handler_name    : SoundHandler
Stream mapping:
  Stream #0:0 -> #0:0 (h264 (native) -> h264 (libx264))
  Stream #0:1 -> #0:1 (copy)
Press [q] to stop, [?] for help
[libx264 @ 0x7fe99700c400] using SAR=1/1
[libx264 @ 0x7fe99700c400] using cpu capabilities: MMX2 SSE2Fast SSSE3 SSE4.2 AVX FMA3 BMI2 AVX2
[libx264 @ 0x7fe99700c400] profile High, level 4.0
[libx264 @ 0x7fe99700c400] 264 - core 155 r2917 0a84d98 - H.264/MPEG-4 AVC codec - Copyleft 2003-2018 - http://www.videolan.org/x264.html - options: cabac=1 ref=3 deblock=1:0:0 analyse=0x3:0x113 me=hex subme=7 psy=1 psy_rd=1.00:0.00 mixed_ref=1 me_range=16 chroma_me=1 trellis=1 8x8dct=1 cqm=0 deadzone=21,11 fast_pskip=1 chroma_qp_offset=-2 threads=6 lookahead_threads=1 sliced_threads=0 nr=0 decimate=1 interlaced=0 bluray_compat=0 constrained_intra=0 bframes=3 b_pyramid=2 b_adapt=1 b_bias=0 direct=1 weightb=1 open_gop=0 weightp=2 keyint=250 keyint_min=25 scenecut=40 intra_refresh=0 rc_lookahead=40 rc=crf mbtree=1 crf=23.0 qcomp=0.60 qpmin=0 qpmax=69 qpstep=4 ip_ratio=1.40 aq=1:1.00
Output #0, mov, to '/Users/AAA/Desktop/ffmpeg/output.mov':
  Metadata:
    major_brand     : qt  
    minor_version   : 512
    compatible_brands: qt  
    encoder         : Lavf58.29.100
    Stream #0:0: Video: h264 (libx264) (avc1 / 0x31637661), yuv420p, 1728x1080 [SAR 1:1 DAR 8:5], q=-1--1, 30 fps, 15360 tbn, 30 tbc (default)
    Metadata:
      handler_name    : VideoHandler
      encoder         : Lavc58.54.100 libx264
    Side data:
      cpb: bitrate max/min/avg: 0/0/0 buffer size: 0 vbv_delay: -1
    Stream #0:1: Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz, stereo, fltp, 129 kb/s (default)
    Metadata:
      handler_name    : SoundHandler
frame=10201 fps= 92 q=-1.0 Lsize=   13349kB time=00:05:39.98 bitrate= 321.6kbits/s speed=3.07x    
video:7585kB audio:5402kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 2.785539%
[libx264 @ 0x7fe99700c400] frame I:42    Avg QP:14.79  size: 79660
[libx264 @ 0x7fe99700c400] frame P:2631  Avg QP:18.50  size:  1240
[libx264 @ 0x7fe99700c400] frame B:7528  Avg QP:18.12  size:   154
[libx264 @ 0x7fe99700c400] consecutive B-frames:  1.1%  1.0%  1.3% 96.6%
[libx264 @ 0x7fe99700c400] mb I  I16..4: 37.5% 44.6% 17.9%
[libx264 @ 0x7fe99700c400] mb P  I16..4:  0.2%  0.5%  0.2%  P16..4:  0.7%  0.1%  0.1%  0.0%  0.0%    skip:98.2%
[libx264 @ 0x7fe99700c400] mb B  I16..4:  0.0%  0.0%  0.0%  B16..8:  0.7%  0.0%  0.0%  direct: 0.0%  skip:99.3%  L0:56.2% L1:42.9% BI: 0.9%
[libx264 @ 0x7fe99700c400] 8x8 transform intra:47.4% inter:45.4%
[libx264 @ 0x7fe99700c400] coded y,uvDC,uvAC intra: 15.6% 6.6% 4.2% inter: 0.1% 0.1% 0.0%
[libx264 @ 0x7fe99700c400] i16 v,h,dc,p: 68% 29%  1%  1%
[libx264 @ 0x7fe99700c400] i8 v,h,dc,ddl,ddr,vr,hd,vl,hu: 74%  8% 16%  0%  0%  0%  0%  0%  0%
[libx264 @ 0x7fe99700c400] i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 37% 28% 14%  3%  3%  4%  4%  4%  4%
[libx264 @ 0x7fe99700c400] i8c dc,h,v,p: 90%  7%  2%  0%
[libx264 @ 0x7fe99700c400] Weighted P-Frames: Y:0.0% UV:0.0%
[libx264 @ 0x7fe99700c400] ref P L0: 76.6%  7.8% 10.3%  5.3%
[libx264 @ 0x7fe99700c400] ref B L0: 54.6% 44.2%  1.3%
[libx264 @ 0x7fe99700c400] ref B L1: 97.7%  2.3%
[libx264 @ 0x7fe99700c400] kb/s:182.73

删除第二个视频台标/水印/logo:

x1=1380px y1=860px x2=1680px y2=1040px

w=x2-x1=300px h=y2-y1=180px

"delogo=x=1380:y=860:w=300:h=180:show=0" -c:a copy /Users/AAA/Desktop/ffmpeg/output.mov

同时删除多个台标,可使用逗号分开:

"delogo=x=1440:y=40:w=260:h=40:show=0,delogo=x=1380:y=860:w=300:h=180:show=0" -c:a copy /Users/AAA/Desktop/ffmpeg/output.mov

输出:

ffmpeg version 4.2.2 Copyright (c) 2000-2019 the FFmpeg developers
  built with Apple clang version 11.0.0 (clang-1100.0.33.16)
  configuration: --prefix=/usr/local/Cellar/ffmpeg/4.2.2_1 --enable-shared --enable-pthreads --enable-version3 --enable-avresample --cc=clang --host-cflags='-I/Library/Java/JavaVirtualMachines/adoptopenjdk-13.0.1.jdk/Contents/Home/include -I/Library/Java/JavaVirtualMachines/adoptopenjdk-13.0.1.jdk/Contents/Home/include/darwin -fno-stack-check' --host-ldflags= --enable-ffplay --enable-gnutls --enable-gpl --enable-libaom --enable-libbluray --enable-libmp3lame --enable-libopus --enable-librubberband --enable-libsnappy --enable-libtesseract --enable-libtheora --enable-libvidstab --enable-libvorbis --enable-libvpx --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxvid --enable-lzma --enable-libfontconfig --enable-libfreetype --enable-frei0r --enable-libass --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-librtmp --enable-libspeex --enable-libsoxr --enable-videotoolbox --disable-libjack --disable-indev=jack
  libavutil      56. 31.100 / 56. 31.100
  libavcodec     58. 54.100 / 58. 54.100
  libavformat    58. 29.100 / 58. 29.100
  libavdevice    58.  8.100 / 58.  8.100
  libavfilter     7. 57.100 /  7. 57.100
  libavresample   4.  0.  0 /  4.  0.  0
  libswscale      5.  5.100 /  5.  5.100
  libswresample   3.  5.100 /  3.  5.100
  libpostproc    55.  5.100 / 55.  5.100
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '/Users/AAA/Desktop/ffmpeg/input.mov':
  Metadata:
    major_brand     : qt  
    minor_version   : 512
    compatible_brands: qt  
    encoder         : Lavf58.29.100
  Duration: 00:05:41.03, start: 0.000000, bitrate: 320 kb/s
    Stream #0:0: Video: h264 (High) (avc1 / 0x31637661), yuv420p, 1728x1080 [SAR 1:1 DAR 8:5], 182 kb/s, 30 fps, 30 tbr, 15360 tbn, 60 tbc (default)
    Metadata:
      handler_name    : VideoHandler
      encoder         : Lavc58.54.100 libx264
    Stream #0:1: Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz, stereo, fltp, 129 kb/s (default)
    Metadata:
      handler_name    : SoundHandler
Stream mapping:
  Stream #0:0 -> #0:0 (h264 (native) -> h264 (libx264))
  Stream #0:1 -> #0:1 (copy)
Press [q] to stop, [?] for help
[libx264 @ 0x7f8f05802000] using SAR=1/1
[libx264 @ 0x7f8f05802000] using cpu capabilities: MMX2 SSE2Fast SSSE3 SSE4.2 AVX FMA3 BMI2 AVX2
[libx264 @ 0x7f8f05802000] profile High, level 4.0
[libx264 @ 0x7f8f05802000] 264 - core 155 r2917 0a84d98 - H.264/MPEG-4 AVC codec - Copyleft 2003-2018 - http://www.videolan.org/x264.html - options: cabac=1 ref=3 deblock=1:0:0 analyse=0x3:0x113 me=hex subme=7 psy=1 psy_rd=1.00:0.00 mixed_ref=1 me_range=16 chroma_me=1 trellis=1 8x8dct=1 cqm=0 deadzone=21,11 fast_pskip=1 chroma_qp_offset=-2 threads=6 lookahead_threads=1 sliced_threads=0 nr=0 decimate=1 interlaced=0 bluray_compat=0 constrained_intra=0 bframes=3 b_pyramid=2 b_adapt=1 b_bias=0 direct=1 weightb=1 open_gop=0 weightp=2 keyint=250 keyint_min=25 scenecut=40 intra_refresh=0 rc_lookahead=40 rc=crf mbtree=1 crf=23.0 qcomp=0.60 qpmin=0 qpmax=69 qpstep=4 ip_ratio=1.40 aq=1:1.00
Output #0, mov, to '/Users/AAA/Desktop/ffmpeg/output.mov':
  Metadata:
    major_brand     : qt  
    minor_version   : 512
    compatible_brands: qt  
    encoder         : Lavf58.29.100
    Stream #0:0: Video: h264 (libx264) (avc1 / 0x31637661), yuv420p, 1728x1080 [SAR 1:1 DAR 8:5], q=-1--1, 30 fps, 15360 tbn, 30 tbc (default)
    Metadata:
      handler_name    : VideoHandler
      encoder         : Lavc58.54.100 libx264
    Side data:
      cpb: bitrate max/min/avg: 0/0/0 buffer size: 0 vbv_delay: -1
    Stream #0:1: Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz, stereo, fltp, 129 kb/s (default)
    Metadata:
      handler_name    : SoundHandler
frame=10201 fps= 85 q=-1.0 Lsize=   12862kB time=00:05:39.98 bitrate= 309.9kbits/s speed=2.83x    
video:7099kB audio:5402kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 2.893341%
[libx264 @ 0x7f8f05802000] frame I:42    Avg QP:14.32  size: 70808
[libx264 @ 0x7f8f05802000] frame P:2632  Avg QP:18.21  size:  1197
[libx264 @ 0x7f8f05802000] frame B:7527  Avg QP:18.16  size:   152
[libx264 @ 0x7f8f05802000] consecutive B-frames:  1.2%  0.9%  1.4% 96.5%
[libx264 @ 0x7f8f05802000] mb I  I16..4: 41.2% 43.0% 15.9%
[libx264 @ 0x7f8f05802000] mb P  I16..4:  0.2%  0.5%  0.2%  P16..4:  0.7%  0.1%  0.1%  0.0%  0.0%    skip:98.3%
[libx264 @ 0x7f8f05802000] mb B  I16..4:  0.0%  0.0%  0.0%  B16..8:  0.6%  0.0%  0.0%  direct: 0.0%  skip:99.3%  L0:55.8% L1:43.4% BI: 0.8%
[libx264 @ 0x7f8f05802000] 8x8 transform intra:46.7% inter:45.0%
[libx264 @ 0x7f8f05802000] coded y,uvDC,uvAC intra: 14.6% 6.7% 4.1% inter: 0.1% 0.0% 0.0%
[libx264 @ 0x7f8f05802000] i16 v,h,dc,p: 70% 28%  1%  1%
[libx264 @ 0x7f8f05802000] i8 v,h,dc,ddl,ddr,vr,hd,vl,hu: 74%  8% 17%  0%  0%  0%  0%  0%  0%
[libx264 @ 0x7f8f05802000] i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 37% 29% 14%  3%  3%  4%  4%  4%  4%
[libx264 @ 0x7f8f05802000] i8c dc,h,v,p: 90%  7%  2%  0%
[libx264 @ 0x7f8f05802000] Weighted P-Frames: Y:0.0% UV:0.0%
[libx264 @ 0x7f8f05802000] ref P L0: 73.9%  8.3% 12.1%  5.7%
[libx264 @ 0x7f8f05802000] ref B L0: 53.7% 45.3%  1.0%
[libx264 @ 0x7f8f05802000] ref B L1: 98.0%  2.0%
[libx264 @ 0x7f8f05802000] kb/s:171.01

5.批量处理视频台标/水印/logo(待填坑)

输入:

输出:

-qscale 0 参数是为了不影响资源的质量

#-b:v 3170k 是设置视频的码率,可不加

2.删除或修改音/视频的元数据信息:

ffmpeg -i "two.mp4" -map_metadata -1 -y "input.mp4"
#-map_metadata -1 就是清楚文件的元数据,-y 表示不用再次询问是否操作
ffmpeg -i input.mp4 -metadata artist=benarchen -metadata title="Test 1" output.mp4
#-metadata artist=benarchen 表示设置该资源的作者,-metadata title="Test 1" 是设置标题

还有一种情况就是在剪掉固定时长片头的同时也剪掉固定时长的片尾,FFmpeg 官方没有直接提供这中功能,一种最常用的思路是在 shell 脚本中先用 FFmpeg -i 把文件的元数据信息保留下来,再从元数据信息中提取出视频的时长,用视频的总时长减去要剪掉的开头时长后结尾时长就是我们需要的实际时长了:

#!/bin/bash
#我这里要切除的开头和结尾都是 7 秒
beg=7
end=7

#用 for 循环直接获取当前目录下的 mp4、mp3、avi 等文件循环处理,单个文件可以去掉 for 循环
for i in (*.mp4,*.mp3,*.avi ); do
	#将元数据信息临时保存到 tmp.log 文件中
    nohup /usr/local/ffmpeg/bin/ffmpeg -i "$i" > tmp.log
    #获取视频的时长,格式为  00:00:10,10 (时:分:秒,微妙)
    time="`cat /usr/local/ffmpeg/tmp.log |grep Duration: |awk  '{print $2}'|awk -F "," '{print $1}'|xargs`"
    echo $time
    #求视频的总时长,先分别求出小时、分、秒的值,这里不处理微秒,可以忽略
    hour="`echo $time |awk -F ":" '{print $1}' `"
    min="`echo $time |awk -F ":" '{print $2}' `"
    sec="`echo $time |awk -F ":" '{print $3}'|awk -F "." '{print $1}' `"
    #echo $hour $min $sec
    num1=`expr $hour * 3600`
    num2=`expr $min * 60`
    num3=$sec
    #计算出视频的总时长(秒)
    sum=`expr $num1 + $num2 + $num3`  
    
    #总时长减去开头和结尾就是截取后的视频时长,并且这里不需要再转回 hour:min:sec 的格式,直接使用结果即可
    newtime=`expr $sum - $beg - $end`
    echo $newtime
    /usr/local/ffmpeg/bin/ffmpeg -ss 00:00:07 -i $i -t $newtime -c:v copy -c:a copy /data/tmp/$i -y
done

上面的 shell 脚本可以根据实际情况作出调整。

其他操作[4]

1.分离视频音频流
ffmpeg -i input_file -vcodec copy -an output_file_video  //分离视频流
ffmpeg -i input_file -acodec copy -vn output_file_audio  //分离音频流
2.视频解复用
ffmpeg –i test.mp4 –vcodec copy –an –f m4v test.264
ffmpeg –i test.avi –vcodec copy –an –f m4v test.264
3.视频转码
ffmpeg –i test.mp4 –vcodec h264 –s 352*278 –an –f m4v test.264              //转码为码流原始文件
ffmpeg –i test.mp4 –vcodec h264 –bf 0 –g 25 –s 352*278 –an –f m4v test.264  //转码为码流原始文件
ffmpeg –i test.avi -vcodec mpeg4 –vtag xvid –qsame test_xvid.avi            //转码为封装文件
//-bf B帧数目控制,-g 关键帧间隔控制,-s 分辨率控制
4.视频封装
ffmpeg –i video_file –i audio_file –vcodec copy –acodec copy output_file
5.视频剪切
ffmpeg –i test.avi –r 1 –f image2 image-%3d.jpeg        //提取图片
ffmpeg -ss 0:1:30 -t 0:0:20 -i input.avi -vcodec copy -acodec copy output.avi    //剪切视频
//-r 提取图像的频率,-ss 开始时间,-t 持续时间
6.视频录制
ffmpeg –i rtsp://192.168.3.205:5555/test –vcodec copy out.avi
7.YUV序列播放
ffplay -f rawvideo -video_size 1920x1080 input.yuv
8.YUV序列转AVI
ffmpeg –s w*h –pix_fmt yuv420p –i input.yuv –vcodec mpeg4 output.avi
9.视频转帧序列
ffmpeg -i split.avi %d.bmp
10.帧序列合并为视频
ffmpeg -i %d.bmp -y list.mp4

其他操作[5]

视频

1.获取视频流信息 
用ffprobe可以获取到视频的所有流的具体信息

ffprobe -print_format json -show_streams -i input.mp4
1
2.多个视频拼接 
可以将几个视频拼接成一个视频 -f 表示采用concat协议,-c 表示采用什么编码器 copy表示不重新编码,如果是x264 表示将采用x264进行重新编码。

ffmpeg -y -f concat -i videolist.txt -c copy  output.mp4
1
3.视频截图 
截一张图 
-ss 表示在视频的多少S 截取一张图

ffmpeg -y -ss 8 -i input.mp4 -f image2 -vframes 1 output.jpg
1
截多张图 
-r 表示每秒截多少张图; -qscale 表示生成的截图质量,该值越小图片质量越好;%5d.jpg 表示生成的截图的命令规则,5位数的整数命名。

ffmpeg -y -ss 0 -i input.mp4 -f image2  -r 1 -t 8 -qscale 1 ./jpgs/%5d.jpg
1
4.给视频加上水印图片

ffmpeg -y -i input.mp4  -i ./logo.png filter_complex "overlay=0:0:enable=between(t,0,2)" -c:v libx264 -c:a aac -strict -2 output.mp4
1
5.图片合成视频

ffmpeg -y -f image2 -framerate 10 -i ./jpgs/%05d.jpg -c:v libx264 -r 25 -pix_fmt yuv420p output.mp4
1
6.视频添加背景音乐

ffmpeg -y -i input.mp4 -i ainiyiwannian.wav -filter_complex "[0:a] pan=stereo|c0=1*c0|c1=1*c1 [a1], [1:a] pan=stereo|c0=1*c0|c1=1*c1 [a2],[a1][a2]amix=duration=first,pan=stereo|c0<c0+c1|c1<c2+c3,pan=mono|c0=c0+c1[a]" -map "[a]" -map 0:v -c:v libx264 -c:a aac -strict -2 -ac 2 output.mp4
1
7.将视频去除音频

ffmpeg -y -i source.mp4 -an -vcodec copy output.mp4
1
8.设置视频的音量 
-vol 设置视频的音量,是以%为单位,500表示500%

ffmpeg -y -i source.mp4 -vol 500 -strict -2 -vcodec copy output.mp4
1
9.视频转码 
-vcodec 指定视频编码器,-acodec 指定音频编码器
ffmpeg -y -i input.mp4 -vcodec libx264 -acodec copy output.mp4
音频处理

1.从视频中提取音频
ffmpeg -y -i source.mp4 -vn output.wav
2.将音频用lpcm格式重新编码,指定采样率
ffmpeg -y -i source.wav -acodec pcm_s16le -ar 44100 output.wav

待整理补充一些内容

https://www.cnblogs.com/jiangzhaowei/p/8270782.html

目录:

1. FFmpeg简介 FFmpeg编码流程 FFmpeg混淆概念

2.FFmpeg操作参数

3.FFmpeg常用操作

参考

  1. ^FFmpeg删除片头方法2: https://www.cnblogs.com/frost-yen/p/5848781.html
  2. ^FFmpeg删除片头方法3: https://blog.csdn.net/yueliang2100/article/details/104292258
  3. ^FFmpeg去除水印1: https://my.oschina.net/songms/blog/3089147
  4. ^操作命令 https://www.cnblogs.com/dwdxdy/p/3240167.html
  5. ^其他操作 https://blog.csdn.net/baohonglai/java/article/details/50535955
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值