上一篇我们历尽千辛万苦完成了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