DeepLearningExamples icon indicating copy to clipboard operation
DeepLearningExamples copied to clipboard

How to write the bitstream obtained from `PyNvVideoCodec` encoding into a video file (e.g., MP4).

Open xingguang12 opened this issue 1 year ago • 1 comments

`import cv2 import numpy as np

cap = cv2.VideoCapture(0)

while True: ret, frame = cap.read() if not ret: break

height, width, channels = frame.shape
print(f"Width: {width}, Height: {height}")

# Convert to YUV format
yun_image = cv2.cvtColor(frame, cv2.COLOR_BGR2YUV)

# Separate Y, U, V channels
y = yun_image[:, :, 0]
u = yun_image[:, :, 1]
v = yun_image[:, :, 2]

# Downsample U and V (subsample by 2 in both width and height)
u = u[::2, ::2]
v = v[::2, ::2]

# Flatten Y, U, V channels
y_flat = y.flatten()
uv_flat = np.dstack((u.flatten(), v.flatten())).flatten()

# Combine Y and UV for NV12 format
nv12_data = np.concatenate((y_flat, uv_flat))
import PyNvVideoCodec as nvc
import numpy as np

encoder = nvc.CreateEncoder(
    640,
    480,
    "NV12",
    True)
frame_size = 640 * 480 * 1.5
bitstream = encoder.Encode(nv12_data)  # encode frame one by one
if cv2.waitKey(1) & 0xFF == ord('q'):
    break

cap.release() cv2.destroyAllWindows()`

xingguang12 avatar Nov 07 '24 15:11 xingguang12

How did you finally solve this problem?

Z-NAVY avatar Nov 18 '25 03:11 Z-NAVY