有没有办法在 python 中编写不会崩溃的视频?
Is there a way to write videos crash-safe in python?
我正在使用 raspberry pi 拍摄 24/7 视频。我一直在用picamera的录音功能:
import picamera
camera = picamera.PiCamera()
camera.start_recording('output_file.h264')
camera.wait_recording(600)
camera.stop_recording()
这将创建 .h264 文件。
现在,我正在尝试用捕获的帧做一些事情(对象检测等),因此需要使用其他方法来编写视频,比如 opencv 的 VideoWriter。
这是我的主要问题:使用picamera时,它不关心进程是否在录制时被杀死。 IE。如果进程在 300 秒后被终止(出于任何原因),输出文件仍然有 300 秒的视频,未损坏。但是,当我使用 cv2.VideoWriter 保存 .mp4 文件时,当它没有正确释放时,视频文件显示已损坏。我可以使用什么方法来编写行为类似于 picamera 的视频?
也欢迎任何其他方法。
mp4 文件中的结构描述了视频的长度、包含哪些 audio/video 流以及它们如何交错(切碎并混合)。
当您终止写入进程时,header 不会被写入。视频文件几乎变得毫无用处。如果你有一个流,它可能是可恢复的。
一个简单的“.h264”文件不包含这样的 header。它是一个连续的 H.264 流。可以毫无问题地解码。
您可以尝试让 VideoWriter 使用不同的容器格式。尝试“.ts”而不是“.mp4”。你可以单独告诉它你想要的编解码器的 FOURCC(也许是 MJPG)。
我正在使用 raspberry pi 拍摄 24/7 视频。我一直在用picamera的录音功能:
import picamera
camera = picamera.PiCamera()
camera.start_recording('output_file.h264')
camera.wait_recording(600)
camera.stop_recording()
这将创建 .h264 文件。
现在,我正在尝试用捕获的帧做一些事情(对象检测等),因此需要使用其他方法来编写视频,比如 opencv 的 VideoWriter。
这是我的主要问题:使用picamera时,它不关心进程是否在录制时被杀死。 IE。如果进程在 300 秒后被终止(出于任何原因),输出文件仍然有 300 秒的视频,未损坏。但是,当我使用 cv2.VideoWriter 保存 .mp4 文件时,当它没有正确释放时,视频文件显示已损坏。我可以使用什么方法来编写行为类似于 picamera 的视频?
也欢迎任何其他方法。
mp4 文件中的结构描述了视频的长度、包含哪些 audio/video 流以及它们如何交错(切碎并混合)。
当您终止写入进程时,header 不会被写入。视频文件几乎变得毫无用处。如果你有一个流,它可能是可恢复的。
一个简单的“.h264”文件不包含这样的 header。它是一个连续的 H.264 流。可以毫无问题地解码。
您可以尝试让 VideoWriter 使用不同的容器格式。尝试“.ts”而不是“.mp4”。你可以单独告诉它你想要的编解码器的 FOURCC(也许是 MJPG)。