您好,我正在尝试将视频文件(位于本地计算机的硬盘中)流式传输到家庭网络/局域网。
我现在正尝试从一周开始做这件事。我尝试了我能找到的所有资源,然后作为最后的手段在这里提出这个问题。
1. 视频文件存在于本机硬盘中。
2.需要通过HTTP协议进行流式传输。
3. 任何 GPL 服务器都可以使用,但更喜欢 ffmpeg 或 vlc。
谢谢。我很感谢对此的任何帮助。
这间歇性地起作用。但没有音频传来,只收到视频。
在服务器端:
ffmpeg -i sample.mp4 -vcodec libx264 -acodec aac -ar 48000 -strict experimental -f flv "rtmp://127.0.0.1:1935/live/myStream"
vlc rtp://@10.1.10.102:9001
Run Code Online (Sandbox Code Playgroud)
步骤1:
运行 ffmpeg 服务器
ffserver -d -f /etc/ffserver.conf
ffserver version N-80026-g936751b Copyright (c) 2000-2016 the FFmpeg developers
Run Code Online (Sandbox Code Playgroud)
步骤 2:流式传输
ffmpeg -i SampleVideo_1280x720_2mb.mp4 -vcodec libx264 -acodec aac -ar 48000 -strict experimental -f flv "rtmp://localhost/live/myStream"
ffmpeg version N-80026-g936751b Copyright (c) 2000-2016 the FFmpeg developers
built with gcc 4.8 …Run Code Online (Sandbox Code Playgroud) 我看我下载的电影。我知道我可以等到文件完全下载。但我通常不这样做。
\n\n我通常使用VLC或其他播放器打开部分下载的文件。它向我显示警告,文件不完整,并且搜索可能无法正常工作。(但它确实有效,直到我尝试转发到尚未下载的电影区域。)
\n\n我通常在开始下载后立即执行此操作。至少我曾经是这样做的。
\n\n当下载完成时,Chrome 浏览器使用这种方法会遇到一些小问题。该文件的命名略有不同。它有后缀.crdownload,下载完成后应重命名该文件。浏览器无法\xe2\x80\x99 执行此操作,因为文件已打开。所以它显示了警告,我手动重命名了该文件。
现在我尝试使用较新版本的 Chrome,但它\xe2\x80\x99 不能完美地工作。乍一看它有效。我洗了电影。但是,当下载完成后,重命名文件可能会再次出现问题,但现在甚至无法向我显示警告,而是删除下载的内容并再次开始下载!真是胡说八道。这是一个错误还是一个功能?我应该在某个地方报告该错误吗?
\n\n我现在应该怎么做?使用不同的浏览器?我尝试了 Chromium 浏览器。但新版本的行为相同并且存在相同的问题。
\n\n或者我应该使用旧版本的 Chrome 和 Chromium?我有几年前的版本。我不想更新和使用旧的浏览器。但大多数网页抱怨它们不\xe2\x80\x99不支持如此古老的浏览器。
\n\n你是怎么做到的?
\n我看到ONVIF 设备管理器找到了兼容摄像机的流 URL。但它是如何做到的呢?有没有办法找到ONVIF摄像机的RTSP路径?
我有一个程序可以将游戏玩法保存在文件中。我想运行 FFmpeg 并将文件作为实时流的输入。下面是我如何使用 FFmpeg 流式传输视频文件。
%ffmpeg% -re -i %fileloc%%file%.mpg -deinterlace -vcodec h264_nvenc -pix_fmt yuv420p -s hd720 -threads 4 -preset fast -r 30 -g 60 -b:v 2000k -ar 44100 -b:a 4000000 -bufsize 2049k -f flv rtmp://live-dfw.twitch.tv/app/live_key 2> %fileloc%%file%_Info.tx
Run Code Online (Sandbox Code Playgroud)
然而,当游戏 fps 低于 30 fps 时,我会遇到一些问题。我想 FFmpeg 不会等待输入文件被写入并到达末尾。这是正确的还是发生了其他事情?是否有一个参数告诉 FFmpeg 等待而不是关闭?
这些隔离的日子里,我打算将我的桌面分享给朋友们,向他们解释什么是 git 实践。问题是:
我决定使用的是共享我的桌面并将ffmpeg -f x11grab输出流到任何端口。由于我们可以在一个虚拟网络中,朋友们可以使用任何 VLC、MPV 或网络浏览器毫无问题地观看此流。当我了解到 ffmpeg 无法直接输出到 http 时,问题就出现了。我尝试了很多解决方案,例如通过 rtmp 发送到 YouTube Live Streaming(开销,而不是免费服务)以及使用 HLS 协议和 HTTP 服务器进行分割和共享,并在 HLS 处停止。
我的 ffmpeg 启动:
ffmpeg -f x11grab -video_size 1920x1080 -i :0 -c:v h264 -f hls -hls_time 1 -g 15 stream.m3u8
Run Code Online (Sandbox Code Playgroud)
以及我正在测试的 mpv:
mpv --no-cache --no-resume-playback stream.m3u8
Run Code Online (Sandbox Code Playgroud)
我发现有大约 10-15 秒的延迟。即使我将视频比特率设置为半兆字节,也会有类似的延迟(当然质量也很差),因此这可能意味着问题不在于带宽[而且我什至没有开始在比我的本地更远的地方广播它个人电脑!]。
我找到了一个SO 答案,其中用户说 HLS 是低延迟的错误协议。我阅读了很多博客、维基百科文章和 ffmpeg 维基百科(StreamingGuide),但找不到解决方案。我怎样才能减少延迟,或者我可以使用什么软件(最好是 ffmpeg)让我的朋友像 Discord 和 Skype 那样以几秒的延迟看到我的桌面?值得一提的是:我不需要好的质量,滴也可以,因为我要共享一个终端窗口。
我正在寻找可以从 MPD 获取 http mp3 流作为输入的控制台音乐播放器。远程控制该播放器的能力将是一个额外的好处。
此外,您是否知道这些播放器中的任何一个是否可以配置为定期检查音乐流的 URL,并在其处于活动状态时播放流?也就是说,当我启动 MPD 流时,我不必手动启动播放器。
这将在屏幕会话内的控制台上运行,因此从技术上讲,如果我绝对必须,我可以运行基于诅咒的播放器。
我最近有了一个无线 PC 控制器,现在我喜欢在床上玩游戏。但是,我发现很难正确放置我的笔记本电脑以使其舒适,如果有一种方法可以通过我的 iPad 查看我的屏幕,并且延迟最小,那就太好了;这样我就可以简单地将笔记本电脑留在身后或桌子上,然后从 iPad 上观看比赛。
这可行/现实吗?
附加信息:
我正在使用以下命令来流式传输我通过 Netcat 收到的视频。
nc -l -p 5001 | mplayer -fps 31 -cache 1024 -
Run Code Online (Sandbox Code Playgroud)
(在 Windows CMD 上)
此命令打开 MPlayer 并播放实时流。
你能告诉我如何在直播时保存这个视频的副本吗?
谢谢你。
我正在尝试使用 nginx-rtmp-module(在本手册之后设置)将 RTMP 流从一个应用程序推送到另一个应用程序。我的配置(nginx.conf)的最小示例如下所示。
rtmp {
server {
listen 1935;
chunk_size 4096;
application live {
live on;
record off;
push rtmp://localhost:1935/source/$name;
}
application source {
live on;
record off;
}
}
}
Run Code Online (Sandbox Code Playgroud)
我的流媒体设置(使用 OBS)将广播指向example.com/liveStreamKey(nginx 中的 $name)插孔。现在,当尝试在 VLC 中观看流时,URLrtmp://example.com/live/jackbox可以工作,但rtmp://example.com/source/jackbox不能。我是否误解了push应该做什么,或者还有其他问题吗?
如果有人需要有关设置的更多信息,请随时询问。
我读过使用该-multi命令将允许您同时打开多个 OBS(开放广播软件)实例。我尝试通过命令行添加参数,但它只打开一个实例。有没有办法在我的 Mac 上做到这一点?
> open -a OBS.app --args -multi
Run Code Online (Sandbox Code Playgroud)