У меня была та же проблема, и я решил, проверив
QMediaPlayer::isVideoAvailable()
Но, как и в вашем случае, она может не сработать, если проверена слишком рано.
Чтобы быть уверенным, вы должны подключиться к сигналу:
QMediaPlayer::videoAvailableChanged(bool videoAvailable)
, а затем показать изображение, если videoAvailable == false.