使用R检索视频文件持续时间(时间)

时间:2013-11-22 11:57:20

标签: r video

我正在创建一个代码来删除一些我不需要的视频文件。这些视频来自闭路电视录像,并且全天候录制。但是,记录视频的软件会将文件保存在~1小时的视频中,这就是问题(不是确切的持续时间)。我只对保留当天某个特定部分的视频感兴趣(这会有所不同),因为视频的持续时间并不准确,这会给我带来麻烦。

视频文件名有一个日期和时间戳,但仅限于开始,所以如果我能找到持续时间,一切都变成了简单的代数。

所以我的问题很简单,是否可以使用R?

获取视频文件的持续时间(时间)

视频来自多个摄像头和每个摄像头只是另外几个有用信息,因为它们使用file.info来返回文件大小并导出视频长度不是一种选择。视频文件也是.avi格式。

干杯 帕特雷

2 个答案:

答案 0 :(得分:2)

据我所知,没有现成的包来处理R中的视频文件(就像matlab一样)。这不是一个纯粹的R解决方案,但可以完成工作。我将CLI接口安装到MediaInfo并从R调用它。我使用system调用它。

wolf <- system("q:/mi_cli/mediainfo.exe Krofel_video2volk2.AVI", intern = TRUE)
wolf # output by MediaInfo

[1] "General"                                                            
 [2] "Complete name                            : Krofel_video2volk2.AVI"  
 [3] "Format                                   : AVI"                     
 [4] "Format/Info                              : Audio Video Interleave"  
 [5] "File size                                : 10.7 MiB"                
 [6] "Duration                                 : 11s 188ms"               
 [7] "Overall bit rate                         : 8 016 Kbps"              
 ...        
[37] "Channel count                            : 1 channel"               
[38] "Sampling rate                            : 8 000 Hz"                
[39] "Bit depth                                : 16 bits"                 
[40] "Stream size                              : 174 KiB (2%)"            
[41] "Alignment                                : Aligned on interleaves"  
[42] "Interleave, duration                     : 63 ms (1.00 video frame)"

# Find where Duration is (general) and extract it.
find.duration <- grepl("Duration", wolf)
wolf[find.duration][1]# 1 = General, 2 = Video, 3 = Audio
[1] "Duration                                 : 11s 188ms"

有趣的解析时间。

答案 1 :(得分:1)

这可能有点低级,但如果您要完成解析二进制数据的任务,请查找AVI规范的副本并找出如何同时获取视频帧数和帧数率。

如果您使用十六进制编辑器查看其中一个AVI文件,您将在开头看到一系列LIST块。进入这个块的更远的地方将是vids块。紧跟vids之后应该是一个人类可读的视频四字符代码(FourCC),用于指定视频编解码器,可能类似于mjpg(MJPEG)或avc1(H.264)相机。之后的20个字节将是以小端符号表示的4个字节,表示帧速率。跳过另外4个字节,然后接下来的4个字节将是另一个小的字节序号,表示视频帧的总数。

我正在查看一个示例AVI文件,其中数字是:帧速率= 24和帧数= 0x37EB = 14315.这可以达到9m56s,这对于此文件是准确的。