文件夹

1. FFmpeg滤镜文档

2. 演示样例

  2.1 缩放

  2.2 视频加速

  2.3 滤镜图,链和滤镜关系

  2.4 多个输入覆盖同一个2x2 网格

  2.5 转义字符

  2.6 烧录时间码

  2.7 描写叙述命令行參数

  2.8 測试源

3. 滤镜列表

4. 其他滤镜演示样例

5. 开发自己的滤镜



FFmpeg加入了非常多滤镜。查看哪些滤镜有效可用命令:

# ./ffmpeg -filters.

 

1. FFmpeg滤镜文档

很多其它的信息和每一个滤镜的使用演示样例可查看FFmpeg的滤镜文档: 

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



2. 演示样例

2.1 缩放

将输入的640x480缩小到320x240输出:  

# ./ffmpeg -i input -vf scale=iw/2:-1 output



iw  : 是输入的宽度;在本例中,输入宽度为640. 640/2 = 320. 

-1  : 通知缩放滤镜在输出时保持原始的宽高比,因此本例中缩放滤镜将选择240.



​2.2
视频加速

1. 加速/减慢视频

能够使用 “setpts"(http://ffmpeg.org/ffmpeg.html#asetpts_002c-setpts)滤镜来改变视频速度。



加速视频命令: 

# ./ffmpeg -i input.mkv -filter:v "setpts=0.5*PTS" output.mkv



Note : 这种方法在实现你想要的速度时。会採取丢帧策略。

假设想避免丢帧。能够指定输出的帧率比输入的帧率高的办法。

比如,输入的帧率为4, 指定输出的帧率为4x, 即16fps :

# ./ffmpeg -i input.mkv -r 16 -filter:v "setpts=0.125*PTS" -an output.mkv



减慢视频命令: 

# ./ffmpeg -i input.mkv -filter:v "setpts=2.0*PTS" output.mkv



2. 加速/减慢音频

能够使用" atempo" 音频滤镜来加速或减慢音频。

如双倍速音频命令: 

# ./ffmpeg -i input.mkv -filter:a "atempo=2.0" -vn output.mkv



"atempo"滤镜对音频速度调整限制在0.5 到 2.0 之间。(即半速或倍速)。

假设有必要。能够使用多个atempo滤镜来实现,如以下的命令实现四倍速音频:

# ./ffmpeg -i input.mkv -filter:a "atempo=2.0,atempo=2.0" -vn output.mkv



使用更复杂的滤镜图,能够同一时候加速视频和音频:

# ./ffmpeg -i input.mkv -filter_complex "[0:v]setpts=0.5*PTS[v];[0:a]atempo=2.0[a]" -map "[v]" -map "[a]" output.mkv



2.3 滤镜图,链,和滤镜关系

FFmpeg命令行中,跟在 "-vf"之后的就是一个滤镜图。

滤镜图能够包括多个滤镜链,而每一个滤镜链又能够包括多个滤镜。

尽管一个完整的滤镜图描写叙述非常复杂,但能够简化以避免歧义。

滤镜链使用";"分隔,滤镜链中滤镜使用","分隔。

而且,滤镜链假设没有指定输入或输出,则默认使用前面的滤镜链的输出为输入。并输出给后面的滤镜链做输入。

以下的命令行是相等的:

ffmpeg -i input -vf [in]scale=iw/2:-1[out] output

ffmpeg -i input -vf scale=iw/2:-1 output               # the input and output are implied without ambiguity



对于以下: 

ffmpeg -i input -vf [in]yadif=0:0:0[middle];[middle]scale=iw/2:-1[out] output 

                                                       # 两个链的方式,每一个链一个滤镜,链间使用[middle]填充

ffmpeg -i input -vf [in]yadif=0:0:0,scale=iw/2:-1[out] output                 

                                                       # 一个链的方式,链包括两个滤镜,使用默认链接

ffmpeg -i input -vf yadif=0:0:0,scale=iw/2:-1  output  # 输入输出也使用默认链接



2.4. 多个输入覆盖同一个2x2网格

下例中有四个输入,并使用 -filter_complex滤镜链接。

这个样例中四个输入都是 "-f lavfi -i testsrc", 也能够用别的输入取代。

在滤镜图中,第一个输入被填充到右下角,并设置成高度的两倍。

其他三个输入使用独立的滤镜"hflip, negate,和 edgedetect"。

覆盖视频滤镜被使用多次。后面三个都覆盖到第一个之上。

覆盖滤镜的偏移量在输入上形成一个网格。

# ./ffmpeg -f lavfi -i testsrc -f lavfi -i testsrc -f lavfi -i testsrc -f lavfi -i testsrc 

-filter_complex "[0:0]pad=iw*2:ih*2[a];[1:0]negate[b];[2:0]hflip[c];

[3:0]edgedetect[d];[a][b]overlay=w[x];[x][c]overlay=0:h[y];[y][d]overlay=w:h" 

-y -c:v ffv1 -t 5 multiple_input_grid.avi



2.5 转义字符

如文档中的描写叙述,滤镜间的","分隔符是必须的。但它也会出如今參数中。如以下的"select"滤镜:

# ./ffmpeg -i input -vf select='eq(pict_type\,PICT_TYPE_I)' output  
     # to select only I frames



作为一个选择。在滤镜图中相同能够在双引號中使用空格,这样更方便阅读:

# ./ffmpeg -i input -vf "select=eq(pict_type,PICT_TYPE_I)" output          # to select only I frames

# ./ffmpeg -i input -vf "yadif=0:-1:0, scale=iw/2:-1" output               # deinterlace then resize



2.6 烧录时间码

使用 "drawtext"视频滤镜。

PAL 25 fps non drop frame: 

ffmpeg -i in.mp4 -vf "drawtext=fontfile=/usr/share/fonts/truetype/DroidSans.ttf: timecode='09\:57\:00\:00': r=25: \

x=(w-tw)/2: y=h-(2*lh): fontcolor=white: box=1: boxcolor=0x00000000@1" -an -y out.mp4



 NTSC 30 fps drop frame 

(change the : to a ; before the frame count)_________________________________________________________

                                                                                                     \

ffmpeg -i in.mp4 -vf "drawtext=fontfile=/usr/share/fonts/truetype/DroidSans.ttf: timecode='09\:57\:00\;00': r=30: \

x=(w-tw)/2: y=h-(2*lh): fontcolor=white: box=1: boxcolor=0x00000000@1" -an -y out.mp4



2.7 描写叙述命令行參数

构建复杂的滤镜图时,会使命令行看起来一团混乱,怎样使滤镜图命令行可管理就变得非常实用了。

以下的样例包括三个滤镜,yadif, scale, drawtext的滤镜图的脚本:

 

#!/bin/bash

# ffmpeg test script



path="/path/to/file/"



in_file="in.mp4"

out_file="out.mp4"



cd $path



filter="-vf \"yadif=0:-1:0, scale=400:226, drawtext=fontfile=/usr/share/fonts/truetype/DroidSans.ttf: \

text='tod- %X':x=(w-text_w)/2:y=H-60 :fontcolor=white :box=1:boxcolor=0x00000000@1\""

codec="-vcodec libx264  -pix_fmt yuv420p -b:v 700k -r 25 -maxrate 700k -bufsize 5097k"



command_line="ffmpeg -i $in_file $filter $codec -an $out_file"



echo $command_line

eval $command_line

exit



NOTE: 包括整个滤镜图的双引號须要使用转义符 \", 

eval $command_line变量用于避免转义符丢失。

2.8 測试源

testsrc源滤镜生成一个測试视频源,包括有颜色模式。灰度值和时间戳。

它在用于測试目的时非常实用。

以下的样例生成一个10秒的输出。30fps,共300帧,帧大小为 1280x720:

# ./ffmpeg -f lavfi -i testsrc=duration=10:size=1280x720:rate=30 output.mpg



使用 smptebars源滤镜的样例:

# ./ffmpeg -f lavfi -i "smptebars=duration=5:size=1280x720:rate=30" output.mp4



ffplay相同能用于查看结果滤镜图:

ffplay -f lavfi -i "testsrc=duration=10:size=1280x720:rate=30"



3. 滤镜列表

滤镜和libavfilter绑定在一起,如 4.3.100(as configured with --enable-gpl). 

使用外部库的滤镜并未列在这里,如frei0r.能够查看FFMPEG的滤镜文档。

滤镜列表约定:

  T.. = Timeline support

  .S. = Slice threading

  ..C = Commmand support

  A = Audio input/output

  V = Video input/output

  N = Dynamic number and/or type of input/output

  | = Source or sink filter



滤镜:

 ... aconvert         A->A       Convert the input audio to sample_fmt:channel_layout.

 T.. adelay           A->A       延迟一个或多个音频通道

 ... aecho            A->A       给音频加入回音

 ... aeval            A->A       Filter audio signal according to a specified expression.

 T.. afade            A->A       Fade in/out input audio.

 ... aformat          A->A       Convert the input audio to one of the specified formats.

 ... ainterleave      N->A       Temporally interleave audio inputs.

 ... allpass          A->A       Apply a two-pole all-pass filter.

 ... amerge           N->A       Merge two or more audio streams into a single multi-channel stream.

 ... amix             N->A       Audio mixing.

 ... anull            A->A       Pass the source unchanged to the output.

 T.. apad             A->A       Pad audio with silence.

 ... aperms           A->A       Set permissions for the output audio frame.

 ... aphaser          A->A       Add a phasing effect to the audio.

 ... aresample        A->A       重採样音频数据

 ... aselect          A->N       选择音频帧给输出

 ... asendcmd         A->A       Send commands to filters.

 ... asetnsamples     A->A       Set the number of samples for each output audio frames.

 ... asetpts          A->A       Set PTS for the output audio frame.

 ... asetrate         A->A       Change the sample rate without altering the data.

 ... asettb           A->A       Set timebase for the audio output link.

 ... ashowinfo        A->A       Show textual information for each audio frame.

 ... asplit           A->N       Pass on the audio input to N audio outputs.

 ... astats           A->A       Show time domain statistics about audio frames.

 ... astreamsync      AA->AA     Copy two streams of audio data in a configurable order.

 ..C atempo           A->A       Adjust audio tempo.

 ... atrim            A->A       Pick one continuous section from the input, drop the rest.

 ... bandpass         A->A       Apply a two-pole Butterworth band-pass filter.

 ... bandreject       A->A       Apply a two-pole Butterworth band-reject filter.

 ... bass             A->A       Boost or cut lower frequencies.

 ... biquad           A->A       Apply a biquad IIR filter with the given coefficients.

 ... channelmap       A->A       Remap audio channels.

 ... channelsplit     A->N       Split audio into per-channel streams.

 ... compand          A->A       Compress or expand audio dynamic range.

 ... earwax           A->A       Widen the stereo image.

 ... ebur128          A->N       EBU R128 scanner.

 ... equalizer        A->A       Apply two-pole peaking equalization (EQ) filter.

 ... highpass         A->A       Apply a high-pass filter with 3dB point frequency.

 ... join             N->A       Join multiple audio streams into multi-channel output.

 ... lowpass          A->A       Apply a low-pass filter with 3dB point frequency.

 ... pan              A->A       Remix channels with coefficients (panning).

 ... replaygain       A->A       ReplayGain scanner.

 ... silencedetect    A->A       检測静音

 ... treble           A->A       Boost or cut upper frequencies.

 T.C volume           A->A       改变输入音量

 ... volumedetect     A->A       检測音频音量

 ... aevalsrc         |->A       Generate an audio signal generated by an expression.

 ... anullsrc         |->A       Null audio source, return empty audio frames.

 ... sine             |->A       Generate sine wave audio signal.

 ... anullsink        A->|       Do absolutely nothing with the input audio.

 ... alphaextract     V->N       Extract an alpha channel as a grayscale image component.

 ... alphamerge       VV->V      Copy the luma value of the second input into the alpha channel of the first input.

 T.. bbox             V->V       Compute bounding box for each frame.

 ... blackdetect      V->V       Detect video intervals that are (almost) black.

 ... blackframe       V->V       检測差点儿全黑的帧

 TS. blend            VV->V      Blend two video frames into each other.

 T.. boxblur          V->V       Blur the input.

 T.. colorbalance     V->V       Adjust the color balance.

 T.. colorchannelmixer V->V       Adjust colors by mixing color channels.

 T.. colormatrix      V->V       Convert color matrix.

 ... copy             V->V       复制输入视频到输出

 ... crop             V->V       裁剪输入视频

 T.. cropdetect       V->V       自己主动检測裁剪尺寸

 TS. curves           V->V       Adjust components curves.

 T.. dctdnoiz         V->V       Denoise frames using 2D DCT.

 ... decimate         N->V       Decimate frames (post field matching filter).

 ... dejudder         V->V       Remove judder produced by pullup.

 T.. delogo           V->V       去掉输入视频的logo

 ... deshake          V->V       Stabilize shaky video.

 T.. drawbox          V->V       在输入视频上画一个颜色块

 T.. drawgrid         V->V       在输入视频上画一个颜色网格

 T.. edgedetect       V->V       检測并画边缘

 ... elbg             V->V       Apply posterize effect, using the ELBG algorithm.

 ... extractplanes    V->N       Extract planes as grayscale frames.

 .S. fade             V->V       Fade in/out input video.

 ... field            V->V       Extract a field from the input video.

 ... fieldmatch       N->V       Field matching for inverse telecine.

 T.. fieldorder       V->V       Set the field order.

 ... format           V->V       Convert the input video to one of the specified pixel formats.

 ... fps              V->V       强制成常量帧率Force constant framerate.

 ... framepack        VV->V      Generate a frame packed stereoscopic video.

 T.. framestep        V->V       每N帧中选择一帧

 T.. geq              V->V       Apply generic equation to each pixel.

 T.. gradfun          V->V       Debands video quickly using gradients.

 TS. haldclut         VV->V      Adjust colors using a Hald CLUT.

 .S. hflip            V->V       Horizontally flip the input video.

 T.. histeq           V->V       Apply global color histogram equalization.

 ... histogram        V->V       计算并画直方图

 T.. hqdn3d           V->V       Apply a High Quality 3D Denoiser.

 T.C hue              V->V       Adjust the hue and saturation of the input video.

 ... idet             V->V       隔行检測滤镜

 T.. il               V->V       去隔行或隔行场

 ... interlace        V->V       转换逐行视频成隔行视频

 ... interleave       N->V       Temporally interleave video inputs.

 ... kerndeint        V->V       Apply kernel deinterlacing to the input.

 TS. lut3d            V->V       Adjust colors using a 3D LUT.

 T.. lut              V->V       Compute and apply a lookup table to the RGB/YUV input video.

 T.. lutrgb           V->V       Compute and apply a lookup table to the RGB input video.

 T.. lutyuv           V->V       Compute and apply a lookup table to the YUV input video.

 ... mcdeint          V->V       Apply motion compensating deinterlacing.

 ... mergeplanes      N->V       Merge planes.

 ... mp               V->V       Apply a libmpcodecs filter to the input video.

 ... mpdecimate       V->V       Remove near-duplicate frames.

 T.. negate           V->V       Negate input video.

 ... noformat         V->V       Force libavfilter not to use any of the specified pixel formats for the input to the next filter.

 TS. noise            V->V       Add noise.

 ... null             V->V       Pass the source unchanged to the output.

 T.C overlay          VV->V      Overlay a video source on top of the input.

 T.. owdenoise        V->V       Denoise using wavelets.

 ... pad              V->V       Pad the input video.

 ... perms            V->V       Set permissions for the output video frame.

 T.. perspective      V->V       Correct the perspective of video.

 ... phase            V->V       Phase shift fields.

 ... pixdesctest      V->V       Test pixel format definitions.

 T.C pp               V->V       Filter video using libpostproc.

 ... psnr             VV->V      Calculate the PSNR between two video streams.

 ... pullup           V->V       Pullup from field sequence to frames.

 T.. removelogo       V->V       Remove a TV logo based on a mask image.

 TSC rotate           V->V       Rotate the input image.

 T.. sab              V->V       Apply shape adaptive blur.

 ... scale            V->V       Scale the input video size and/or convert the image format.

 ... select           V->N       选择视频帧并传给输出

 ... sendcmd          V->V       Send commands to filters.

 ... separatefields   V->V       Split input video frames into fields.

 ... setdar           V->V       Set the frame display aspect ratio.

 ... setfield         V->V       Force field for the output video frame.

 ... setpts           V->V       Set PTS for the output video frame.

 ... setsar           V->V       Set the pixel sample aspect ratio.

 ... settb            V->V       Set timebase for the video output link.

 ... showinfo         V->V       Show textual information for each video frame.

 ... shuffleplanes    V->V       Shuffle video planes

 T.. smartblur        V->V       Blur the input video without impacting the outlines.

 ... split            V->N       Pass on the input to N video outputs.

 T.C spp              V->V       Apply a simple post processing filter.

 ... stereo3d         V->V       Convert video stereoscopic 3D view.

 ... super2xsai       V->V       Scale the input by 2x using the Super2xSaI pixel art algorithm.

 ... swapuv           V->V       Swap U and V components.

 ... telecine         V->V       Apply a telecine pattern.

 ... thumbnail        V->V       Select the most representative frame in a given sequence of consecutive frames.

 ... tile             V->V       Tile several successive frames together.

 ... tinterlace       V->V       Perform temporal field interlacing.

 .S. transpose        V->V       Transpose input video.

 ... trim             V->V       Pick one continuous section from the input, drop the rest.

 T.. unsharp          V->V       Sharpen or blur the input video.

 ... vflip            V->V       Flip the input video vertically.

 T.. vignette         V->V       Make or reverse a vignette effect.

 T.. w3fdif           V->V       Apply Martin Weston three field deinterlace.

 TS. yadif            V->V       对输入图像去隔行

 ... cellauto         |->V       Create pattern generated by an elementary cellular automaton.

 ..C color            |->V       Provide an uniformly colored input.

 ... haldclutsrc      |->V       Provide an identity Hald CLUT.

 ... life             |->V       Create life.

 ... mandelbrot       |->V       Render a Mandelbrot fractal.

 ... mptestsrc        |->V       Generate various test pattern.

 ... nullsrc          |->V       Null video source, return unprocessed video frames.

 ... rgbtestsrc       |->V       Generate RGB test pattern.

 ... smptebars        |->V       Generate SMPTE color bars.

 ... smptehdbars      |->V       Generate SMPTE HD color bars.

 ... testsrc          |->V       Generate test pattern.

 ... nullsink         V->|       Do absolutely nothing with the input video.

 ... avectorscope     A->V       Convert input audio to vectorscope video output.

 ... concat           N->N       Concatenate audio and video streams.

 ... showspectrum     A->V       Convert input audio to a spectrum video output.

 ... showwaves        A->V       Convert input audio to a video output.

 ... amovie           |->N       Read audio from a movie source.

 ... movie            |->N       Read from a movie source.

 ... ffbuffersink     V->|       Buffer video frames, and make them available to the end of the filter graph.

 ... ffabuffersink    A->|       Buffer audio frames, and make them available to the end of the filter graph.

 ... abuffer          |->A       Buffer audio frames, and make them accessible to the filterchain.

 ... buffer           |->V       Buffer video frames, and make them accessible to the filterchain.

 ... abuffersink      A->|       Buffer audio frames, and make them available to the end of the filter graph.

 ... buffersink       V->|       Buffer video frames, and make them available to the end of the filter graph.

 ... afifo            A->A       Buffer input frames and send them when they are requested.

 ... fifo             V->V       Buffer input images and send them when they are requested.



4. 其他滤镜演示样例

Fancy Filtering Examples (http://trac.ffmpeg.org/wiki/FancyFilteringExamples)

– 各种迷幻效果和怪异滤镜的演示样例

 

5. 开发自己的滤镜

See FFmpeg filter HOWTO(http://blog.chinaunix.net/uid-26000296-id-3068068.html)

FFmpeg滤镜使用指南的更多相关文章

  1. FFmpeg滤镜实现区域视频增强 及 D3D实现视频播放区的拉大缩小

    1.区域视频增强 FFmpeg滤镜功能十分强大,用滤镜可以实现视频的区域增强功能. 用eq滤镜就可以实现亮度.对比度.饱和度等的常用视频增强功能. 推荐两篇写得不错的博文: (1)ffmpeg综合应用 ...

  2. FFmpeg滤镜代码级分析

    http://blog.chinaunix.net/uid-26000296-id-3322071.html 前一篇文章<为FFmpeg添加自定义滤镜>详细讲述了FFmpeg的滤镜添加步骤 ...

  3. FFMpeg 滤镜中英文对照

    FFMpeg ver 20160213-git-588e2e3 滤镜中英文对照 2016.02.17 by 1CM T.. = Timeline support 支持时间轴 .S. = Slice t ...

  4. FFmpeg 滤镜及其效果

    原文地址:https://blog.csdn.net/dangxw_/article/details/49001413 代码中使用滤镜参见上一篇博客:http://blog.csdn.net/dang ...

  5. Qt与FFmpeg联合开发指南(一)——解码(1):功能实现

    前言:对于从未接触过音视频编解码的同学来说,使用FFmpeg的学习曲线恐怕略显陡峭.本人由于工作需要,正好需要在项目中使用.因此特地将开发过程总结下来.只当提供给有兴趣的同学参考和学习. 由于FFmp ...

  6. FFmpeg滤镜使用

    滤镜(filter)详细介绍参考官方文档. 常用的滤镜功能,像图像加水印/字幕.去logo.图形旋转缩放等,但滤镜不仅仅包括视频部分,还包括音频处理的,像变声变调.声场控制(重低音/留声机/摇滚等效果 ...

  7. Qt与FFmpeg联合开发指南(二)——解码(2):封装和界面设计

    与解码相关的主要代码在上一篇博客中已经做了介绍,本篇我们会先讨论一下如何控制解码速度再提供一个我个人的封装思路.最后回归到界面设计环节重点看一下如何保证播放器界面在缩放和拖动的过程中保证视频画面的宽高 ...

  8. Qt与FFmpeg联合开发指南(三)——编码(1):代码流程演示

    前两讲演示了基本的解码流程和简单功能封装,今天我们开始学习编码.编码就是封装音视频流的过程,在整个编码教程中,我会首先在一个函数中演示完成的编码流程,再解释其中存在的问题.下一讲我们会将编码功能进行封 ...

  9. Qt与FFmpeg联合开发指南(四)——编码(2):完善功能和基础封装

    上一章我用一个demo函数演示了基于Qt的音视频采集到编码的完整流程,最后经过测试我们也发现了代码中存在的问题.本章我们就先处理几个遗留问题,再对代码进行完善,最后把编码功能做基础封装. 一.遗留问题 ...

随机推荐

  1. 百度AI车牌识别测试

    测试背景 百度已发布诸多AI应用,其中包含车牌识别,免费使用量是200次/日.付费的话,按月调用次数在20万次到50万次之间,每日10000次,月费用为0.0035*300000=1050元. 详见: ...

  2. js技巧(三)

    1.检测浏览器,search的用法 if(window.navigator.userAgent.search(/firefox/i)!=-1){ alert('ff'); } else if(wind ...

  3. Git——github高级

    分支管理 分支不是越多越好,只求一个稳定的分支,即master不要轻易去更改 对应master要有一个开发者分支,保证mater分支的稳定性 所有的功能都在开发者分支上进行 在所有功能开发后新建发布分 ...

  4. 基于Crypto++的aes 字符串加解密实现

    esaes.h: #ifndef ESAES_H #define ESAES_H #include <cryptopp/aes.h> #include <iostream> # ...

  5. 输入一个链表,按链表值从尾到头的顺序返回一个ArrayList

    package algorithms; import java.util.ArrayList; import java.util.Stack; /** * public class ListNode ...

  6. 00Cascading Style Sheet

    Cascading Style Sheet CSS(Cascading Style Sheet)即层叠样式表,简称样式表.要理解层叠样式表的概念先要理解样式的概念.样式就是对网页中的 元素(字体.段落 ...

  7. HDU多校Round 7

    Solved:2 rank:293 J. Sequense 不知道自己写的什么东西 以后整数分块直接用 n / (n / i)表示一个块内相同n / i的最大i #include <bits/s ...

  8. 简单的jsonp实现跨域原理

    什么原因使jsonp诞生?  传说,浏览器有一个很重要的安全限制,叫做"同源策略".同源是指,域名,协议,端口相同.举个例子,用一个浏览器分别打开了百度和谷歌页面,百度页面在执行脚 ...

  9. python爬虫29 | 使用scrapy爬取糗事百科的例子,告诉你它有多厉害!

    是时候给你说说 爬虫框架了 使用框架来爬取数据 会节省我们更多时间 很快就能抓取到我们想要抓取的内容 框架集合了许多操作 比如请求,数据解析,存储等等 都可以由框架完成 有些小伙伴就要问了 你他妈的 ...

  10. Codeforces 938C - Constructing Tests

    传送门:http://codeforces.com/contest/938/problem/C 给定两个正整数n,m(m≤n),对于一个n阶0-1方阵,其任意m阶子方阵中至少有一个元素“0”,则可以求 ...