我们正在从主礼堂捕获音频(来自混音器)和视频(来自摄像机)并将其传递到建筑物内的单独房间。
我们过去常常通过手动音频/视频电缆和电线(例如 RCA、CoAx,而不是以太网)来完成此操作。我们想“升级”系统并通过 Wi-Fi 无线广播流。
在我们当前的设置中(Wirecast在Wireless-N 网络上的A10上运行),我们遇到了延迟问题。我们的流在客户端(笔记本电脑/iPad/Android)上从一分钟延迟到五分钟。这些类型的延迟问题是由盒子设置引起的,而不是真正使用 LAN 还是 WLAN。
这在以前的有线连接中不是问题。由于无线网络是本地的,我们认为应该可以实现不到一秒的延迟。
就这样了。有没有人对设置既低延迟又对程序中的客户端流用户友好?任何建议将不胜感激。
我们已经尝试过 VLC 来广播直播流,但是存在延迟问题。在没有编码的本地计算机“流”上,VLC 已经有大约一秒钟的延迟。添加编码和本地网络,则情况看起来更加惨淡。我们希望实现至少 1 秒的延迟。
(我们目前在 Windows 7 上进行设置,但如果可以的话,最好在专用的 Linux 机器上进行设置。)
在此线程中,VLC 开发人员表示 VLC 无法播放部分下载的 mp4 文件,因为信息存储在文件末尾。但最近当我测试相同的,在 Chrome 中添加一个 mp4 任务并将部分 .crdownload 传递给 VLC 时,它起作用了。VLC 播放 mp4 没有任何故障。我没有让下载完成并在中间停止播放器以节省带宽,但我相信它会在 Chrome 仍在下载时播放整个媒体。我还能够通过视频进行搜索,这是一些未完成的视频格式所不允许的。怎么办?我正在做一个媒体流媒体作为一个宠物项目,真的想知道我是否可以启动下载并在下载一定数量的字节后通过命令行将媒体传递给 vlc。
除了定制的解决方案之外,我似乎找不到能够通过 UPnP 流式传输 FLAC 音频的 NAS 解决方案。流媒体似乎仅限于 MP3 或其他流行格式。是否存在可以流式传输 FLAC,或者可能转码为 MP3 和流式传输的内容?
我正在尝试使用网络摄像头进行一些流式传输,但到目前为止,结果并不好:我以 320x240 进行流式传输的所有内容看起来都不错,但一旦我选择更高分辨率,图像质量就会变得很糟糕,CPU 使用率也会下降穿过屋顶。
我使用的是 Logitech C525 摄像头,该摄像头声称是高清的,原始分辨率为 1280x720)。
如果1280x720是原生分辨率,我想知道为什么质量这么差?
我使用 VLC 进行流式传输,并使用以下 vlm 配置文件:
new camNumber2 broadcast enabled
setup camNumber2 input v4l2:///dev/video2:width:320:heigth:240
setup camNumber2 output #transcode{vcodec=mpeg4,acodec=none,vb=1000}:standard{access=http,mux=ogg,dst=0.0.0.0:8080}
control camNumber2 play
Run Code Online (Sandbox Code Playgroud)
就像我说的,一旦我把分辨率提高到更高,质量就会下降到一团糟。
我怀疑我的视频输入设置可能有问题,VLC 只是尝试将图像放大到我请求的分辨率,而不是按照请求的分辨率抓取图像。
这个问题在这里、这里和这里之前已经回答过。所有答案都说,当您将 Android 手机与 Windows PC 配对并在手机上点击播放时,它基本上可以正常工作。我已经尝试过了,但它对我不起作用。
当我在手机上播放音乐时,内部扬声器确实是静音的,就像在播放蓝牙扬声器一样。但 PC 也保持沉默。我不知道如何在 Windows 中验证蓝牙手机是否用作音频输入设备。它不在“录音设备”列表中,音量混合器也不显示任何蓝牙音频源。我的手机确实显示为“Bluetooth Audo Renderer (Xperia Acro S)”的播放设备。但这与我想要的完全相反(也不起作用,但这不是这里的问题)
对其他问题的三个答案是错误的吗?难道我做错了什么?或者有什么东西坏了?我感谢任何帮助调试这个问题,我很乐意提供任何需要的信息。
细节:
手机音乐 -> 2. Android -> 3. 蓝牙 -> 4. Windows -> 5. PC 扬声器
我正在尝试拍摄 5 分钟的视频文件并生成单文件HTTP Live Stream 播放列表和.ts文件。从 iOS 5 开始,播放列表文件格式可以支持字节范围而不是单独的文件,这是我的用例的一个很好的目标。但是,当我运行我的ffmpeg命令时,结果.m3u8播放列表中的第一个条目不会从(甚至接近)字节 0 开始。
例如:
ffmpeg -i input -hls_flags single_file out.m3u8
Run Code Online (Sandbox Code Playgroud)
产生这样的播放列表:
#EXTM3U
#EXT-X-VERSION:4
#EXT-X-TARGETDURATION:11
#EXT-X-MEDIA-SEQUENCE:63
#EXTINF:1.376367,
#EXT-X-BYTERANGE:568324@63107840
out.ts
#EXTINF:1.334667,
#EXT-X-BYTERANGE:235564@63676164
out.ts
#EXTINF:1.918589,
#EXT-X-BYTERANGE:343288@63911728
out.ts
#EXTINF:10.427078,
#EXT-X-BYTERANGE:3311996@64255016
out.ts
#EXTINF:5.672333,
#EXT-X-BYTERANGE:52828@67567012
out.ts
#EXT-X-ENDLIST
Run Code Online (Sandbox Code Playgroud)
请注意,第一个EXT-X-BYTERANGE条目不是@0——它在 68 MB.ts文件中大约有 63 MB 。实际上,当将播放列表加载到<video>标签中并使用 Safari 打开 HTML 时,视频播放从输入视频的结尾开始大约 20 秒,而不是从 0 开始,并且无法更早地进行清理。
为什么ffmpeg制作了不包含所有视频的播放列表?当我观看.ts播放列表旁边生成的文件时,所有视频内容都存在。
我在 Linux 下最近的ffmpeg …
我正在尝试使用 RTP 在 2 台主机之间流式传输视频。我以前使用 VLC 使用以下 2 个命令解决了这个问题
cvlc video_file.mp4 --sout "#transcode{vcodec=h264, acodec=mpga, ab=128, channels=2, samplerate=44100}: duplicate{dst=rtp{dst=10.X.X.X, port=5004, mux=ts}}" --run-time 40 vlc://quit
cvlc rtp://@:5004 --sout "#transcode{vcodec=h264, acodec=mpga, ab=128, channels=2, samplerate=44100}: std{access=file, mux=mp4, dst=downloaded.mp4}" --run-time 40 vlc://quit
现在我想用 FFMPEG 实现相同的目标。等效的命令是什么?
ffmpeg -re -i video_file.mp4 -vcodec libx264 -an -f rtp rtp://10.X.X.X:5004 -vn -acodec libtwolame -f rtp rtp://10.X.X.X:5005
ffmpeg -i rtp://10.X.X.X:5004 -vcodec libx264 -an -i rtp://10.5.19.244:5005 -acodec libtwolame -vn -t 00:00:35 downloaded.mp4
但是,我无法以这种方式记录接收到的流。
我希望能够使用 mpv --ytdl播放和保存视频。我怎么会那样做?特别重要的是缓冲区也得到了保存。
基本上,我想从 youtube 播放视频,然后退出 mpv 并且仍然能够继续观看视频直到它被加载 - 这就是为什么我还需要将缓冲区保存到文件中。
我已经尝试使用 youtube-dl -o - 将视频流式传输到标准输出,然后使用 mpv 进行管道传输,即
youtube-dl -o - | mpv -
Run Code Online (Sandbox Code Playgroud)
(我的想法是我可以使用 tee 来拆分流并将其简单地写入文件)-但是,这有一个问题,即我无法使用 mpv 来浏览视频-它只是一个来自 stdin 之后的固定流全部。我的另一个想法是使用 mpv 的 -o 选项来指定输出文件。但是,这不会保存内部缓冲区。
我有一个使用 ADSL 技术的电视服务。这意味着我的电视基本上是通过互联网流式传输所有内容。
今天有人告诉我,这至少需要 1MB/s 的上行链路才能工作。那是对的吗?
请注意,我不是在谈论带宽下降,这会高得多。这是up,换句话说,我的电视提供商的机顶盒需要至少 1MB/s 的上传容量才能以 2-3MB/s 的速度向下传输(我猜是这样)。
它在发送什么?确认?
所以我已经能够成功地将 RTP 视频流从我的服务器发送到 LAN 上另一个系统上的客户端并使用 ffplay 播放它。我现在想使用 RTSP 在同一网络上发送视频,以便客户端可以接收视频并可以有其他选项,例如暂停视频等。 谁能给我一个通用指南或指向我可以帮助我的资源完成我的任务?
更新:
我试过这些命令:
ffmpeg -re -i input -f rtsp -rtsp_transport tcp rtsp://localhost:8888/live.sdp
ffplay -rtsp_flags listen rtsp://localhost:8888/live.sdp
Run Code Online (Sandbox Code Playgroud)
它确实开始实时流式传输视频,但我实际上看不到任何控制媒体流的选项,例如播放、录制等!
注意:我目前用于 RTSP 的 .sdp 文件与我用于 RTP 流的文件相同。