我正在研究AVB应用程序。我们在讲话者和监听器一侧创建了gstreamer插件,我们使用这些插件来传输存储的媒体。
我在管道下面使用
发言人方:
gst-launch-1.0 filesrc location = / home / input.mp4!排队! avbsink interface = eth0 fd = 0(此处为avbsink创建了传输avb数据包的属性)
听众方:
gst-launch-1.0 avbsrc interface = eth0 dataSync = 1 mediaType = 0 fd = 0!排队! qtdemux name = mux mux.video_0!排队! avdec_h264! autovideosink mux.audio_0!排队! decodebin! autoaudiosink (我试过vaapidecode和vaapisink而不是avdec_h264和autovideosink用于硬件加速器)
在侦听器端出现错误是
“警告:来自element / GstPipeline:pipeline0 / GstVaapisink0:正在删除大量缓冲区。
其他调试信息:
gstbasesink.c(2683):gst_base_sink_is_too_late():/ GstPipeline:pipeline0 / GstVaapiSink:vaapisink0;
可能存在时间戳问题,或者此计算机速度太慢。 “
我已经看到一个使用sync = false的解决方案然后我添加了sync = false和vaapisink并且错误消息被消除但是视频仍然没有流畅播放。它不断门控停止并再次开始。
是否有任何解决方案可以连续播放视频(仅播放高质量视频(720p或更高),应用程序正在播放低质量视频)。
答案 0 :(得分:1)
看起来缓冲区的大小不够,因为高清视频帧有更多像素。我可以提出的另一点可能是你可以在将帧发送给监听器之前应用某种压缩算法,但我不确定压缩是否与任何一种AVB协议相矛盾。