我们创建了一个带有边框的10秒1920x1200视频文件来测试HLS流像素纵横比(PAR)校正。视频被缩放和编码的x264到320x176,使标准杆22/25。我们的源和输出HLS fMP4文件可以在这里找到https://gitlab.com/kferguson/aspect-ratio-streaming-files.git。
moov.trak.tkhd MP4框在fragment_1000kbps_init.mp4文件中显示正确的视觉表示大小为281x176,...avc1.pasp框显示正确的PAR 22/25。(我们使用"isoviewer-2.0.2-jfx.jar“应用程序查看MP4框。)
如果master.m3u8文件是与VLC播放器或gstreamer一起播放的,
gst-launch-1.0 playbin uri=file:///master.m3u8正确显示高宽比。然而,随着视频播放或流到hls.js的网站中,PAR没有得到纠正(视频中的圆圈被压扁了)。在MP4框中,ffplay和MP4“查找”是为了让它们正确地播放什么?
通过使用下面的Powershell命令将所有fMP4文件连接到一个.mp4文件中,我们做了进一步的实验:
gc -Raw .\fragment_1000kbps_init.mp4, .\fragment_1000kbps_00000.m4s, ..., .\fragment_1000kbps_00000.m4s | sc -NoNewline .\fragment_1000kbps.mp4奇怪的是,ffplay以正确的标准播放这个连接的mp4文件。(也包括在上面的git链接中)。我们假设在片段m4s文件框中有一些信息,而ffplay (和hls.js)需要正确回放,但是,我们找不到它吗?
发布于 2022-05-27 11:36:33
问题是在“sar_width”MP4框的H.264序列参数集中需要可选的vui参数(avcC和sar_height)。vlc播放器和gstreamer只需要包含pasp框,但是,ffmpeg和hls.js播放器需要正确设置额外的vui参数。
https://stackoverflow.com/questions/72125162
复制相似问题