gpt4 book ai didi

从多个文件中随机提取视频帧

转载 作者:行者123 更新时间:2023-11-28 21:42:34 27 4
gpt4 key购买 nike

基本上我有一个包含数百个视频文件 (*.avi) 的文件夹,每个文件的时长或多或少为一个小时。我想要实现的是一段代码,它可以遍历每个视频并从每个文件中随机选择两个或三个帧,然后将它们拼接在一起,或者将帧保存在文件夹中为 jpeg。最初我以为我可以使用 R 来做到这一点,但很快我意识到我需要一些其他可能与 R 一起工作的东西。

是否可以从 R 调用 FFMPEG 来完成上述任务?

我在互联网上搜索了一些可以帮助我开始的东西,但我发现的大部分内容都过于具体,而且确实适用于我需要做的事情。

谁能帮帮我,或者简单地指出正确的方向。

非常感谢

最佳答案

我有一个相关问题 here最近发现,如果您使用的是 Unix 系统,则在 bash 中执行此操作更为直接。

我可能会因为在这里发布这个答案而被遗忘,因为它与 R 无关,但我希望它能有所帮助。这样的事情对我有用:

#!/bin/bash

for i in *.avi

do TOTAL_FRAMES=$(ffmpeg -i $i -vcodec copy -acodec copy -f null /dev/null 2>&1 | grep frame | cut -d ' ' -f 1 | sed s/frame=//)

FPS=ffmpeg -i 18_1*avi -vcodec copy -acodec copy -f null /dev/null 2>&1 | grep fps | cut -d ' ' -f 2 | sed s/fps=//

for j in {1..3}

do RANDOM_FRAME=$[RANDOM % TOTAL_FRAMES]

TIME=$((RANDOM_FRAME/FPS))

ffmpeg -ss $TIME -i $i -frames:v 1 ${i}_${j}.jpg

done

done

基本上,对于目录中的每个.avi,都会计算帧数和FPS。然后,使用 $RANDOM 将三个随机帧提取为 .jpg。 bash 中的函数并将随机帧输入 ffmpeg作为hh:mm:ss时间除以RANDOM_FRAME通过 FPS .

您始终可以在 R 内部使用 system() 进行这些计算如果您不熟悉 bash 术语,请调用。

关于从多个文件中随机提取视频帧,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25186826/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com