You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Lichee Pi TH1520上使用omxh264enc与mp4mux报错“Buffer has no PTS”求助

解决GStreamer MP4Mux/QTMux "Buffer has no PTS" 错误

问题根源

MP4Mux和QTMux都依赖媒体帧的**PTS(显示时间戳)**构建容器时间轴,你的管线中rawvideoparse use-sink-caps=true环节丢失了原始视频帧的PTS信息,导致封装器无法完成时间轴同步,最终触发报错。

解决方案

方案1:替换rawvideoparse为格式转换组件(推荐)

移除rawvideoparse,改用videoconvert适配编码器格式,同时完整保留原始时间戳:

gst-launch-1.0 filesrc location=test_h264.mp4 ! decodebin \
  ! videoconvert ! video/x-raw,format=NV12 \
  ! omxh264enc ! h264parse config-interval=1 ! mp4mux ! filesink location=t_h264.mp4
  • videoconvert:自动转换视频格式以匹配omxh264enc的输入要求,同时完整保留原始帧的PTS。
  • video/x-raw,format=NV12:指定Lichee Pi TH1520平台OMX编码器兼容的常用格式(可根据硬件实际支持调整)。
  • h264parse config-interval=1:强制编码器每隔1个关键帧输出SPS/PPS参数,确保MP4Mux能正确识别视频规格并初始化容器。

方案2:修复rawvideoparse的时间戳传递

如果必须保留rawvideoparse,需显式指定视频参数以确保时间戳正常传递:

gst-launch-1.0 filesrc location=test_h264.mp4 ! decodebin \
  ! rawvideoparse use-sink-caps=true framerate=30/1 width=1920 height=1080 format=NV12 \
  ! omxh264enc ! h264parse config-interval=1 ! mp4mux ! filesink location=t_h264.mp4

注意:需将framerate、width、height替换为输入视频的实际参数,否则仍可能出现时间戳不匹配问题。

验证方法

运行修改后的管线后,可使用ffprobe检查输出文件的时间戳信息:

ffprobe t_h264.mp4

若输出中start_time、duration等时间参数显示正常,则说明问题已解决。

内容的提问来源于stack exchange,提问作者Sakura286

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.04 08:08:21