草庐IT

视频特效-使用ffmpeg滤镜

视频特效-使用ffmpeg滤镜前言ffmpeg的滤镜分为简单滤镜和复杂滤镜。复杂滤镜存在多个输入和多个输出如图:在命令行中可以通过-filter_complex或-lavfi来使用。简单滤镜则只有一个输入和输出,如图:在命令行中可以通过-vf来使用。ffmpeg中的滤镜有很多,我们可以组合使用他们。举个例子,下图中就使用了多个滤镜(split,crop,vflip,overlay)。split是将输入数据拆分城两份,第一份为main,第二份为tmp。然后再通过crop裁剪tmp,再通过vflip竖直反转得到flip。然后通过overlay将flip叠加到main上输出。这些滤镜构成了一个图。每

c++ - FFmpeg 卡在缓冲区填充 C++

我正在使用ffmpeg处理来自RTSP流的一堆帧。我最终对这些帧做了很多处理,这意味着我并不总是实时提取。如果缓冲区已满,进程将挂起。我想知道以下解决方案之一是否可行/解决问题,如果可行,我将如何使用ffmpeg库实现它:1)如果我到达缓冲区挂起的点,有没有办法清除缓冲区?(我可以确定它何时挂起,我只是不知道该怎么办)。2)有没有办法让缓冲区覆盖旧数据,而总是读取最新数据?丢帧对我来说无关紧要。3)我已经发现我可以使缓冲区任意大:av_dict_set(&avd,"buffer_size","655360",0);。这可能是一个解决方案,但我不知道它需要多大/多小,因为我不知道流将发布

c++ - 我怎样才能找出这个 ffmpeg 错误代码的含义?

我正在使用函数avcodec_decode_video2.在流中的编码更改时,它返回-1094995529。该文档仅说明:Onerroranegativevalueisreturned,otherwisethenumberofbytesusedorzeroifnoframecouldbedecompressed.但是似乎没有返回代码的枚举或任何其他形式的文档。错误是什么意思,一般情况下我该如何确定? 最佳答案 来自ffmpeg的错误代码(来自avutil的error.h):http://ffmpeg.org/doxygen/trun

c++ - ffmpeg::avcodec_encode_video 设置 PTS h264

我正在尝试使用libavcodec将视频编码为H264ffmpeg::avcodec_encode_video(codec,output,size,avframe);返回一个错误,我没有正确设置avframe->pts值。我尝试将其设置为0,1、AV_NOPTS_VALUE和90khz*framenumber但仍然出现错误non-strictly-monotonicPTSffmpeg.c示例使用ffmpeg::av_rescale_q()设置packet.pts,但这仅在您对帧进行编码后调用!当与MP4V编解码器一起使用时,avcodec_encode_video()会自行正确设置pt

windows - ffmpeg 加速视频 - Windows

手册中说:ffmpeg-iinput.mkv-filter:v'setpts=0.5*PTS'output.mkv但是当我运行时:ffmpeg-iinput.mp4-filter:v'setpts=0.5*PTS'speedup.mp4我得到一个错误:[AVFilterGraph@0000000002500600]Nosuchfilter:'setpts=0.5*PTS'Erroropeningfilters!不确定这是否意味着过滤器根本无法打开或只是此过滤器不可用。如何正确运行它?或者也许我的版本不支持它,那么我在哪里可以获得可以正常工作的版本?Win32/x64二进制文件

windows - 为 Visual Studio 编译 FFMpeg 库

我正在尝试在Windows应用程序中使用FFMpeg库。我使用MingW-w64编译带有静态库的FFMpeg,一次使用x86,一次使用x86_64。目前我正在尝试将32位x86库与我的VS2008应用程序链接起来。库被添加到库路径,VS不会提示无法加载.a文件。但是我得到了几个Unresolved符号错误,比如ait_rtp_receiver.lib(ait_decoder_lib.obj):errorLNK2001:未解析的外部符号_av_free我将FFMpeg头文件导入为externC,我可以在.a中看到没有前导下划线的符号。如何使Mingw-w64的gcc和VS编译器套件的名称

linux - 如何使用 ffmpeg 从视频中简单地删除重复帧

首先,我先说我不是视频处理专家,尽管我多年来一直在摆弄ffmpeg(以相当有限的方式)。因此,我不太了解人们经常使用的所有语言......以及它如何影响我在操作中尝试做的事情......但无论如何我都会尝试一下......我在这里检查了一些链接,例如:ffmpeg-removesequentiallyduplicateframes...但内容并没有真正帮助我。我有数百个视频剪辑是在Windows和Linux下使用ffmpeg和其他类似应用程序创建的。但是,他们在视频中显示“静止”的时间存在一些问题。例如,假设我们有一些网站将实时视频流式传输到Web浏览器中的Flash视频播放器/插件中

windows - 向正在运行的 ffmpeg 实例发送搜索命令

我已经使用ffmpeg库创建了一个视频播放器,但想知道是否可以使用ffmpeg.exe和管道,特别是搜索部分。是否可以将搜索命令发送到正在运行的ffmpeg.exe实例?帮助中没有这样的命令,但它确实显示了可用于向过滤器发送命令的“c”命令。但是,我找不到任何关于如何以这种方式处理过滤器的更多文档,所有示例都假定命令行参数,也找不到过滤器是否可用于在视频中搜索。 最佳答案 实际上搜索命令有点记录在ffmpegdocumentation中:Bothmovieandamoviesupportthefollowingcommands:se

windows - FFMPEG 帧到 DirectX 表面硬件加速

我使用ffmpeg函数解码h264帧并在windows平台上的窗口中显示。我使用的方法如下(来自FFMPEGFrametoDirectXSurface):AVFrame*frame;avcodec_decode_video(_ffcontext,frame,etc...);lockYourSurface();uint8_t*buf=getPointerToYourSurfacePixels();//CreateanAVPicturestructurewhichcontainsapointertotheRGBsurface.AVPicturepict;memset(&pict,0,siz

c# - ffmpeg 输出管道到命名的 Windows 管道

这个问题与我之前的问题有关:Convertingrawframesintowebmlivestream我想将视频传输到ffmpeg并通过另一个管道读回,但我无法通过管道传输ffmpeg.exe的输出到Windows上的命名管道。我在C#中对管道的定义:NamedPipeServerStreamp_to_ffmpeg;NamedPipeServerStreamp_from_ffmpeg;p_to_ffmpeg=newNamedPipeServerStream("to_ffmpeg",PipeDirection.Out,1,PipeTransmissionMode.Byte);p_from