Показывать видео и миниатюру Youtube в правильном формате 9:16

Я могу легко получить миниатюру изображения Youtube со ссылками, описанными здесь: Как получить миниатюру видео YouTube из YouTube API?

Но все эти миниатюры в формате 3:4 (или близком к нему), хотя само видео в каком-то другом формате. Затем вверху и внизу изображения видны только черные горизонтальные полосы.

Мне нужно изображение в формате 9:16 (это мой формат видео) без черных полос. Это возможно восстановить?

Обновить

Похоже, что само видео на Youtube также имеет черные полосы сверху и снизу, хотя на видео на странице Youtube нет черных полос.

Любые способы просто показать как миниатюру, так и видео в правильном формате?

Обновить

Я нашел это: Удаление черных рамок 4:3 на миниатюрах YouTube

Спрашивающий хочет удалить черные верхние и нижние полосы. Лучшие ответы здесь - отрегулировать высоту и «скрыть» черные полосы путем ручной коррекции. Некоторые из приведенных ниже комментариев также предполагают это.
Значит ли это, что этого невозможно избежать?


person Steeven    schedule 28.03.2013    source источник
comment
Одно из решений, которое я могу придумать, это сделать миниатюры в формате 9:16 и загрузить их отдельно. Хотя это может быть непрактичной работой.   -  person tuxnani    schedule 28.03.2013
comment
Да, конечно :) Но не самый удобный для пользователя способ добавления своего видео.   -  person Steeven    schedule 28.03.2013
comment
Можете ли вы подумать об изменении размера изображения, чтобы оно соответствовало требованиям? Отдельный кеш изображений?   -  person tuxnani    schedule 28.03.2013
comment
@tuxnani: я не знаю, что вы подразумеваете под кэшем изображений ... Но размер изображения нельзя просто изменить. Если бы я пошел по этому пути, то обрезка была бы необходима.   -  person Steeven    schedule 28.03.2013
comment
@Steeven Вы упомянули удобство для пользователя, вы делаете что-то для многопользовательского сайта? Сайт-блог? Не могли бы вы уточнить, что вам нужно сделать, я могу придумать один или два способа сделать это.   -  person Adam Brown    schedule 28.03.2013
comment
@АдамБраун. Пользователь вставляет URL-адрес видео на YouTube в текстовое поле и сохраняет его в базе данных. Из этого URL-адреса я получаю идентификатор видео. Затем я использую этот идентификатор для ссылки типа http://img.youtube.com/vi/<video-id>/hqdefault.jpg, чтобы показать начальное изображение для видео. Моя точка зрения выше заключается в том, что я не хочу, чтобы пользователь создавал и загружал начальное изображение.   -  person Steeven    schedule 30.03.2013
comment
Я имею в виду, что это зависит также от того, как вы хотите показать изображение. Вы можете сделать что-то вроде импорта на свой сайт и изменить его размер с помощью php. Или вы можете установить его в качестве фона Div, а затем принудительно установить Div до определенного размера?   -  person Adam Brown    schedule 30.03.2013
comment
Это, вероятно, легко для вас, но я думаю об этом elated.com/articles/add-image-uploading-to-your-cms   -  person Adam Brown    schedule 30.03.2013
comment
Ну да ладно, а как узнать есть черная полоса или нет? И будет ли он всегда иметь одинаковую высоту? Я имею в виду, что пользователь также может загружать видео на YouTube в обычном формате 3:4 и, возможно, в других разрешенных форматах YouTube, и в этом случае я не думаю, что на изображениях есть эти черные полосы.   -  person Steeven    schedule 30.03.2013
comment
чтобы черные полосы исчезли, вы можете использовать margin *просто сказать   -  person gamehelp16    schedule 30.03.2013
comment
Ну да, @gamehelp16... Но, пожалуйста, прочитайте комментарий двумя комментариями вверх.   -  person Steeven    schedule 30.03.2013
comment
Это возможно. Проверьте мой ответ.   -  person TheCarver    schedule 24.09.2013


Ответы (3)


Согласно документации API:

Тег со значением атрибута yt:name, равным mqdefault, идентифицирует миниатюру изображения размером 320x180 (16:9). Это изображение также не имеет метки времени и может быть взято из любой точки видео.

Таким образом, есть изображение, доступное для каждого разрешения видео (по крайней мере, которое я тестировал) в формате 16:9. Конечно, это не самое большое изображение на планете...

Если размер является проблемой, и вам нужно что-то большее, то лучший вариант — выбрать один из доступных вариантов, который всегда в соотношении 4:3, и скрыть лишнее с помощью CSS. YouTube уже давно делает это . Теперь они используют несколько размеров эскизов на своем сайте, включая mqdefault.jpg.

Очень легко скрыть лишнюю ширину и/или высоту изображения, когда известны все размеры. Вот пример использования изображения 4:3 с YouTube со скрытыми черными полосами, что дает результат 16:9. CSS прокомментирован для вашего удовольствия.

person Aken Roberts    schedule 02.04.2013
comment
Спасибо. Я начинаю понимать, что скрытие баров - это способ сделать это. - person Steeven; 03.04.2013
comment
Есть ли исправление для адаптивного сайта, где высота и ширина являются гибкими? - person Morten Hjort; 20.08.2014
comment
Я тоже ищу решение, @MortenHjort - ты что-нибудь нашел? - person tdc; 30.03.2015
comment
@Prefix: нет правильного решения. Есть много хаков, но нет идеального решения :( - person Morten Hjort; 31.03.2015
comment
@MortenHjort облом :( Вы в конечном итоге использовали один из хаков обрезки, чтобы просто скрыть черные полосы? - person tdc; 31.03.2015
comment
Нет, к сожалению, они все еще там: musik.dk/u2 Научился с этим жить, пока не будет найдено правильное решение. сделал. - person Morten Hjort; 13.04.2015

YouTube предлагает изображения без черных полос с соотношением сторон 4:3. Чтобы получить миниатюру видео 16:9 без черных полос, попробуйте один из следующих способов:

http://img.youtube.com/vi/<insert-youtube-video-id-here>/mqdefault.jpg
http://img.youtube.com/vi/<insert-youtube-video-id-here>/maxresdefault.jpg

Первый mqdefault представляет собой изображение размером 320x180 пикселей.

Второй maxresdefault представляет собой изображение размером 1500x900 пикселей, поэтому его размер необходимо изменить для использования в качестве эскиза. Это красивое изображение, но оно не всегда доступно. Если видео имеет низкое качество (менее 720p, я думаю, не совсем уверен), то это «maxresdefault» становится недоступным. Так что никогда не полагайтесь на это.

person TheCarver    schedule 24.09.2013
comment
Как вы упомянули, maxres не всегда доступен, это тоже не 1500x900, а максимальное разрешение видео (может быть 1280x720, 1920x1080 и больше)... - person Adonis K. Kakoulidis; 21.10.2014

После некоторого поиска в сети решения этой проблемы я ничего не нашел, я думаю, что перепробовал все, и ничто не решило мою проблему. Затем, руководствуясь своей логикой, я просто обернул iframe встроенного видео YouTube в один набор div overflow: hidden; к этому div и сделал его высоту на 2 пикселя меньше, чем высота iframe (на моем видео внизу была черная рамка). Таким образом, div-оболочка меньше, чем iframe, и, расположив его над видео, вы можете скрыть ненужные черные границы. Я думаю, что это лучшее решение из всего, что я пробовал до сих пор.

В этом примере ниже попробуйте встроить только iframe, и вы увидите маленькую черную рамку внизу, а когда вы поместите iframe в div, граница исчезнет, ​​потому что div перекрывает iframe и меньше, чем видео, и это имеет переполнение: скрыто, поэтому все, что выходит за пределы размеров div, скрыто.

<div id="video_cont" style="width: 560px;
                            height: 313px;
                            overflow: hidden;">


    <iframe id="the-video" class="extplayer" width="560" height="315" src="https://www.youtube.com/embed/EErx017kDHQ?&amp;autoplay=0&amp;rel=0&amp;fs=0&amp;showinfo=0&amp;controls=0&amp;hd=1&amp;wmode=transparent&amp;version=2;yt:quality=high;"   frameborder="0" allowfullscreen></iframe>

</div>

В моем случае граница была высотой около 2 пикселей, поэтому я сделал оболочку div на 2 пикселя меньше по высоте, чтобы скрыть границу, в вашем сценарии, если граница находится вверху видео или по бокам и/или с разными размерами, вы нужно сделать разные размеры для div-оболочки и расположить его так, чтобы он перекрывал видео там, где есть границы, и с переполнением: скрыто; границы скрыты.

Надеюсь, это поможет.

person dekiss    schedule 04.10.2013
comment
Это ответ, который я использовал, чтобы избавиться от глупой черной линии при использовании пользовательской миниатюры, которая имитирует вид обрезки png. Он датирован 2013 годом, и нигде в Google нет ничего новее этого, но это работает. - person James F; 10.08.2015