在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外包的。从识别瓶颈开始。我会使用GNUparallel
在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限制。GNUparallel
与mclappy
不同,它不需要加速R核,因此速度肯定会更快,而且只需将其作为数据管道的一部分即可。我在一个40 mp4的网络文件夹上尝试了parallel
,耗时16秒。我在一个包含100份示例文件副本的本地目录上尝试了它,耗时5秒(注释长度超过了之前的注释),谢谢。我对你建议的并行方法非常满意。