Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Video &引用;第一帧不是关键帧”;gstreamer上带有ffmpeg H263插件的gstreamer出错_Video_Video Streaming_Gstreamer - Fatal编程技术网

Video &引用;第一帧不是关键帧”;gstreamer上带有ffmpeg H263插件的gstreamer出错

Video &引用;第一帧不是关键帧”;gstreamer上带有ffmpeg H263插件的gstreamer出错,video,video-streaming,gstreamer,Video,Video Streaming,Gstreamer,现在,我正在尝试使用gstreamer在高速局域网上的两台Windows PC之间传输实时视频。我从gstreamer源代码中的示例中获得了一些脚本,并对它们进行了一些修改。他们使用H263p作为视频编解码器,speex作为音频编解码器,rtp通过UDP发送流。除了视频流在每次返回正常的一个宏块之前偶尔会闪烁绿色外,其他一切都可以正常工作。这些绿色闪烁伴随着以下错误信息: ERROR ffmpeg .:0:: warning: first frame is no keyframe 这是我在服务

现在,我正在尝试使用gstreamer在高速局域网上的两台Windows PC之间传输实时视频。我从gstreamer源代码中的示例中获得了一些脚本,并对它们进行了一些修改。他们使用H263p作为视频编解码器,speex作为音频编解码器,rtp通过UDP发送流。除了视频流在每次返回正常的一个宏块之前偶尔会闪烁绿色外,其他一切都可以正常工作。这些绿色闪烁伴随着以下错误信息:

ERROR ffmpeg .:0:: warning: first frame is no keyframe
这是我在服务器上运行的脚本(这实际上是一个windows脚本;它使用BASH语法,因为我通过MSYS运行它):

这是在客户端上运行的脚本

#!/bin/sh
#
# A simple RTP receiver 
#

VIDEO_CAPS="application/x-rtp,media=(string)video,clock-rate=(int)90000,encoding-name=(string)H263-1998"
AUDIO_CAPS="application/x-rtp,media=(string)audio,clock-rate=(int)44100,encoding-name=(string)SPEEX"

VIDEO_DEC="rtph263pdepay ! ffdec_h263"
AUDIO_DEC="rtpspeexdepay ! speexdec"

VIDEO_SINK="ffmpegcolorspace ! d3dvideosink"
AUDIO_SINK="audioconvert ! audioresample ! directsoundsink"

gst-launch -v gstrtpbin name=rtpbin latency=100                                    \
           udpsrc caps=$VIDEO_CAPS port=5000 ! rtpbin.recv_rtp_sink_0              \
             rtpbin. ! $VIDEO_DEC ! $VIDEO_SINK                                \
           udpsrc port=5001 ! rtpbin.recv_rtcp_sink_0                              \
           rtpbin.send_rtcp_src_0 ! udpsink port=5005 sync=false async=false       \
       udpsrc caps=$AUDIO_CAPS port=5002 ! rtpbin.recv_rtp_sink_1              \
             rtpbin. ! $AUDIO_DEC ! $AUDIO_SINK                                \
           udpsrc port=5003 ! rtpbin.recv_rtcp_sink_1                              \
          rtpbin.send_rtcp_src_1 ! udpsink port=5007 sync=false async=false

我已经尝试了我能想到的一切,但我所做的一切都不能解决这个问题。有人有什么想法吗?

绿色工艺品通常是由数据包丢失引起的。也许你有诊断rtp流的工具?
#!/bin/sh
#
# A simple RTP receiver 
#

VIDEO_CAPS="application/x-rtp,media=(string)video,clock-rate=(int)90000,encoding-name=(string)H263-1998"
AUDIO_CAPS="application/x-rtp,media=(string)audio,clock-rate=(int)44100,encoding-name=(string)SPEEX"

VIDEO_DEC="rtph263pdepay ! ffdec_h263"
AUDIO_DEC="rtpspeexdepay ! speexdec"

VIDEO_SINK="ffmpegcolorspace ! d3dvideosink"
AUDIO_SINK="audioconvert ! audioresample ! directsoundsink"

gst-launch -v gstrtpbin name=rtpbin latency=100                                    \
           udpsrc caps=$VIDEO_CAPS port=5000 ! rtpbin.recv_rtp_sink_0              \
             rtpbin. ! $VIDEO_DEC ! $VIDEO_SINK                                \
           udpsrc port=5001 ! rtpbin.recv_rtcp_sink_0                              \
           rtpbin.send_rtcp_src_0 ! udpsink port=5005 sync=false async=false       \
       udpsrc caps=$AUDIO_CAPS port=5002 ! rtpbin.recv_rtp_sink_1              \
             rtpbin. ! $AUDIO_DEC ! $AUDIO_SINK                                \
           udpsrc port=5003 ! rtpbin.recv_rtcp_sink_1                              \
          rtpbin.send_rtcp_src_1 ! udpsink port=5007 sync=false async=false