2

У меня есть (сломанный) ПК, на котором VLC воспроизводит видео только на левой половине экрана, что, похоже, связано с OpenGL/ драйверами (см. Здесь). С другой стороны, ffplay не имеет проблемы с половиной окна, но может открывать только те видео, которые я хочу воспроизвести.

Итак, похоже на Как я могу передать вывод ffmpeg в ffplay? Я подумал о том, чтобы передать VLC в ffplay ; и я получил это далеко (я использую это видео):

$ cvlc Rent_an_Ambassador.ogv --sout '#transcode{vcodec=IYUV}:std{access=file,mux=raw,dst=-}' | ffplay -f rawvideo -s 398x224 pipe:-
...
Warning: call to srand(1369860697)
Warning: call to rand()
Blocked: call to unsetenv("DBUS_ACTIVATION_ADDRESS")
Blocked: call to unsetenv("DBUS_ACTIVATION_BUS_TYPE")
[0x98f4b64] dummy interface: using the dummy interface module...
[0x9903254] mux_dummy mux: Open
[rawvideo @ 0x98bf890]Estimating duration from bitrate, this may be inaccurate
Input #0, rawvideo, from 'pipe:-':
  Duration: N/A, start: 0.000000, bitrate: N/A
    Stream #0.0: Video: rawvideo, yuv420p, 398x224, 25 tbr, 25 tbn, 25 tbc

Итак, в основном ffplay , что IYUV VLC должен быть yuv420p , как я читал в Libav: вопросы и обсуждения пользователей. Re: Масштаб изображения от 4: 2: 2 до 4: 2: 0

Обратите внимание, что YUV420P это также I420 и IYUV.

... к сожалению, видео выводится неправильно:

плохое видео

Обратите внимание, что если я не укажу размер для ffplay , он завершится неудачно с:

picture size invalid (0x0)
    Last message repeated 1 times
[rawvideo @ 0x9c6f890]Could not find codec parameters (Video: rawvideo, yuv420p)
[rawvideo @ 0x9c6f890]Estimating duration from bitrate, this may be inaccurate
pipe:-: could not find codec parameters

Итак, мой вопрос:

  • Кто-нибудь знает правильную командную строку для передачи из vlc в ffplay - используя необработанное видео?
  • Есть ли способ заставить vlc воспроизводить аудио в обычном режиме и передавать его видеосигнал в виде необработанного видео в ffplay (чтобы избежать накладных расходов при мультиплексировании видео и аудио в новый формат, который ffplay должен был бы дополнительно демультиплексировать?)

РЕДАКТИРОВАТЬ: Вот одна командная строка, которая обеспечивает надлежащее видео с тестовым файлом, как указано выше (через Форумы VideoLAN • Отправка данных YUV в канал под окнами):

cvlc Rent_an_Ambassador.ogv --vout=yuv --yuv-yuv4mpeg2 --yuv-file=/dev/stdout | ffplay pipe:-

Тем не мение:

  • ffplay segfaults, когда я пытаюсь распаковать другие видео с помощью vlc
  • Для еще третьей категории видео vlc не будет экспортировать настройку FPS - поэтому ffplay запустится, покажет кадр, а затем остановит отображение (и вам придется постоянно прокручивать кнопку мыши, чтобы окно видео обновлялось). Обратите внимание, что вы не можете форсировать частоту кадров ffplay для вечных контейнеров - и при выполнении --yuv-file (вместо --sout) --sout-transcode-fps не будет применяться (со стороны vlc)

1 ответ1

1

Вы пытались отключить аппаратное ускорение видео в VLC? Это может исправить проблему с половиной экрана.

Да, я понимаю, что это не вопрос, но кажется, что это проблема XY.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .