Emir evcil
Emir evcil

Reputation: 5

Python Av encode result is empty always

I'm quite a newbie when it comes to ffmpeg and av, I was trying to do a simple encode - decode example but the encode result always returns an empty list. I don't understand the reason for this, I don't know how it can be solved.

import av
import numpy as np
import cv2 

container = av.open(file = "video=PC Camera",format = "dshow",options = {"video_size":"640x480"},mode = "r")

def getFrame():
    # open camera
    for frame in container.decode(video=0):
        yield frame
        
def encode(frame):
    encoder = av.CodecContext.create('h264', 'w')
    encoder.width = frame.width
    encoder.height = frame.height
    encoder.pix_fmt = frame.format.name
    encoder.bit_rate = 5000000
    encoder.framerate = 30
    encoder.open()
    frames = encoder.encode(frame)
    encoder.close()
    return frames
    
    
if __name__ == "__main__":
    while 1:
        frame = next(getFrame())
        frame_encoded = encode(frame)
        print(frame_encoded) // always empty
        if len(frame_encoded) == 0:
            continue
        #cv2.imshow("frame",frame.to_ndarray(format = "bgr24"))
        #cv2.waitKey(1)

Upvotes: 0

Views: 205

Answers (0)

Related Questions