Jump to content

QuickSync not working for Live TV


Recommended Posts

roberto188
Posted (edited)

My transcode log looks like this:
 

 
ffmpeg version 3.4.2 Copyright © 2000-2018 the FFmpeg developers
  built with gcc 7.3.0 (GCC)
  configuration: --enable-gpl --enable-version3 --enable-sdl2 --enable-bzlib --enable-fontconfig --enable-gnutls --enable-iconv --enable-libass --enable-libbluray --enable-libfreetype --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-libopus --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libtheora --enable-libtwolame --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxml2 --enable-libzimg --enable-lzma --enable-zlib --enable-gmp --enable-libvidstab --enable-libvorbis --enable-libvo-amrwbenc --enable-libmysofa --enable-libspeex --enable-libxvid --enable-libmfx --enable-cuda --enable-cuvid --enable-d3d11va --enable-nvenc --enable-dxva2 --enable-avisynth
  libavutil      55. 78.100 / 55. 78.100
  libavcodec     57.107.100 / 57.107.100
  libavformat    57. 83.100 / 57. 83.100
  libavdevice    57. 10.100 / 57. 10.100
  libavfilter     6.107.100 /  6.107.100
  libswscale      4.  8.100 /  4.  8.100
  libswresample   2.  9.100 /  2.  9.100
  libpostproc    54.  7.100 / 54.  7.100
[mpeg2video @ 000000000030cbc0] Invalid frame dimensions 0x0.
    Last message repeated 3 times
  Duration: N/A, start: 47156.512611, bitrate: N/A
  Program 1025 
    Stream #0:0[0x1d61]: Video: mpeg2video (Main) ([2][0][0][0] / 0x0002), yuv420p(tv, bt709, top first), 1920x1080 [sAR 1:1 DAR 16:9], Closed Captions, 29.97 fps, 29.97 tbr, 90k tbn, 59.94 tbc
    Stream #0:1[0x1d62](eng): Audio: ac3 (AC-3 / 0x332D4341), 48000 Hz, 5.1(side), fltp, 384 kb/s
    Stream #0:2[0x1d63](spa): Audio: ac3 (AC-3 / 0x332D4341), 48000 Hz, mono, fltp, 128 kb/s
Stream mapping:
  Stream #0:0 -> #0:0 (mpeg2video (native) -> h264 (h264_qsv))
  Stream #0:1 -> #0:1 (copy)
Press [q] to stop, [?] for help
[h264_qsv @ 0000000003001c20] No device available for encoder (device type qsv for codec h264_qsv).
[h264_qsv @ 0000000003001c20] Error initializing the encoder: invalid video parameters (-15)
Error initializing output stream 0:0 -- Error while opening encoder for output stream #0:0 - maybe incorrect parameters such as bit_rate, rate, width or height
Conversion failed!
ffmpeg version 3.4.2 Copyright © 2000-2018 the FFmpeg developers
  built with gcc 7.3.0 (GCC)
  configuration: --enable-gpl --enable-version3 --enable-sdl2 --enable-bzlib --enable-fontconfig --enable-gnutls --enable-iconv --enable-libass --enable-libbluray --enable-libfreetype --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-libopus --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libtheora --enable-libtwolame --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxml2 --enable-libzimg --enable-lzma --enable-zlib --enable-gmp --enable-libvidstab --enable-libvorbis --enable-libvo-amrwbenc --enable-libmysofa --enable-libspeex --enable-libxvid --enable-libmfx --enable-cuda --enable-cuvid --enable-d3d11va --enable-nvenc --enable-dxva2 --enable-avisynth
  libavutil      55. 78.100 / 55. 78.100
  libavcodec     57.107.100 / 57.107.100
  libavformat    57. 83.100 / 57. 83.100
  libavdevice    57. 10.100 / 57. 10.100
  libavfilter     6.107.100 /  6.107.100
  libswscale      4.  8.100 /  4.  8.100
  libswresample   2.  9.100 /  2.  9.100
  libpostproc    54.  7.100 / 54.  7.100
[mpeg2video @ 000000000053ed40] Invalid frame dimensions 0x0.
    Last message repeated 3 times
  Duration: N/A, start: 47156.512611, bitrate: N/A
  Program 1025 
    Stream #0:0[0x1d61]: Video: mpeg2video (Main) ([2][0][0][0] / 0x0002), yuv420p(tv, bt709, top first), 1920x1080 [sAR 1:1 DAR 16:9], Closed Captions, 29.97 fps, 29.97 tbr, 90k tbn, 59.94 tbc
    Stream #0:1[0x1d62](eng): Audio: ac3 (AC-3 / 0x332D4341), 48000 Hz, 5.1(side), fltp, 384 kb/s
    Stream #0:2[0x1d63](spa): Audio: ac3 (AC-3 / 0x332D4341), 48000 Hz, mono, fltp, 128 kb/s
Stream mapping:
  Stream #0:0 -> #0:0 (mpeg2video (native) -> h264 (libx264))
  Stream #0:1 -> #0:1 (copy)
Press [q] to stop, [?] for help
[libx264 @ 000000000330f7e0] using SAR=1/1
[libx264 @ 000000000330f7e0] using cpu capabilities: MMX2 SSE2Fast SSSE3 SSE4.2 AVX
[libx264 @ 000000000330f7e0] profile Main, level 4.2
[segment @ 000000000324d4a0] Opening 'D:\transcoding-temp\348ab9e50b74649302dcd79fc005d16d0.ts' for writing
Output #0, segment, to 'D:\transcoding-temp\348ab9e50b74649302dcd79fc005d16d%d.ts':
  Metadata:
    encoder         : Lavf57.83.100
    Stream #0:0: Video: h264 (libx264), yuv420p, 1920x1080 [sAR 1:1 DAR 16:9], q=-1--1, 59.94 fps, 90k tbn, 59.94 tbc
    Metadata:
      encoder         : Lavc57.107.100 libx264
    Side data:
      cpb: bitrate max/min/avg: 19616000/0/0 buffer size: 39232000 vbv_delay: -1
    Stream #0:1: Audio: ac3 (AC-3 / 0x332D4341), 48000 Hz, 5.1(side), fltp, 384 kb/s
frame=   83 fps=0.0 q=23.0 size=N/A time=00:00:01.00 bitrate=N/A dup=40 drop=0 speed=   2x    
frame=  141 fps=138 q=22.0 size=N/A time=00:00:01.96 bitrate=N/A dup=40 drop=0 speed=1.92x    
frame=  199 fps=129 q=25.0 size=N/A time=00:00:02.93 bitrate=N/A dup=40 drop=0 speed= 1.9x    
[segment @ 000000000324d4a0] Opening 'D:\transcoding-temp\348ab9e50b74649302dcd79fc005d16d.m3u8.tmp' for writing
[segment @ 000000000324d4a0] Opening 'D:\transcoding-temp\348ab9e50b74649302dcd79fc005d16d1.ts' for writing
frame=  257 fps=124 q=21.0 size=N/A time=00:00:03.90 bitrate=N/A dup=40 drop=0 speed=1.89x    
frame=  293 fps= 93 q=21.0 size=N/A time=00:00:04.50 bitrate=N/A dup=40 drop=0 speed=1.43x    
frame=  351 fps= 96 q=23.0 size=N/A time=00:00:05.47 bitrate=N/A dup=40 drop=0 speed= 1.5x    
[mpegts @ 000000000065b720] PES packet size mismatch
[mpeg2video @ 000000000327fb20] [mpeg2video @ 000000000327fb20] ac-tex damaged at 0 41
ac-tex damaged at 0 54
[mpeg2video @ 000000000327fb20] [mpeg2video @ 000000000327fb20] ac-tex damaged at 0 55
ac-tex damaged at 0 42
[mpeg2video @ 000000000327fb20] [mpeg2video @ 000000000327fb20] ac-tex damaged at 0 56
ac-tex damaged at 0 43
[mpeg2video @ 000000000327fb20] [mpeg2video @ 000000000327fb20] ac-tex damaged at 0 57
ac-tex damaged at 0 44
[mpeg2video @ 000000000327fb20] ac-tex damaged at 0 58
Edited by roberto188
Posted

Please attach the complete log file, thanks.

Posted

Are you saying it works for video files? I wonder if it doesn't like the yadif command, since that's probably not being used with your video files?

roberto188
Posted

It doesn't work at all. Here is my log file from trying to transcode a progressive movie with no Yadif command. Still fails. Says: [h264_qsv @ 0000000003001c20] No device available for encoder (device type qsv for codec h264_qsv).

[h264_qsv @ 0000000003001c20] Error initializing the encoder: invalid video parameters (-15)
 
Seems like ffmpeg isn't recongizing the fact that I have quicksync enabled. I just checked with Handbrake and quicksync works...I transcoded a 1080p movie with the GPU maxed out and my cpu barely breaking a sweat at 180 fps. Any ideas on how to get ffmpeg to recognize my GPU?

Log.txt

Posted

Are your video drivers up to date?

 

Can you give an example command line from hand brake?

cybergrimes
Posted (edited)

I think this happens when MPEG2 is enabled for hardware decoding (mpeg2_qsv ?). I've found if I leave it unchecked for decoding but keep 'Enable hardware encoding' checked I'll get the 'h264_qsv' encoder (despite some messaging about "No device available for encoder"), however if I enable MPEG2 hardware decoding I'll see the transcode stream is encoded using libx264. So either way more CPU intensive than expected.

 

I'm running current release Intel drivers for HD 630 GPU. I can put some logs together in a bit.

Edited by cybergrimes
cybergrimes
Posted (edited)

I think I'm seeing a bit of the same for H264 decode/encode here, no GPU activity with an H264 movie from my library if both are enabled.

I'm also seeing zero on the GPU when only hardware decode is enabled but near 100% of CPU utilization.

 

So the GPU only kicks in when decode is unchecked / encode is checked

Edited by cybergrimes
roberto188
Posted

I think I'm seeing a bit of the same for H264 decode/encode here, no GPU activity with an H264 movie from my library if both are enabled.

I'm also seeing zero on the GPU when only hardware decode is enabled but near 100% of CPU utilization.

 

So the GPU only kicks in when decode is unchecked / encode is checked

I will double check but I'm pretty certain I tried pretty much every permutation of decide/encode.

roberto188
Posted

Are your video drivers up to date?

 

Can you give an example command line from hand brake?

Yes downloaded the final drivers for Intel 3000 windows 7. I will attach the handbrake log that worked shortly.

cybergrimes
Posted (edited)

I will double check but I'm pretty certain I tried pretty much every permutation of decide/encode.

 

Okay, also maybe related: https://trac.ffmpeg.org/ticket/6418

There's mention of ffmpeg 2.8 working better, tried it quickly, seemed fine for H264 but still no luck with mpeg2 live TV

Edited by cybergrimes
roberto188
Posted (edited)

Here is the Handbrake log. This was an mpeg2 interlaced source that used yadif to deinterlace and used quicksync to encode at about 75 fps full 1080p resolution. Verbose Log.

Log.txt

Edited by roberto188
cybergrimes
Posted

I will double check but I'm pretty certain I tried pretty much every permutation of decide/encode.

 

Just curious did you ever try this?

roberto188
Posted

Yes. No difference.

roberto188
Posted

Should i be using 64 bit ffmpeg or 32?

Posted

Use whatever matches the architecture of your system.

roberto188
Posted

Ok. Yeah. Tried 64bit, which is what I have. All different combinations of encoding/decoding. No dice. GPU utilization is at 0. Every single other QS enabled encoder works but the ffmpeg implementation for Emby. A bit frustrating. 

roberto188
Posted

Cybergrimes: What version of ffmpeg are you using? 

cybergrimes
Posted (edited)

I'm normally using the ffmpeg packaged with Emby, so that's 3.4.2

 

First log, 'transcode-mpeg2 decode and encode enabled', I've got MPEG2 decoding and hardware encoding enabled

It looks like it tries to do both with "Stream #0:0 -> #0:0 (mpeg2video (mpeg2_qsv) -> h264 (h264_qsv))" but keeps getting an error "[mpeg2_qsv @ 000002a0be6a2b40] Decoding pixel format '(null)' is not supported" after trying that a bunch of times it eventually gives up and doesn't use QSV for either, instead it goes "Stream #0:0 -> #0:0 (mpeg2video (native) -> h264 (libx264))"

The error message here still looks like this open defect ticket for ffmpeg: https://trac.ffmpeg.org/ticket/6418

 

Second log, 'transcode-hardware encode only', I've got hardware encoding only on and it works as expected with "Stream #0:0 -> #0:0 (mpeg2video (native) -> h264 (h264_qsv))"

Personally I'm using this setting as it balances the load better for remote user streams of DVR material and live TV.

 

Third log, 'transcode-mpeg 2 decode only, I've turned hardware encoding off but it's not even doing that now with a few errors finally native decode "(mpeg2video (native) -> h264 (libx264))"

Sorry I guess I was wrong in my earlier posts, I don't see any MPEG2 decode in any combination of these.

 

I don't know why the second setup doesn't at least work for you. I noticed you have a v1 QSV Sandy Bridge and I'm on v6 QSV Kaby Lake-- maybe some capability differences between the two?

Any chance the ffmpeg parameters used by Emby aren't available for both of our CPUs? Like when it says this in your log:

"[h264_qsv @ 0000000003001c20] Error initializing the encoder: invalid video parameters (-15)

Error initializing output stream 0:0 -- Error while opening encoder for output stream #0:0 - maybe incorrect parameters such as bit_rate, rate, width or height"

transcode-mpeg2 decode and encode enabled.log

transcode-hardware encode only.log

trasncode-mpeg2 decode only.txt

Edited by cybergrimes
roberto188
Posted

Thanks for the detailed post. Handbrake uses ffmpeg with my 2nd gen processor without issue but it is possible more/different commands are required for the older gen processors than the newer. Just wish I could get this to work and take some load off my CPU, 2/3 TV streams are touch and go currently.

cybergrimes
Posted

I'm sure those things have been accounted for already, just BS speculation on my part (there's a 68 page thread on GPU transcoding going back to 2014)

 

Hope you get it sorted ; )

roberto188
Posted

Yeah I haven't been able to find an ffmpeg build that seems to support my older Sandy Bridge processor. Guess I'm just out of luck. Oh well. Thanks for the help everyone. 

Posted

Thanks for the feedback.

nyplayer
Posted (edited)

I too have that problem if I enable hardware decoding it does not use my GPU for encoding if I disable all Hardware decoding then it uses QuickSync for encoding.

Edited by nyplayer

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...