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: raw Surface = 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