fix some stuff
This commit is contained in:
@@ -113,8 +113,23 @@ class VR180Processor(VideoProcessor):
|
|||||||
left_eye_frames = []
|
left_eye_frames = []
|
||||||
right_eye_frames = []
|
right_eye_frames = []
|
||||||
|
|
||||||
for frame in frames:
|
for i, frame in enumerate(frames):
|
||||||
left, right = self.split_sbs_frame(frame)
|
left, right = self.split_sbs_frame(frame)
|
||||||
|
|
||||||
|
# Debug: Check if frames are valid
|
||||||
|
if i == 0: # Only debug first frame
|
||||||
|
print(f"Original frame shape: {frame.shape}")
|
||||||
|
print(f"Left eye shape: {left.shape}")
|
||||||
|
print(f"Right eye shape: {right.shape}")
|
||||||
|
print(f"Left eye min/max: {left.min()}/{left.max()}")
|
||||||
|
print(f"Right eye min/max: {right.min()}/{right.max()}")
|
||||||
|
|
||||||
|
# Validate frames
|
||||||
|
if left.size == 0:
|
||||||
|
raise RuntimeError(f"Left eye frame {i} is empty")
|
||||||
|
if right.size == 0:
|
||||||
|
raise RuntimeError(f"Right eye frame {i} is empty")
|
||||||
|
|
||||||
left_eye_frames.append(left)
|
left_eye_frames.append(left)
|
||||||
right_eye_frames.append(right)
|
right_eye_frames.append(right)
|
||||||
|
|
||||||
@@ -170,13 +185,22 @@ class VR180Processor(VideoProcessor):
|
|||||||
# Save frames as individual images
|
# Save frames as individual images
|
||||||
print("Saving frames as images...")
|
print("Saving frames as images...")
|
||||||
for i, frame in enumerate(eye_frames):
|
for i, frame in enumerate(eye_frames):
|
||||||
|
# Check if frame is empty
|
||||||
|
if frame.size == 0:
|
||||||
|
raise RuntimeError(f"Frame {i} is empty (size=0)")
|
||||||
|
|
||||||
# Ensure frame is uint8
|
# Ensure frame is uint8
|
||||||
if frame.dtype != np.uint8:
|
if frame.dtype != np.uint8:
|
||||||
frame = frame.astype(np.uint8)
|
frame = frame.astype(np.uint8)
|
||||||
|
|
||||||
|
# Debug first frame
|
||||||
|
if i == 0:
|
||||||
|
print(f"First frame to save: shape={frame.shape}, dtype={frame.dtype}, empty={frame.size == 0}")
|
||||||
|
|
||||||
frame_path = temp_frames_dir / f"frame_{i:06d}.png"
|
frame_path = temp_frames_dir / f"frame_{i:06d}.png"
|
||||||
success = cv2.imwrite(str(frame_path), frame)
|
success = cv2.imwrite(str(frame_path), frame)
|
||||||
if not success:
|
if not success:
|
||||||
|
print(f"Frame {i} details: shape={frame.shape}, dtype={frame.dtype}, size={frame.size}")
|
||||||
raise RuntimeError(f"Failed to save frame {i} as image")
|
raise RuntimeError(f"Failed to save frame {i} as image")
|
||||||
|
|
||||||
if i % 50 == 0:
|
if i % 50 == 0:
|
||||||
@@ -184,13 +208,16 @@ class VR180Processor(VideoProcessor):
|
|||||||
|
|
||||||
# Use ffmpeg to create video from images
|
# Use ffmpeg to create video from images
|
||||||
import subprocess
|
import subprocess
|
||||||
|
# Use the original video's framerate
|
||||||
|
original_fps = getattr(self, 'fps', 30.0)
|
||||||
ffmpeg_cmd = [
|
ffmpeg_cmd = [
|
||||||
'ffmpeg', '-y', # -y to overwrite output file
|
'ffmpeg', '-y', # -y to overwrite output file
|
||||||
'-framerate', '30',
|
'-framerate', str(original_fps),
|
||||||
'-i', str(temp_frames_dir / 'frame_%06d.png'),
|
'-i', str(temp_frames_dir / 'frame_%06d.png'),
|
||||||
'-c:v', 'libx264',
|
'-c:v', 'libx264',
|
||||||
'-pix_fmt', 'yuv420p',
|
'-pix_fmt', 'yuv420p',
|
||||||
'-crf', '23',
|
'-crf', '18', # Higher quality (lower CRF)
|
||||||
|
'-preset', 'slow', # Better compression
|
||||||
str(temp_video_path)
|
str(temp_video_path)
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user