使用ffmpeg,可以使用ffmpeg -ss 00:01:00 -i https://example.com/video.mp4
之类的命令非常快速地搜索HTTP媒体资源(例如视频)中的时间,可能是通过下载视频标头来查找正确的字节偏移量。这意味着在视频的一部分上运行操作非常快,即使是在几个小时内。
我希望能够做的是做同样的事情,但在请求模块中输入ffmpeg(如部分伪代码):
stream = requests.get(url, stream=True)
start_byte = get_byte_offset(stream, time=60)
stream.seek_to(start_byte)
process = subprocess.Popen(["ffmpeg", "-i" "pipe:" "out.mp4"], stdin=subprocess.PIPE)
for chunk in stream.iter_content(chunk_size=64 * 2 ** 10):
process.stdin.write(chunk)
process.stdin.close()
这将允许我在流中实现额外的检查,我通常需要解析ffmpeg,例如,如果流返回错误的状态代码,如404或403。
我如何能够使用请求以及其他模块实现此功能?我想第一部分是使用工具来解析视频标题。