Video streaming H.264流可以说其SAR和DAR为[0:1]吗

Video streaming H.264流可以说其SAR和DAR为[0:1]吗,video-streaming,h.264,Video Streaming,H.264,我已经实现了一个视频查看应用程序来显示来自摄像机的视频流。它使用FFMPEG库接收(H.264)多播视频流并将其解码为图像,这些图像由我的应用程序显示。它工作得很好,但现在有一个特定的摄像头流导致我的应用程序崩溃。 当使用ffprobe探测流时,它显示根据流信息,SAR和DAR都是[0:1]。我以前从未在其他摄像机上看到过这种情况。是SAR在我的应用程序中造成了问题,所以现在我对它进行了修补,假设SAR为[1:1],以防流指示无效SAR 我的问题相当笼统,并不是特别针对我的申请: 是否允许摄像头

我已经实现了一个视频查看应用程序来显示来自摄像机的视频流。它使用FFMPEG库接收(H.264)多播视频流并将其解码为图像,这些图像由我的应用程序显示。它工作得很好,但现在有一个特定的摄像头流导致我的应用程序崩溃。 当使用ffprobe探测流时,它显示根据流信息,SAR和DAR都是[0:1]。我以前从未在其他摄像机上看到过这种情况。是SAR在我的应用程序中造成了问题,所以现在我对它进行了修补,假设SAR为[1:1],以防流指示无效SAR

我的问题相当笼统,并不是特别针对我的申请:

是否允许摄像头报告[0:1]的SAR(和/或DAR),这似乎毫无意义?如果允许的话,在这种情况下是否应该假设一些默认的SAR和/或DAR

下面是ffprobe输出的一部分,以防与此相关

$ ffprobe -v info -show_streams -protocol_whitelist udp,rtp,file stream_system_1_cam_11_live.sdp
ffprobe version 3.2.14-1~deb9u1 Copyright (c) 2007-2019 the FFmpeg developers
  built with gcc 6.3.0 (Debian 6.3.0-18+deb9u1) 20170516
Input #0, sdp, from 'stream_system_1_cam_11_live.sdp':
  Metadata:
    title           : /videoinput_1:0/h264_1/media.stm
  Duration: N/A, start: 0.333700, bitrate: N/A
    Stream #0:0: Video: h264 (Main), yuvj420p(pc, bt470bg/bt470bg/smpte170m, progressive), 1920x1080, 30 fps, 29.97 tbr, 90k tbn, 60 tbc
[STREAM]
index=0
codec_name=h264
codec_long_name=H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10
profile=Main
codec_type=video
codec_time_base=1/60
codec_tag_string=[0][0][0][0]
codec_tag=0x0000
width=1920
height=1080
coded_width=1920
coded_height=1080
has_b_frames=0
sample_aspect_ratio=0:1
display_aspect_ratio=0:1
pix_fmt=yuvj420p
level=42
color_range=pc
color_space=bt470bg
color_transfer=smpte170m
color_primaries=bt470bg
chroma_location=left
field_order=progressive
[/STREAM]
让我吃惊的是样本的纵横比=0:1显示的纵横比=0:1! 非常感谢您的任何想法、信息和意见。

来自H.264规范章节“E.2.1 VUI参数语义”:

sar_宽度和sar_高度应相对最佳或等于0。什么时候 纵横比idc等于0或sar宽度等于0或 sar_高度等于0时,应考虑样本纵横比 本建议未规定|国际标准


因此,这意味着SAR是未指定的。

感谢您为此指出了正确的规范。但是如果流不提供SAR或DAR,显示应用程序应如何确定如何显示视频图像?只是“假设”SAR的唯一选项是什么?这个流是否应该被认为是“错误的”,因为它没有提供显示它所需的所有数据?(也就是说,我可以联系相机供应商并责怪他们没有遵守规范吗?)根据H.264规范,流是正确的。此类信息(如SAR、颜色矩阵、颜色原色和几乎所有的VUI)是可选的,因此未指定值是有效值。至于要做什么:1)尝试在另一个抽象层,即容器(mkv/mp4)中查找此类信息2)假设一些值作为默认值,对于SAR,它很可能是1:1(平方)。再次感谢。。。由于没有可用的容器(因为它是通过rtp从摄像头发出的h264实时流),在我的应用程序中,我能做的最好的事情就是假设[1:1]SAR…(在这种特殊情况下,它确实是[1:1]),我猜ffplay和vlc正在做同样的事情。。。非常感谢您一直思考!