标签: video-processing

使用 MATLAB 同时播放多个视频

我搜索了互联网和堆栈溢出,但找不到解决方案,甚至找不到对我的问题有帮助的提示。

我需要在 MATLAB 中编写一个专门的视频注释软件,该软件必须能够在 GUI 上同时播放多个视频(至少 2 个)。视频文件采用 XVID 编码。到目前为止,我基本上只是调整了 mathworks.com 的视频播放示例(xylophon.avi,请参阅 movie() 描述)。

我熟悉 mmreader、VideoReader、movie 和 implay 功能,但仍然面临两个问题:

  1. 即使我只读入少量帧(如 xylophon.avi 示例),我的程序很快就会超出可用内存。而且,即使是相对较少的帧(比如 100),读取也需要相当长的时间。

  2. movie() 函数是同步的,因此在第一个视频完成之前第二个视频不会开始。如何同时调用两个 movie() 函数?或者是否有另一种方法可以同时显示两个(或更多)视频?

有什么建议么?谢谢!

video matlab video-processing

5
推荐指数
1
解决办法
5407
查看次数

对于 kCVPixelFormatType_420YpCbCr8BiPlanarVideoRange,appendPixelBuffer 返回 NO

我有以下 AVAssetWriterInputPixelBufferAdaptor:

\n\n
NSMutableDictionary *attributes = [[NSMutableDictionary alloc] init];\n[attributes setObject:[NSNumber numberWithUnsignedInt:kCVPixelFormatType_420YpCbCr8BiPlanarVideoRange] forKey:(NSString*)kCVPixelBufferPixelFormatTypeKey];\n[attributes setObject:[NSNumber numberWithUnsignedInt:frameSize.width] forKey:(NSString*)kCVPixelBufferWidthKey];\n[attributes setObject:[NSNumber numberWithUnsignedInt:frameSize.height] forKey:(NSString*)kCVPixelBufferHeightKey];\n\nadaptor = [AVAssetWriterInputPixelBufferAdaptor assetWriterInputPixelBufferAdaptorWithAssetWriterInput:writerInput   sourcePixelBufferAttributes:attributes];\n
Run Code Online (Sandbox Code Playgroud)\n\n

我尝试使用以下命令附加从 2 个平面创建的像素缓冲区(视频格式类型 kCVPixelFormatType_420YpCbCr8BiPlanarVideoRange):

\n\n
//Pixel buffer\nCVPixelBufferRef buffer = NULL;\n\n/*Pixel options*/\nNSDictionary *options = [NSDictionary dictionaryWithObjectsAndKeys:\n                       [NSNumber numberWithBool:YES],     kCVPixelBufferCGImageCompatibilityKey,\n                       [NSNumber numberWithBool:YES], kCVPixelBufferCGBitmapContextCompatibilityKey,\n                       nil]\n\nvoid* planesAdress[2] = { (void*)firstFrameGray, (void*)firstFrameUV};\nsize_t planesWitdh[2] = {640, 320};\nsize_t planesHeight[2] = { 480, 240};\nsize_t planesBytesPerRow[2] = { 640, 640};\n\n\nCVReturn retw = CVPixelBufferCreateWithPlanarBytes(kCFAllocatorDefault, 640, 480, kCVPixelFormatType_420YpCbCr8BiPlanarVideoRange, nil, nil, 2,planesAdress, planesWitdh, planesHeight, planesBytesPerRow, NULL, NULL, NULL, &buffer);\n …
Run Code Online (Sandbox Code Playgroud)

objective-c video-processing avfoundation ios avcapturesession

5
推荐指数
0
解决办法
2356
查看次数

从嘈杂的位置数据中获取有意义的速度信息

如果这个问题发布在错误的 stackexchange 网站上 - 请建议我可以将其迁移到哪里!

\n\n

我正在研究一个物体在与墙壁以及其他物体一起经历多种条件下的速度。物体位置的原始数据略有噪声,原因有二:一是视频的分辨率有限,二是我的跟踪软件在跟踪物体时也存在一些误差(因为物体的图像略有变化)随着时间的推移)。

\n\n

如果简单地使用物体位置的原始数据来计算物体的速度,那么当物体以高帧率跟踪时,会存在很大的误差(大于速度的误差)。

\n\n

我最感兴趣的是物体在碰撞前后的速度,因此这是一个重要的问题。

\n\n

我已经考虑/尝试过的可能选项。

\n\n
    \n
  • 对位置数据应用离散卡尔曼滤波器:这是有关相关问题的帖子中经常出现的解决方案。然而,考虑到当我们开始平滑数据时我们已经拥有所有数据,卡尔曼滤波器是利用可用数据的最佳方法吗?我的理解是,过滤器是针对随着时间推移传入的数据而设计的(例如实时接收的位置数据而不是完整的位置数据集)。
  • \n
  • 对位置数据应用 Savitsky-Golay 平滑:当我在数据上尝试此操作时,我发现每次碰撞后,在 \xc2\xb110 数据点区域中都会引入明显的伪影。我怀疑这与碰撞时的显着加速度有关,但在尝试了一系列 SG 平滑参数后,我无法消除伪影。
  • \n
  • 分离碰撞时的数据,然后使用移动平均值平滑速度:为了克服每次碰撞时加速度带来的问题,我将每个碰撞点的数据分成多个系列。例如,如果发生三个碰撞,数据将分为四个系列。然后计算每个数据系列的速度并使用移动平均值进行平滑。
  • \n
\n\n

此外,我的一些同事建议通过低通滤波器传递速度信息,但我没有尝试过。

\n\n

下面两个问题与我相关,仅供参考。

\n\n

系列数据平滑

\n\n

流畅的 GPS 数据

\n\n

此外,下面的论文似乎还提供了如何实现卡尔曼滤波器的一个很好的建议,尽管是针对实时数据。

\n\n

http://transportation.ce.gatech.edu/sites/default/files/files/smoothing_methods_Design_to_minimize_the_impact_of_gps_random_error_on_travel_distance_speed_and_acceleration_profile_estimates-trr.pdf

\n

video-processing noise smoothing

5
推荐指数
1
解决办法
4220
查看次数

Python .avi 到 .mp4

我需要一些 python 代码来实现这个函数。我已经在 Ubuntu 中安装了 ffmpeg。

def convert_avi_to_mp4(avi_file.avi):
   mp4_file = None
   #some code to do the job
   return mp4_file
Run Code Online (Sandbox Code Playgroud)

谢谢

python ffmpeg video-processing

5
推荐指数
1
解决办法
2万
查看次数

创建适用于移动设备的二进制文件扩展名读取器

它是一个古老的二进制文件扩展名,实际上是由 Inter-Tel Web Conference 软件创建的视频文件。它包含屏幕录制视频和语音音频,还可以捕获会议期间的键盘聊天记录、与会者和文档管理器窗口。它可以通过 Inter-Tel Collaboration Player 来播放,这是一个包含在网络会议软件包中的独立应用程序。

我现在想做的是找到一种在移动设备上播放这些文件的方法,尽管 Inter-Tel Collaboration Player 提供以 AVI 格式导出文件,但我想知道如何为此制作一个命令行脚本,因为该应用程序有很多Windows 7、8、10 的问题,没有 Mac OS 版本。

为这种扩展创建新播放器的方法是什么?

video-processing decoder audio-player

5
推荐指数
1
解决办法
1718
查看次数

如何在运行 Tensorflow 推理会话之前批处理多个视频帧

我做了一个项目,基本上使用谷歌对象检测 API 和张量流。

我所做的就是使用预先训练的模型进行推理:这意味着实时对象检测,其中输入是网络摄像头的视频流或使用 OpenCV 的类似内容。

现在我得到了相当不错的性能结果,但我想进一步提高 FPS。

因为我的经验是,Tensorflow 在推理时使用了我的整个内存,但 GPU 使用率根本没有达到最大值(NVIDIA GTX 1050 笔记本电脑上约为 40%,NVIDIA Jetson Tx2 上约为 6%)。

所以我的想法是通过增加每个会话运行中输入的图像批量大小来增加 GPU 使用率。

所以我的问题是:在将输入视频流的多个帧提供给之前,如何将它们一起批处理sess.run()

查看我object_detetection.py的 github 存储库上的代码:( https://github.com/GustavZ/realtime_object_detection )。

如果您能提出一些提示或代码实现,我将非常感激!

import numpy as np
import os
import six.moves.urllib as urllib
import tarfile
import tensorflow as tf
import cv2


# Protobuf Compilation (once necessary)
os.system('protoc object_detection/protos/*.proto --python_out=.')

from object_detection.utils import label_map_util
from object_detection.utils import visualization_utils as vis_util
from stuff.helper import FPS2, WebcamVideoStream

# INPUT PARAMS
# Must …
Run Code Online (Sandbox Code Playgroud)

opencv inference video-processing object-detection tensorflow

5
推荐指数
1
解决办法
3194
查看次数

Python:从视频中截取屏幕截图

这个想法是,用户应该能够从他们的本地机器加载视频,并告诉程序每 5 秒或 30 秒从视频中截取一次屏幕截图。有没有图书馆可以帮助我完成这项任务?关于如何进行的任何想法都会有所帮助。

python video screenshot video-processing

5
推荐指数
2
解决办法
4914
查看次数

设置项目的目标 SDK 版本 29 时,FFMPEG 命令不起作用(Android Q 问题)

我正在使用 FFMPEG 库在视频上获取水印图章。当我的项目的目标 SDK 版本为 28 时,它在所有版本中都像魅力一样工作,但是当我设置目标 sdk 版本 29 时,它给了我以下异常。

E/FFmpeg:尝试运行时出现异常:[Ljava.lang.java.io.IOException:无法“/data/user/0/com.videowatermark.addtextandtimestampongalleryvideos/files/ffmpeg”:错误=13,权限被拒绝

引起:java.io.IOException: error=13, Permission denied at java.lang.UNIXProcess.forkAndExec(Native Method) at java.lang.UNIXProcess.(UNIXProcess.java:133) at java.lang.ProcessImpl.start( ProcessImpl.java:141) 在 java.lang.ProcessBuilder.start(ProcessBuilder.java:1029) 在 java.lang.Runtime.exec(Runtime.java:698) 在 java.lang.Runtime.exec(Runtime.java:563) ) 在 com.github.hiteshsondhi88.libffmpeg.ShellCommand.run(ShellCommand.java:10) 在 com.github.hiteshsondhi88.libffmpeg.FFmpegExecuteAsyncTask.doInBackground(FFmpegExecuteAsyncTask.java:38) 在 com.Executegithub.hiteshsondhi88FF doInBackground(FFmpegExecuteAsyncTask.java:10) at android.os.AsyncTask$3.call(AsyncTask.java:378) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at android.os.AsyncTask$SerialExecutor$1 .run(AsyncTask.java:289) 在 java.util。concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167) 在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641) 在 java.lang.Thread.run(Thread.java:919)

//显示这个错误

android ffmpeg video-processing

5
推荐指数
1
解决办法
1926
查看次数

如何使用 Python 或 Javascript 编辑 After Effects 模板?

我计划构建一个在线音乐可视化工具,但我无法弄清楚如何使用这个 After Effects 模板 - Visualization After Effects 模板和类似的其他模板生成高图形可视化。如何使用我自己的文本和音频编辑此模板。我想做这样的事情 -网站示例

我发现了一些使用 Web Audio 和 p5js 的可视化示例,但它们在图形上并不令人满意,我想通过使用现有的 AE 模板来简化流程。我找不到任何有用的教程或工具,所以我在这里寻找解决方案。

过程——

  1. 用户使用音频链接(网址)、标题和副标题发出 API 请求。
  2. 视频与请求中的数据一起处理并存储在公共访问目录中。
  3. 指向文件的链接被发送回用户。

我可以使用的技术:ReactJS、Javascript、Python、Django、Nodejs。

谢谢你的时间。

javascript python visualization after-effects video-processing

5
推荐指数
1
解决办法
1079
查看次数

防止ffmpeg在降低视频分辨率的同时改变颜色的强度

我有一个用例,我需要将716x1280mp4 视频缩小到358x640(原始视频的一半)。我使用的命令是

ffmpeg -i ./input.mp4 -vf "scale=640:640:force_original_aspect_ratio=decrease,pad=ceil(iw/2)*2:ceil(ih/2)*2" ./output.mp4
Run Code Online (Sandbox Code Playgroud)

在 10 个示例视频中,其中 2 个受到颜色影响。下面我附上了一个与受影响最大的比较。

比较受影响最大的视频的帧

注意:右侧的一帧来自原始视频,左侧的一帧来自已处理(缩小)的视频。注意图像中的红色和绿色(甚至皮肤颜色和头发颜色也发生了变化)。

我正在寻找的是

  • 有什么办法可以防止发生这样的变化吗?可能是饱和度、亮度、对比度或任何其他参数的标志。
  • 我假设 ffmpeg 在缩小视频时使用一些默认设置。是什么让 ffmpeg 只为这两个视频改变颜色?如果它也对其余视频进行了类似的更改,那么如何事先预测这种行为?

编辑:

我已经尝试过什么?

  • -crf 值为 0 和 18。
  • -preset veryslow正如这里提到的

没有帮助

Mediainfo 输入 V/S 输出

参数 输入 输出
颜色范围 有限的 NA(属性不在描述中)
原色 BT.2020 NA(属性不在描述中)
传递特性 HLG NA(属性不在描述中)
矩阵系数 BT.2020 非常数 NA(属性不在描述中)
位深 8 8

ffmpeg 命令的日志

ffmpeg -i ./input.mp4 -vf "scale=640:640:force_original_aspect_ratio=decrease,pad=ceil(iw/2)*2:ceil(ih/2)*2" -movflags +faststart ./output.mp4
ffmpeg version 4.3.1 Copyright (c) 2000-2020 the FFmpeg …
Run Code Online (Sandbox Code Playgroud)

ffmpeg colors image-processing video-processing

5
推荐指数
1
解决办法
433
查看次数