如何使用子进程缩小视频,然后将数据传输到标准输出并使用 ffplay 播放并保存

How to downscale video using subprocess and then piping the data over to stdout and play using ffplay and save it as well

我正在尝试使用 ffmpeg 缩小视频并将标准输出数据通过管道传输到 ffplay 以通过将其传输到 aws lambda 上的 ffplay 来播放新的缩小视频。

这是我目前使用的命令,但由于某种原因添加比例选项不起作用。

我正在尝试 运行 在本地使用此命令,然后再使用 subprocess 命令将其部署到 python 上。我需要原始视频能够保存到数据库中以实时传输数据。

%ffmpeg -i sample.mp4 -vf scale=240:-2 -f mpegts -c:v copy -af aresample=async=1:first_pts=0 - | ffplay -

出于某种原因添加缩放选项会将视频保存为名称 scale=240:-2,这没有意义。

此命令使您可以在内存中转换它,而不是将视频作为 mp4 保存到本地存储。如果您将其格式化为 mpegts,则可以删除 -movflags,但对于 mp4,您需要碎片标志。

"ffmpeg " \
    "-i "+str(video_path)+" " \
    "-filter:v scale="+str(width)+":"+str(height)+" " \
    "-movflags frag_keyframe+empty_moov " \
    "-f mp4 " \
    "-af aresample=async=1:first_pts=0  " \
    "-"