在R中提取媒体持续时间

在R中提取媒体持续时间,r,ffmpeg,data.table,R,Ffmpeg,Data.table,我正在研究使用ffprobe和data.table包提取R中胶片持续时间的最快方法 安装示例源媒体 wgethttps://ia801403.us.archive.org/13/items/AboutBan1935/AboutBan1935_512kb.mp4 mv AboutBan1935_512kb.mp4 one.mp4 用于存储在two.mp4 three.mp4 four.mp4 five.mp4中的文件;执行cp one.mp4“$file”;完成 各种方法 库(data.tabl

我正在研究使用
ffprobe
data.table
包提取R中胶片持续时间的最快方法

安装示例源媒体
wgethttps://ia801403.us.archive.org/13/items/AboutBan1935/AboutBan1935_512kb.mp4
mv AboutBan1935_512kb.mp4 one.mp4
用于存储在two.mp4 three.mp4 four.mp4 five.mp4中的文件;执行cp one.mp4“$file”;完成
各种方法
库(data.table)
图书馆(平行)
#获取位置

可执行文件原子操作的计时是什么?并行化增加了开销,所以它只适用于耗时的进程,如果您使用的是data.table,那么很难有任何真正耗时的进程。无论如何,您的代码似乎不太使用data.table(只是500行表上的一个
:=
),因为处理的主要部分是使用
系统
功能从R外包的。从识别瓶颈开始。我会使用GNU
parallel
在R之外进行持续时间提取。类似于:
ls*mp4 | parallel-j4“echo-n'{},;ffprobe-v quiet-print_format compact=print_section=0:nokey=1:escape=csv-show_entries format=duration{}”
将生成一个带有
文件名、duration
格式的csv文件。根据同步作业的数量调整
j
,意识到您将受到此操作的I/O限制。GNU
parallel
mclappy
不同,它不需要加速R核,因此速度肯定会更快,而且只需将其作为数据管道的一部分即可。我在一个40 mp4的网络文件夹上尝试了
parallel
,耗时16秒。我在一个包含100份示例文件副本的本地目录上尝试了它,耗时5秒(注释长度超过了之前的注释),谢谢。我对你建议的
并行方法非常满意。