Python 从一堆JPEG构建一个MJPEG
我正在用Python编程。我在数据库里有一堆JPEG和它们的时间戳。它们不是完全周期性的(帧速率有点不稳定,+/-每帧几毫秒)。我想查询数据库并构造一个MJPEG文件,我可以将其保存到磁盘,如果需要,还可以使用Python 从一堆JPEG构建一个MJPEG,python,video,mjpeg,Python,Video,Mjpeg,我正在用Python编程。我在数据库里有一堆JPEG和它们的时间戳。它们不是完全周期性的(帧速率有点不稳定,+/-每帧几毫秒)。我想查询数据库并构造一个MJPEG文件,我可以将其保存到磁盘,如果需要,还可以使用ffmpeg进行进一步的转码。如何做到这一点(不需要代码,如果可能的话,只需要一些高级注释,使用哪些模块等)?您可以通过从Python发送RGB数据在FFmpeg中动态创建视频帧 为什么不直接读取JPEG并将解码后的RGB数据发送到FFmpeg以创建H264视频文件?稍后,H264视频帧可
ffmpeg
进行进一步的转码。如何做到这一点(不需要代码,如果可能的话,只需要一些高级注释,使用哪些模块等)?您可以通过从Python发送RGB数据在FFmpeg中动态创建视频帧
为什么不直接读取JPEG并将解码后的RGB数据发送到FFmpeg以创建H264视频文件?稍后,H264视频帧可以与任何声音、字幕等一起放入MP4容器中
您需要在Python中将FFmpeg作为进程运行,然后将RGB字节数组写入进程的stdin。每次写入都会生成一个帧,所以如果您需要一张图片显示这么多毫秒,那么您只需计算发送相同RGB阵列的次数
例如,如果您将FFmpeg设置为输出30 FPS的视频,并且希望JPEG显示2秒,则可以将同一JPEG的解码RGB数据写入60次(使用循环进行)
理想的函数如下所示writeFrame(rgbData,numTimesToWrite)代码>其中numTimesToWrite
将60。然后使用,您只需将JPEG解码为RGB,然后将要写入的帧数输入该函数。由于每秒有1000毫秒,因此任何1帧表示大约33毫秒的输出视频
- 有关书写框架的想法,请参阅。您需要将
pipe.proc.stdin.write
放入一个函数中,该函数在您想要编写帧时被调用
- 这是使用ActionScript-3语言(任何具有标准输入/输出功能的语言都可以)实现的(请参见
函数makeVideoFrame()
)
通过从Python发送RGB数据,您可以在FFmpeg中动态创建视频帧
为什么不直接读取JPEG并将解码后的RGB数据发送到FFmpeg以创建H264视频文件?稍后,H264视频帧可以与任何声音、字幕等一起放入MP4容器中
您需要在Python中将FFmpeg作为进程运行,然后将RGB字节数组写入进程的stdin。每次写入都会生成一个帧,所以如果您需要一张图片显示这么多毫秒,那么您只需计算发送相同RGB阵列的次数
例如,如果您将FFmpeg设置为输出30 FPS的视频,并且希望JPEG显示2秒,则可以将同一JPEG的解码RGB数据写入60次(使用循环进行)
理想的函数如下所示writeFrame(rgbData,numTimesToWrite)代码>其中numTimesToWrite
将60。然后使用,您只需将JPEG解码为RGB,然后将要写入的帧数输入该函数。由于每秒有1000毫秒,因此任何1帧表示大约33毫秒的输出视频
- 有关书写框架的想法,请参阅。您需要将
pipe.proc.stdin.write
放入一个函数中,该函数在您想要编写帧时被调用
- 这是使用ActionScript-3语言(任何具有标准输入/输出功能的语言都可以)实现的(请参见
函数makeVideoFrame()
)
我自己不使用Python,但看看我的答案的逻辑是否有助于您获得解决方案。我自己不使用Python,但看看我的答案的逻辑是否有助于您获得解决方案。