Python解码H.264(二)——将海思处理器编码的H.264裸码流转换为jpg序列

上一篇我们历尽千辛万苦完成了PyAV的安装,这一篇我们来小试牛刀。

思路:通过PyAV来把海思Hi3516编码处理器编码的h.264裸码流中的每一帧都转换为一张jpeg编码的图片,然后将这些jpg图像帧保存为jpg图片序列。

我们创建一个helloPyAV的目录并在其中放入我们要测试的视频文件,如果手头没有h. 264编码的视频文件可以在这里下载:

http://www.live555.com/liveMedia/public/264/

同样,这个网站也有h.265编码的测试文件:

http://www.live555.com/liveMedia/public/265/

准备好测试视频文件后我们在当前目录下创建一个output目录用来存放产生的Jpeg图片。

最后我们在当前目录下创建一个名为helloPyAV.py的python源码文件并输入(拷贝)下面的代码:

import av
import sys

def h264ToJpg_demo():
    inputFileName = "input.h264"
    container = av.open(inputFileName)
    print("container:", container)
    print("container.streams:", container.streams)
    print("container.format:", container.format)

    for frame in container.decode(video = 0):
        print("process frame: %04d (width: %d, height: %d)" % (frame.index, frame.width, frame.height))
        frame.to_image().save("output/frame-%04d.jpg" % frame.index)


def main():
    h264ToJpg_demo()


if __name__ == "__main__":
    sys.exit(main())

运行结果如下所示:

Stream #0: not enough frames to estimate rate; consider increasing probesize
container: 
container.streams: 
container.format: 
process frame: 0000 (width: 1280, height: 720)
deprecated pixel format used, make sure you did set range correctly
process frame: 0001 (width: 1280, height: 720)
process frame: 0002 (width: 1280, height: 720)
process frame: 0003 (width: 1280, height: 720)
process frame: 0004 (width: 1280, height: 720)
。。。。。。
process frame: 0318 (width: 1280, height: 720)
process frame: 0319 (width: 1280, height: 720)
process frame: 0320 (width: 1280, height: 720)
process frame: 0321 (width: 1280, height: 720)

然后output目录下就产生了每一帧对应的Jpeg图片


E:\zdwork\pyAvTest\helloPyAV>ls output
frame-0000.jpg  frame-0046.jpg  frame-0092.jpg  frame-0138.jpg  frame-0184.jpg  frame-0230.jpg  frame-0276.jpg
frame-0001.jpg  frame-0047.jpg  frame-0093.jpg  frame-0139.jpg  frame-0185.jpg  frame-0231.jpg  frame-0277.jpg
frame-0002.jpg  frame-0048.jpg  frame-0094.jpg  frame-0140.jpg  frame-0186.jpg  frame-0232.jpg  frame-0278.jpg
frame-0003.jpg  frame-0049.jpg  frame-0095.jpg  frame-0141.jpg  frame-0187.jpg  frame-0233.jpg  frame-0279.jpg
frame-0004.jpg  frame-0050.jpg  frame-0096.jpg  frame-0142.jpg  frame-0188.jpg  frame-0234.jpg  frame-0280.jpg
frame-0005.jpg  frame-0051.jpg  frame-0097.jpg  frame-0143.jpg  frame-0189.jpg  frame-0235.jpg  frame-0281.jpg
frame-0006.jpg  frame-0052.jpg  frame-0098.jpg  frame-0144.jpg  frame-0190.jpg  frame-0236.jpg  frame-0282.jpg
frame-0007.jpg  frame-0053.jpg  frame-0099.jpg  frame-0145.jpg  frame-0191.jpg  frame-0237.jpg  frame-0283.jpg
frame-0008.jpg  frame-0054.jpg  frame-0100.jpg  frame-0146.jpg  frame-0192.jpg  frame-0238.jpg  frame-0284.jpg
frame-0009.jpg  frame-0055.jpg  frame-0101.jpg  frame-0147.jpg  frame-0193.jpg  frame-0239.jpg  frame-0285.jpg
frame-0010.jpg  frame-0056.jpg  frame-0102.jpg  frame-0148.jpg  frame-0194.jpg  frame-0240.jpg  frame-0286.jpg
frame-0011.jpg  frame-0057.jpg  frame-0103.jpg  frame-0149.jpg  frame-0195.jpg  frame-0241.jpg  frame-0287.jpg
frame-0012.jpg  frame-0058.jpg  frame-0104.jpg  frame-0150.jpg  frame-0196.jpg  frame-0242.jpg  frame-0288.jpg
frame-0013.jpg  frame-0059.jpg  frame-0105.jpg  frame-0151.jpg  frame-0197.jpg  frame-0243.jpg  frame-0289.jpg
frame-0014.jpg  frame-0060.jpg  frame-0106.jpg  frame-0152.jpg  frame-0198.jpg  frame-0244.jpg  frame-0290.jpg
frame-0015.jpg  frame-0061.jpg  frame-0107.jpg  frame-0153.jpg  frame-0199.jpg  frame-0245.jpg  frame-0291.jpg
frame-0016.jpg  frame-0062.jpg  frame-0108.jpg  frame-0154.jpg  frame-0200.jpg  frame-0246.jpg  frame-0292.jpg
frame-0017.jpg  frame-0063.jpg  frame-0109.jpg  frame-0155.jpg  frame-0201.jpg  frame-0247.jpg  frame-0293.jpg
frame-0018.jpg  frame-0064.jpg  frame-0110.jpg  frame-0156.jpg  frame-0202.jpg  frame-0248.jpg  frame-0294.jpg
frame-0019.jpg  frame-0065.jpg  frame-0111.jpg  frame-0157.jpg  frame-0203.jpg  frame-0249.jpg  frame-0295.jpg
frame-0020.jpg  frame-0066.jpg  frame-0112.jpg  frame-0158.jpg  frame-0204.jpg  frame-0250.jpg  frame-0296.jpg
frame-0021.jpg  frame-0067.jpg  frame-0113.jpg  frame-0159.jpg  frame-0205.jpg  frame-0251.jpg  frame-0297.jpg
frame-0022.jpg  frame-0068.jpg  frame-0114.jpg  frame-0160.jpg  frame-0206.jpg  frame-0252.jpg  frame-0298.jpg
frame-0023.jpg  frame-0069.jpg  frame-0115.jpg  frame-0161.jpg  frame-0207.jpg  frame-0253.jpg  frame-0299.jpg
frame-0024.jpg  frame-0070.jpg  frame-0116.jpg  frame-0162.jpg  frame-0208.jpg  frame-0254.jpg  frame-0300.jpg
frame-0025.jpg  frame-0071.jpg  frame-0117.jpg  frame-0163.jpg  frame-0209.jpg  frame-0255.jpg  frame-0301.jpg
frame-0026.jpg  frame-0072.jpg  frame-0118.jpg  frame-0164.jpg  frame-0210.jpg  frame-0256.jpg  frame-0302.jpg
frame-0027.jpg  frame-0073.jpg  frame-0119.jpg  frame-0165.jpg  frame-0211.jpg  frame-0257.jpg  frame-0303.jpg
frame-0028.jpg  frame-0074.jpg  frame-0120.jpg  frame-0166.jpg  frame-0212.jpg  frame-0258.jpg  frame-0304.jpg
frame-0029.jpg  frame-0075.jpg  frame-0121.jpg  frame-0167.jpg  frame-0213.jpg  frame-0259.jpg  frame-0305.jpg
frame-0030.jpg  frame-0076.jpg  frame-0122.jpg  frame-0168.jpg  frame-0214.jpg  frame-0260.jpg  frame-0306.jpg
frame-0031.jpg  frame-0077.jpg  frame-0123.jpg  frame-0169.jpg  frame-0215.jpg  frame-0261.jpg  frame-0307.jpg
frame-0032.jpg  frame-0078.jpg  frame-0124.jpg  frame-0170.jpg  frame-0216.jpg  frame-0262.jpg  frame-0308.jpg
frame-0033.jpg  frame-0079.jpg  frame-0125.jpg  frame-0171.jpg  frame-0217.jpg  frame-0263.jpg  frame-0309.jpg
frame-0034.jpg  frame-0080.jpg  frame-0126.jpg  frame-0172.jpg  frame-0218.jpg  frame-0264.jpg  frame-0310.jpg
frame-0035.jpg  frame-0081.jpg  frame-0127.jpg  frame-0173.jpg  frame-0219.jpg  frame-0265.jpg  frame-0311.jpg
frame-0036.jpg  frame-0082.jpg  frame-0128.jpg  frame-0174.jpg  frame-0220.jpg  frame-0266.jpg  frame-0312.jpg
frame-0037.jpg  frame-0083.jpg  frame-0129.jpg  frame-0175.jpg  frame-0221.jpg  frame-0267.jpg  frame-0313.jpg
frame-0038.jpg  frame-0084.jpg  frame-0130.jpg  frame-0176.jpg  frame-0222.jpg  frame-0268.jpg  frame-0314.jpg
frame-0039.jpg  frame-0085.jpg  frame-0131.jpg  frame-0177.jpg  frame-0223.jpg  frame-0269.jpg  frame-0315.jpg
frame-0040.jpg  frame-0086.jpg  frame-0132.jpg  frame-0178.jpg  frame-0224.jpg  frame-0270.jpg  frame-0316.jpg
frame-0041.jpg  frame-0087.jpg  frame-0133.jpg  frame-0179.jpg  frame-0225.jpg  frame-0271.jpg  frame-0317.jpg
frame-0042.jpg  frame-0088.jpg  frame-0134.jpg  frame-0180.jpg  frame-0226.jpg  frame-0272.jpg  frame-0318.jpg
frame-0043.jpg  frame-0089.jpg  frame-0135.jpg  frame-0181.jpg  frame-0227.jpg  frame-0273.jpg  frame-0319.jpg
frame-0044.jpg  frame-0090.jpg  frame-0136.jpg  frame-0182.jpg  frame-0228.jpg  frame-0274.jpg  frame-0320.jpg
frame-0045.jpg  frame-0091.jpg  frame-0137.jpg  frame-0183.jpg  frame-0229.jpg  frame-0275.jpg  frame-0321.jpg

 

你可能感兴趣的:(Python解码H.264)