gpt4 book ai didi

python - 如何在 Python/Django 中获取内存中视频的持续时间?

转载 作者:行者123 更新时间:2023-12-04 22:58:55 26 4
gpt4 key购买 nike

所以我成功地使用下面的代码来获取在 Django 中保存的视频的持续时间。

def get_video_length(file_path):
command = [
'ffprobe',
'-v',
'error',
'-show_entries',
'format=duration',
'-of',
'default=noprint_wrappers=1:nokey=1',
file_path
]

try:
output = check_output( command, stderr=STDOUT ).decode()
except CalledProcessError as e:
output = e.output.decode()

return output

但现在我需要在保存之前获取上传文件的持续时间。
我有一个带有 FileField 的序列化程序,并且在验证方法上我应该检查视频持续时间。
例如:
class VideoSerializer(serializers.Serializer):
video = serializers.FileField(required=True, validators=[validate_media_extension, validate_video_duration])

然后在 validate_video_duration 我需要调用一些方法,如 get_video_length,但我需要一个替代方法来从内存中的视频中获取持续时间。我拥有的对象是 InMemoryUploadedFile ( https://docs.djangoproject.com/en/2.2/_modules/django/core/files/uploadedfile/ ) 的一个实例

最佳答案

您应该能够将文件作为标准输入传递。

def get_video_length(inmemory_file):

command = [
'ffprobe',
'-v',
'error',
'-show_entries',
'format=duration',
'-of',
'default=noprint_wrappers=1:nokey=1',
'-'
]

try:
output = check_output(
command,
stdin=inmemory_file.open(),
stderr=STDOUT
).decode()
except CalledProcessError as e:
output = e.output.decode()

return output

话虽如此,我希望视频文件太大而无法在内存中处理。

关于python - 如何在 Python/Django 中获取内存中视频的持续时间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58976806/

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