NVIDIA 推出了适用于 Python 的开源视频处理框架

NVIDIA 推出了适用于 Python 的开源视频处理框架“ VideoProcessingFramework”(VPF)。据悉,VPF 是一组开源的 C ++ 库和Python绑定,可与其封闭源代码 Codec SDK 进行交互。该框架的功能是简化从 Python 开发 GPU 加速视频编码/解码的过程。

VPF 利用 NVIDIA Video Codec SDK 来提高灵活性和性能,并为开发人员提供 Python 固有的易用性。 

实际上,尽管 Python 不是性能最高的语言,但它却是一种易于使用的语言。并且在 NVIDIA 决定发布此视频处理框架之后,相当于在现有 Video Codec SDK C ++ 堆栈周围的 Python wrapper,都将用于在 Kepler 及更高版本上基于 GPU 的视频编码/解码。

因此,在利用基于 GPU 的高性能视频加速的同时,用户最终获得了易于阅读/编写的代码。

该代码在 GitHub 上可作为 NVIDIA 的 VideoProcessingFramework 获得

此外,在介绍 VPF 的博客内容中,开发人员还提供了一个简短的 Python 代码示例,该示例使用 PyNvCodec 模块显示 Python 中的视频转码。

import PyNvCodec as nvc

gpuID = 0
encFile = "big_buck_bunny_1080p_h264.mov"
xcodeFile = open("big_buck_bunny_1080p.h264", "wb")

nvDec = nvc.PyNvDecoder(encFile, gpuID)
nvEnc = nvc.PyNvEncoder({'preset': 'hq', 'codec': 'h264', 's': '1920x1080'}, gpuID)

while True:
    rawSurface = nvDec.DecodeSingleSurface()
    # Decoder will return zero surface if input file is over;
    if not (rawSurface.GetCudaDevicePtr()):
        break
    
    encFrame = nvEnc.EncodeSingleSurface(rawSurface)
    if(encFrame.size):
        frameByteArray = bytearray(encFrame)
         xcodeFile.write(frameByteArray)

# Encoder is asynchronous, so we need to flush it
encFrames = nvEnc.Flush()
for encFrame in encFrames:
    encByteArray = bytearray(encFrame)
    xcodeFile.write(encByteArray)

参考消息:

https://devblogs.nvidia.com/vpf-hardware-accelerated-video-processing-framework-in-python/

https://www.phoronix.com/scan.php?page=news_item&px=NVIDIA-Video-Process-Framework

猜你喜欢

转载自www.oschina.net/news/112149/nvidia-open-source-vpf-for-python