Есть ли способ транслировать экран на локальный хост?

Я хочу передать свой рабочий стол на Sony Bravia Tv в локальной сети.

В Linux нет способа транслировать рабочий стол на Smart TV в локальной сети.

Однако я нашел обходной путь: если на локальном хосте есть поток наподобие http://localhost:9000, я могу воспроизвести его на телевизоре через расширение vGet Cast chrome, скопировав в него ссылку, но он поддерживает только http, а не rtmp или udp

Я нашел команду ниже, она работает нормально, но это tcp://0.0.0.0:9000, поэтому я не могу отправить ее на телевизор.

ffmpeg -f x11grab -s 1280x720 -framerate 30 -i :0.0 -c:v mpeg2video -q:v 20 -pix_fmt yuv420p -g 1 -threads  -f mpegts - | nc -l -p 8090

Я пытался это

 ffmpeg -f alsa -ac 2 -i hw:0,0 -f x11grab -framerate 30 -video_size 600x400 -i :0.0+0,0 -c:v libx264 -preset veryfast -maxrate 3000k -bufsize 3000k -vf "scale=1280:-1,format=yuv420p" -g 60 -c:a aac -b:a 128k -ar 44100 -f flv "http://localhost:8090/live"

, но на этот раз я получаю следующую ошибку:

 Connection to tcp://localhost:8090 failed: Connection refused
 http://localhost:8090/live: Connection refused
1
задан 1 December 2017 в 15:46

2 ответа

Я нашел способ потоковой передачи на localhost с помощью инструмента VLC cvlc.

Я только что придумал это, может быть, кто-то улучшит это или разместит другой подход.

 cvlc screen:// :screen-fps=10 :scre-caching=100 --sout '#transcode{vcodec=mp4v,vb=4096,acodec=mpga,ab=256,scale=1,width=1280,height=800}:http{dst=0.0.0.0:1234,access=http,mux=ts}'

РЕДАКТИРОВАТЬ: Я извиняюсь, хотя он отвечает на мой вопрос, я проверил его на gmediarender, он работал, но я только что проверил его на ТВ, он не будет работать на Sony Bravia Tv. Может быть, это проблема формата видео или отсутствует seek table в формате видео, который указан здесь

1
ответ дан 1 December 2017 в 15:46

С помощью ffserver веб-сервера от ffmpeg и самого ffmpeg вы просто можете это сделать.

первый...

Настройте ffserver, который в основном находится по адресу /etc/ffmpeg, если его там нет, сделайте следующее:

 dpkg -L ffmpeg | grep server.conf

и вот простая конфигурация (моя) для webm формат:

HTTPPort 8090
HTTPBindAddress 0.0.0.0
MaxHTTPConnections 2000
MaxClients 1000
MaxBandwidth 40000
CustomLog -

UseDefaults

<Feed screen.ffm>               # This is the input feed where FFmpeg will send
   File screen.ffm            # video stream.
   FileMaxSize 1G              # Maximum file size for buffering video
   ACL allow 127.0.0.1
   ACL allow localhost
</Feed>

<Stream screen>              # Output stream URL definition
   Feed screen.ffm              # Feed from which to receive video
   Format webm

   # Audio settings
   AudioCodec vorbis
   AudioBitRate 64             # Audio bitrate

   # Video settings
   VideoCodec libvpx
   
   VideoSize 1600x800           # Video resolution
   # VideoSize 320x240           # Video resolution
   VideoFrameRate 15           # Video FPS

   AVOptionVideo cpu-used 10
   AVOptionVideo qmin 10
   AVOptionVideo qmax 42
   AVOptionVideo quality good
   AVOptionAudio flags +global_header
   PreRoll 15
   StartSendOnKey
   VideoBitRate 400            # Video bitrate
</Stream>


<Stream status.html>            # Server status URL
   Format status
   # Only allow local people to get the status
   ACL allow 192.168.1.0 192.168.1.255
</Stream>

Если вы откроете исходный файл конфигурации, вы увидите, что в нем много комментариев, mv что к другому имени и вставьте мой вместо `ffserver.conf '. Затем запустите команду:

ffserver

После запуска сервера он будет прослушивать поток от ffmpeg на порту 8090 во время подачи на сервер, который мы назвали screen.ffm .

Второе...

Затем вы можете запустить любую допустимую команду ffmepg для отправки потока на ffserver. Вот мой:

ffmpeg -f x11grab -r 25 -s 1600x800 -i :0.0 -c:v libvpx -f alsa -i pulse http://127.0.0.1:8090/screen.ffm 

скриншот запуска команды ffserver и ffmpeg

enter image description here

Затем вы можете открыть веб-браузер и посмотреть результат по адресу: http://localhost :8090/screen

Обратите внимание, что ввод для ffserver был /screen.ffm, а выходной адрес был просто /screen, вы можете соответствующим образом изменить эти имена. . А вот скриншот того, где он воспроизводится на моем локальном компьютере:

enter image description here

Также вы можете вставить ссылку на страницу HTML5, чтобы посмотреть его на странице:

  <video id="screen"  controls> <source src="http://localhost:8090/screen" type="video/webm">
    Your browser does not support HTML video.
  </video>
1
ответ дан 8 August 2020 в 11:09

Другие вопросы по тегам:

Похожие вопросы: