Example #1
0
async def findlargemp4fileffmpeg(starttime, endtime):
    #print("begin findlargemp4fileffmpeg")
    mp4list = []
    client = AsyncIOMotorClient(ServerParameters.mongodbpath)
    db = client.jt808

    bucket = AsyncIOMotorGridFSBucket(db, "eventuploadvideos")
    cursor = bucket.find({
        "uploadDate": {
            '$gt': starttime,
            '$lte': endtime
        },
        "filename": {
            "$regex": ".mp4$"
        }
    })
    filelist = await cursor.to_list(100000)

    ccount = 0
    for fi in filelist:
        if fi["length"] > 1000000:
            print(fi)
            if os.path.exists(fi["filename"]):
                os.remove(fi["filename"])
            ds = await bucket.open_download_stream(fi["_id"])
            f = open("input" + fi["filename"], 'wb')
            bbb = await ds.read()
            f.write(bbb)
            f.close()
            ds.close()
            converttstoh264("input" + fi["filename"], fi["filename"])
            if os.path.exists("input" + fi["filename"]):
                os.remove("input" + fi["filename"])
            # 保存到bucket
            try:
                if os.path.exists(fi["filename"]):
                    uf = open(fi["filename"], "rb")
                    ubbb = uf.read()
                    uf.close()
                    os.remove(fi["filename"])
                    bucket.delete(fi["_id"])
                    uds = bucket.open_upload_stream_with_id(
                        fi["_id"], fi["filename"])
                    await uds.write(ubbb)
                    uds.close()
                    ccount = ccount + 1
                    logging.info("convert %s %s", fi["_id"], fi["filename"])
            except BaseException as e:
                logging.error(e)
    logging.info("end findlargemp4fileffmpeg total %s convert %s",
                 len(filelist), ccount)
    return