从 Python 中,将图像管道传输到带有音频输入的 FFMPEG 进程,“-shortest”标志会导致输出文件仅包含 1 帧视频和整个音频

From Python, piping images to FFMPEG process with audio input, "-shortest" flag causes output file to contain only 1 frame of video and entire audio

提问人:b_yang 提问时间:11/8/2023 更新时间:11/8/2023 访问量:26

问:

在 Python 中,我运行 FFMPEG 并通过管道将图像写入其 stdin,FFMPEG 进程也有一个音频文件作为输入。一切正常,如下所示:

cmd = ['ffmpeg', '-hide_banner', '-y', '-loglevel', 'error', '-f', 'rawvideo', 
'-pix_fmt', 'bgr24', '-video_size', '720x1280', '-r', '30.0', '-an', '-i', '-',
'-i', 'audio.aac', '-acodec', 'copy', 
'-crf', '14', '-pix_fmt', 'yuv420p', 'output.mp4']
proc = subprocess.Popen(cmd, **popen_params)

由于音频持续时间可能长于视频持续时间,因此我添加了一个“-shortest”标志(在“-crf”之前):

cmd = ['ffmpeg', '-hide_banner', '-y', '-loglevel', 'error', '-f', 'rawvideo', 
'-pix_fmt', 'bgr24', '-video_size', '720x1280', '-r', '30.0', '-an', '-i', '-',
'-i', 'audio.aac', '-acodec', 'copy', 
'-shortest', '-crf', '14', '-pix_fmt', 'yuv420p', 'output.mp4']
proc = subprocess.Popen(cmd, **popen_params)

但是,使用“-shortest”标志时,生成的输出 .mp4 包含整个音频,但仅包含 1 帧视频数据。这是怎么回事?

python ffmpeg 管道 视频处理

评论


答: 暂无答案