使用媒体源api自适应调整gop大小不同的mp4的比特率

时间:2018-12-23 22:32:23

标签: video ffmpeg ffprobe media-source

我想要不同gop关键帧大小的mp4视频的自适应比特率流。

我知道有多种用于多比特率流媒体的选项,例如hls,破折号等

但是我已经将视频上传到服务器上,每个视频都有360p,480p和720p mp4文件,并且每个视频都有不同的关键帧间隔。

所以真正的挑战是使用媒体源api制作自己的多比特率mp4媒体播放器

我在各个方面都头脑风暴。

我们只能在关键帧处剪切h264

所以我真正的挑战是了解视频的每个关键帧,关键帧块持续时间,偏移持续时间和mp4文件中的偏移字节位置。

所以我的问题是如何使用ffmpeg,ffprobe或任何其他软件来获得这些信息。

1-关键帧块持续时间

2-偏移视频时长

3-视频中的偏移字节位置。

以下ffprobe命令提供了每个关键帧的详细信息,也许这会有所帮助

ffprobe -i "1080p.mp4" -select_streams v -skip_frame nokey -show_frames

谢谢!

1 个答案:

答案 0 :(得分:0)

运行此命令,

ffprobe -loglevel error -skip_frame nokey -select_streams v:0 -show_entries frame=pkt_dts_time,pkt_pos -of csv "video.mp4"

然后

pkt_dts_time为GOP提供“偏移视频时长”。

pkt_pos为GOP的开始提供“偏移字节位置”。

关键帧的pkt_dts_time下一关键帧pkt_dts_time之间的差异是“关键帧块持续时间”。

请注意,您只能通过重新编码视频来更改关键帧位置。而且,如果您要重新编码,则输入视频的关键帧位置无关紧要。有关如何以固定位置强制KF,请参见https://ffmpeg.org/ffmpeg.html#Advanced-Video-options下的-force_key_frames