在ffmpeg或VLC中支持HEVC/H.265隔行扫描格式



"俄罗斯音乐盒";卫星上的信道以HEVC 1920x1080 25fps交错传输,记录后VLC将文件识别为50fps,分辨率1920x540-一半高度。但在卫星调谐器上,播放器运行良好——它以1920x1080 25fps的速度播放文件。。。我们什么时候可以期待对HEVC/H.265隔行扫描的支持?这是录音文件(加里格雷和伊娃米勒-wtf(。此外,VLC播放器统计数据中有很多丢失的帧。。

编辑:

我发现了一些有趣的信息,在HEVC中,交错视频内容可以在这里指示:

与H.264/AVC不同,HEVC中不存在隔行扫描专用编码:

  • 无混合帧-场交互(如H.264/AVC中的PAFF(
  • 变换系数无隔行扫描
  • 如果当前图片和参考图片的极性不同(上下或底部-顶部(

但是,在HEVC中,可以指示隔行视频内容(在VPS/SPS和pic_timingSEI消息中用信号通知后者针对序列中的每个图片发送(。隔行扫描相关设置:

在VPS/SPS集合CCD_ 2和CCD_。事实上,HEVC标准说:

如果general_progressive_source_flag等于0并且general_interlaced_source_flag等于1CVS中的图片应当仅被解释为交错的

  • 在VPS/SPS集合general_frame_only_constraint_flag=0

  • 在SPS VUI集合CCD_ 9和CCD_。请注意,如果这些标志为ON则对于每个图片,图片定时SEI应当存在。

  • 具有以下参数的每个图片的图片定时SEI的传输:

    source_scan_type = 0指示隔行扫描模式对于顶场图像信号CCD_ 12和对于底场图像CCD_

  • 也许可以在播放文件之前将这些参数传递给ffmpeg/vlc?

    (添加作为答案,因为我还不能发表评论。("这是一个创作问题,与VLC无关"也可能存在创作问题,但该问题与VLC有关,更具体地说,与FFMpeg对交错HEVC缺乏了解有关,这影响了依赖它的众多应用程序。大多数程序都不是为了支持而编写的,这开始成为一个值得注意的问题,因为ATSC 3.0在美国的广播开始了,有些程序是在1080i HEVC中这样做的。一个电视台可以通过"强制"纵横比来绕过它,这使得Mediainfo和VLC等软件错误地将其报告为1080p,但至少它以正确的纵横比显示。https://trac.ffmpeg.org/ticket/5514https://trac.ffmpeg.org/ticket/4141

    编码:如果您有一个隔行扫描的源文件,您必须将流解交织到具有一半视频高度和两倍帧速率的单独字段中,并将流标记为HEVC隔行扫描:

    ffmpeg -i test.ts -vf separatefields -c:v libx265 -x265-params interlace=tff -c:a copy test.mkv
    

    如果源是渐进的,则上面的线将把25p变换为50i,或者把50p变换为100i。

    解码:如果源文件是HEVC交错的,解码器必须先对字段进行交错,然后对流进行解交错。此外,纵横比由于编织滤波器而失真,因此如果视频DAR为16/9(或4/3等(,则必须明确说明

    ffplay -i test.mkv -vf weave,bwdif,setdar=16/9
    

    最新更新