gpt4 book ai didi

ffmpeg - 是否可以在编码器编码时播放输出视频文件?

转载 作者:行者123 更新时间:2023-12-02 11:47:24 25 4
gpt4 key购买 nike

我有一个视频文件,我需要将其编码为 H264/AVC 并通过 HTTP 提供给客户端。我需要的是客户端的播放器可以在编码时播放视频。

据我所知,为了使播放器能够在视频下载时播放,必须将“moovatom”放置在视频文件的开头。然而,编码器(例如:ffmpeg)在完成编码后总是在文件末尾写入“moovatom”。

编码器有什么方法可以将“moovatom”放在编码输出的开头吗?或者在没有 moovatom 存在的情况下播放视频?

提前致谢

LR

最佳答案

是的,这是可能的,但仅限于某些容器格式。 QuickTime/MP4 容器不可能做到这一点。在这些格式中,moov 原子包含样本偏移量(样本在 mdat 原子中的位置)。这些直到视频编码后才知道。通过 VOD(视频点播),您可以获取完成的文件,并将 moov 原子移到前面,以使流媒体工作得更好。但如果您是即时编码,则无法做到这一点。为了实现这一点,您需要使用面向流的传输格式。 FLV 或 MPEG-TS 等格式都可以。如果您将视频传递到 ffmpeg 并告诉它在 FLV 容器中生成 H.264 视频,您就可以在编码后将该数据提供给播放器,并且它会正常工作。当然,如果您想通过 HTTP 提供服务,您可能必须编写自己的服务器(或现有服务器的模块)。据我所知,没有什么支持在写入文件时提供文件服务(问题是发送内容长度 header 时不知道文件大小)。但是,如果您通过 RTMP 或 RTSP 提供视频,则可以使用现有软件来实现此操作。

关于ffmpeg - 是否可以在编码器编码时播放输出视频文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6353519/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com