我需要一个视频来使用色度键滤镜/绿屏滤镜并将其覆盖在另一个视频上并将其作为新视频输出.
是否有用于此目的的现有库,脚本,过滤器或解决方案?
有没有办法从编码图像和视频中轻松提取DCT系数(和量化参数)?任何解码器软件都必须使用它们来解码块DCT编码的图像和视频.所以我很确定解码器知道它们是什么.有没有办法将它们暴露给使用解码器的人?
我正在实施一些直接在DCT域中工作的视频质量评估算法.目前,我的大部分代码都使用OpenCV,因此如果有人知道使用该框架的解决方案,那将会很棒.我不介意使用其他库(也许是libjpeg,但这似乎只适用于静止图像),但我主要担心的是尽可能少地执行格式化工作(我不想重新发明轮子并写入我自己的解码器).我希望能够打开OpenCV可以打开的任何视频/图像(H.264,MPEG,JPEG等),如果它是块DCT编码,则可以获得DCT系数.
在最坏的情况下,我知道我可以编写自己的块DCT代码,通过它运行解压缩的帧/图像,然后我将回到DCT域.这不是一个优雅的解决方案,我希望我能做得更好.
目前,我使用相当常见的OpenCV样板来打开图像:
IplImage *image = cvLoadImage(filename);
// Run quality assessment metric
Run Code Online (Sandbox Code Playgroud)
我用于视频的代码同样微不足道:
CvCapture *capture = cvCaptureFromAVI(filename);
while (cvGrabFrame(capture))
{
IplImage *frame = cvRetrieveFrame(capture);
// Run quality assessment metric on frame
}
cvReleaseCapture(&capture);
Run Code Online (Sandbox Code Playgroud)
在这两种情况下,我都获得了IplImageBGR格式的3通道.有什么方法可以得到DCT系数吗?
我有两个相同长度的视频,我想用ffmpeg将它们叠加到一个视频文件中.
我怎样才能做到这一点?
我有视频共享网站并使用ffmpeg转换视频,但转换需要花费大量时间.怎么能快速安全地做到?我认为当ffmpeg与GPU匹配时它对我很有帮助,但我发现没有很好的参考使用.哪个应用程序或参考可以帮助我有良好的性能.
我想为视频聊天编写自己的相机过滤器,并理想地将它们应用于任何/所有流行的视频聊天应用程序(Zoom、Hangouts、Skype 等)。我想象这个工作的方式是编写一个 macOS 应用程序,它读取相机提要,应用我的过滤器,并公开一个额外的虚拟相机。然后可以在任何视频聊天应用程序中选择该虚拟摄像机。
我花了很多时间研究如何做到这一点,但我仍然不清楚现代 macOS API 是否可行。StackOverflow 上有一些类似的问题(例如这里,这里),但它们要么没有答案,要么很老。我希望这个问题能在 2020 年收集正确方向的建议/链接/想法,以了解如何做到这一点。
这是我到目前为止所得到的:
直播社区中有一个流行的工具,称为 OBS Studio。它捕获来自不同来源(相机、桌面等)的输入,具有用于应用效果的插件系统,然后将输出流式传输到流行的服务(例如 Twitch)。但是,在 macOS 上没有将流公开为虚拟相机的功能。在关于这个(线程,线程)的讨论中,人们谈论了一个叫做 Siphon 的工具和一个叫做 CamTwist 的工具。
不幸的是,Siphon 不再公开虚拟摄像头:“SyphonInject 在 macOS 10.14 (Mojave) 中不再起作用。Apple 关闭了允许将全局目录中的脚本添加加载到任何进程的漏洞。尝试注入任何进程将无声无息失败。如果禁用 SIP,它会起作用,但这是一个糟糕的主意,我不会建议或帮助任何人这样做。”
幸运的是,CamTwist可以工作。我让它在我的 macOS Catalina 上运行,在我的相机流上应用了它的一些内置效果,并看到它在我的环聊设置中显示为一个新相机(重新启动Chrome 后)。这令人鼓舞。
不幸的是,CamTwist 相当陈旧且维护不善。它使用 Quartz Composer 来实现效果,但 Quartz Composer已被 Apple弃用,并且它可能在 Catalina 度过了最后的日子。
macOS SDK 曾经有一个名为CoreMediaIO的 API ,这可能是暴露虚拟相机的方式,但此 API 也已弃用。目前尚不清楚/什么是现代替代方案。
我想提出整个问题的另一种方式是:CamTwist 是如何实现的,它为什么在 macOS Catalina 中仍然有效,以及您将如何在 …
macos video-capture video-processing video-conversion macos-catalina
示例代码:
from moviepy.editor import *
clip = VideoFileClip('video.mp4')
clip.write_videofile('video2.mp4', fps=30)
Run Code Online (Sandbox Code Playgroud)
显示以下消息后,表明视频正在构建和写入,
Moviepy - Building video video2.mp4.
Moviepy - Writing video video2.mp4
Run Code Online (Sandbox Code Playgroud)
出现以下错误消息:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "C:\Users\User\Anaconda3\lib\site-packages\decorator.py", line 232, in fun
return caller(func, *(extras + args), **kw)
File "C:\Users\User\Anaconda3\lib\site-packages\moviepy\decorators.py", line 54, in requires_duration
return f(clip, *a, **k)
File "C:\Users\User\Anaconda3\lib\site-packages\decorator.py", line 232, in fun
return caller(func, *(extras + args), **kw)
File "C:\Users\User\Anaconda3\lib\site-packages\moviepy\decorators.py", line 135, in use_clip_fps_by_default
return f(clip, *new_a, **new_kw)
File "C:\Users\User\Anaconda3\lib\site-packages\decorator.py", line …Run Code Online (Sandbox Code Playgroud) 我需要将时间代码刻录到视频中,并且想知道这是否是ffmpeg能够做到的事情?
有没有人知道如何在FFmpeg中实现秒(或毫秒)的搜索.我目前有一个使用av_read_frame()运行视频帧的循环,我想确定此帧应该以秒为单位的时间.如果它到达某个点,那么我想寻找视频中的稍后点.顺便说一下,它不是一个视频播放器,只是处理帧.我听说我应该可以从数据包中获取dts或pts,但它总是返回0.
我正在寻找解码iPhone上本地mpeg-4视频帧的最快方法.我只是对每10帧中像素的亮度值感兴趣.我不需要在任何地方渲染视频.
我已经尝试过ffmpeg,AVAssetReader,ImageAssetGenerator,OpenCV和MPMoviePlayer,但它们都太慢了.我能得到的最快速度是2倍(一分钟内扫描2分钟).我想要接近10倍的东西.
假设我上面的尝试没有使用GPU,有没有办法用GPU上运行的东西来实现我的目标?OpenGL似乎主要用于渲染输出,但我已经看到它用作传入视频的过滤器.也许这是一个选择?
提前致谢!
从这里我知道一种编写文件的方法,可以访问其他应用程序和其他意图,但现在不推荐使用Context.MODE_WORLD_READABLE,我怎样才能安全地完成此操作?
FileOutputStream out = myActivity.openFileOutput(fileTo, Context.MODE_WORLD_READABLE);
Run Code Online (Sandbox Code Playgroud)
好的更多信息:
我正在使用这个:
intent = new Intent(Intent.ACTION_VIEW);
intent.setDataAndType(uri, "video/*");
Run Code Online (Sandbox Code Playgroud)
而uri将是我将写入SD卡位置的那个.视频将来自应用程序,所以问题是,如果现在不允许,我该如何编写文件并查看它.