Note that there are some explanatory texts on larger screens.

plurals
  1. PO"first frame is no keyframe" error on gstreamer with ffmpeg H263 plugin on gstreamer
    text
    copied!<p>Right now, I'm trying to use gstreamer to stream a live video between two Windows PCs on a high-speed LAN. I've got a couple of scripts that I've taken from the examples in gstreamer's source code and modified a little. They use H263p for the video codec, speex for the audio codec and rtp to send the streams over UDP. Everything works perfectly, except the video stream will occasionally flash green before returning to normal one macroblock at a time. These green flashes are accompanied by this error message:</p> <pre><code>ERROR ffmpeg .:0:: warning: first frame is no keyframe </code></pre> <p>This is the script I'm running on the server (this is actually a windows script; it uses a BASH syntax because I'm running it through MSYS):</p> <pre><code>#!/bin/sh # # A simple RTP server # # change these to change the server sync. This causes the server to send the # packets largly out-of-sync, the client should use the RTCP SR packets to # restore proper lip-sync between the streams. AOFFSET=0 VOFFSET=0 VCAPS="video/x-raw-yuv,width=352,height=288,framerate=15/1" #DEST=192.168.1.126 DEST=localhost gst-launch -v gstrtpbin name=rtpbin \ ksvideosrc ! videorate ! ffmpegcolorspace ! $VCAPS ! ffenc_h263p bitrate=600000 ! rtph263ppay ! rtpbin.send_rtp_sink_0 \ rtpbin.send_rtp_src_0 ! queue ! udpsink host=$DEST port=5000 ts-offset=$AOFFSET \ rtpbin.send_rtcp_src_0 ! udpsink host=$DEST port=5001 sync=false async=false \ udpsrc port=5005 ! rtpbin.recv_rtcp_sink_0 \ directsoundsrc ! audioconvert ! speexenc ! rtpspeexpay ! rtpbin.send_rtp_sink_1 \ rtpbin.send_rtp_src_1 ! queue ! udpsink host=$DEST port=5002 ts-offset=$VOFFSET \ rtpbin.send_rtcp_src_1 ! udpsink host=$DEST port=5003 sync=false async=false \ udpsrc port=5007 ! rtpbin.recv_rtcp_sink_1 </code></pre> <p>And this is the script that is running on the client</p> <pre><code>#!/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 </code></pre> <p>I've tried everything I can think of, but nothing I do is fixing this issue. Does anybody have any ideas?</p>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload