Я хочу передать свой рабочий стол на 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
Я нашел способ потоковой передачи на 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
в формате видео, который указан здесь
С помощью 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
Затем вы можете открыть веб-браузер и посмотреть результат по адресу: http://localhost :8090/screen
Обратите внимание, что ввод для ffserver
был /screen.ffm
, а выходной адрес был просто /screen
, вы можете соответствующим образом изменить эти имена. . А вот скриншот того, где он воспроизводится на моем локальном компьютере:
Также вы можете вставить ссылку на страницу HTML5
, чтобы посмотреть его на странице:
<video id="screen" controls> <source src="http://localhost:8090/screen" type="video/webm">
Your browser does not support HTML video.
</video>