有没有办法将屏幕流传输到本地主机?

有没有办法将屏幕流传输到本地主机?

我想将我的桌面传输到Sony Bravia Tv局域网。

Linux 无法将桌面传输到 LAN 上的智能电视。

不过,我找到了一个解决方法,如果本地主机上有流, 我可以通过chrome 扩展程序将链接复制http://localhost:9000到电视上播放它,但它只支持不支持或vGet Casthttprtmpudp

我找到了下面的命令,它运行正常,但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

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所述视频格式这里

答案2

借助其自身ffserver的 Web 服务器,您可以轻松完成此操作。ffmpegffmpeg

第一的 ...

配置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,并将数据传送到我们命名为屏幕.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 

运行ffserverffmpeg命令的屏幕截图

在此处输入图片描述

然后您可以打开 Web 浏览器并查看结果: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>

相关内容