Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 从一堆JPEG构建一个MJPEG_Python_Video_Mjpeg - Fatal编程技术网

Python 从一堆JPEG构建一个MJPEG

Python 从一堆JPEG构建一个MJPEG,python,video,mjpeg,Python,Video,Mjpeg,我正在用Python编程。我在数据库里有一堆JPEG和它们的时间戳。它们不是完全周期性的(帧速率有点不稳定,+/-每帧几毫秒)。我想查询数据库并构造一个MJPEG文件,我可以将其保存到磁盘,如果需要,还可以使用ffmpeg进行进一步的转码。如何做到这一点(不需要代码,如果可能的话,只需要一些高级注释,使用哪些模块等)?您可以通过从Python发送RGB数据在FFmpeg中动态创建视频帧 为什么不直接读取JPEG并将解码后的RGB数据发送到FFmpeg以创建H264视频文件?稍后,H264视频帧可

我正在用Python编程。我在数据库里有一堆JPEG和它们的时间戳。它们不是完全周期性的(帧速率有点不稳定,+/-每帧几毫秒)。我想查询数据库并构造一个MJPEG文件,我可以将其保存到磁盘,如果需要,还可以使用
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,但看看我的答案的逻辑是否有助于您获得解决方案。