[FFmpeg-user] QSV Decoding and QSV Encoding Live Stream

Jose Luis Bravo josezkaos at gmail.com
Wed Jan 10 09:49:05 EET 2018

I've recorded a short clip from a DVB-T stream:


If QSV Decoder would work with live streams, this would be enought:

ffmpeg -hwaccel qsv -vcodec h264_qsv -i dvbt_Stream.ts -vcodec h264_qsv -vf
deinterlace_qsv -y test.ts

But that fails.

Somehow, if the stream is copied and piped into another ffmpeg ... it works:

ffmpeg -i dvbt_Stream.ts -vcodec copy -acodec copy -f mpegts -| ffmpeg
-hwaccel qsv -vcodec h264_qsv -f mpegts -i pipe: -vcodec h264_qsv -vf
deinterlace_qsv -y test.ts

Stream is copied, decoded with H264_QSV and then encoded with H264_QSV, all
under HW Acceleration.

But this workaround is not valid to me this time ... I need to avoid the
use of pipe.

Is there any other way to get it work?

> QSV Decoder in FFMPEG needs video stream to start with an I Frame. Live
> Streams usually does not get an I Frame at the begging, and FFMPEG
> using QSV Decoder returns error. I've get to decode and encode a Live
> Stream using QSV using a workaround
> (copying the live stream into a pipe, and then transcoding that pipe usign
> QSV Decoder/Encoder): ffmpeg -i "
> http://localhost:1212/upnp/channelstream/3713217958821953687%7ClaSexta%20HD%20%28spa%29.ts
> "
> -vcodec copy -acodec copy -f mpegts pipe:1|ffmpeg.exe -hwaccel qsv -vcodec
> h264_qsv -i pipe:0 -vcodec h264_qsv -bufsize 4M -b:v 3200k -r 50 -map 0:a:0
> -map 0:v:0 -vf deinterlace_qsv -acodec aac -ab 256k -ar 48000 -async 1 -y
> test.ts The thing is I need to put the command line into a third program
> which
> doesn't support pipes ("|")... Is there anyway to get FFMPEG discard the
> beggining of the live stream
> until it gets an IFrame, seek to an IFrame in an input buffer or similar
> without using a pipe "|" ? Thanks in advance.

More information about the ffmpeg-user mailing list