Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从RPi到电视的MiniDLNA(docker)流被卡住/使用.mkv文件进行非常慢的缓冲_Docker_Encoding_Raspberry Pi_Samba_Dlna - Fatal编程技术网

从RPi到电视的MiniDLNA(docker)流被卡住/使用.mkv文件进行非常慢的缓冲

从RPi到电视的MiniDLNA(docker)流被卡住/使用.mkv文件进行非常慢的缓冲,docker,encoding,raspberry-pi,samba,dlna,Docker,Encoding,Raspberry Pi,Samba,Dlna,设置: 我有一个RPI4,带有miniDLNA(ReadyMedia)和samba,每个都在docker中运行,一个SSD通过USB3连接到RPi,一个电视通过WiFi连接。所有设备都在我的区域设置网络中。SSD的格式为ext4。我可以通过samba访问SSD上的文件夹,该文件夹也可以用作miniDLNA卷 我通过LAN和WiFi将速度大约为90MB/s的数据传输到我的samba共享。但问题是,当通过miniDLNA传输视频时,我注意到缓冲时间很长,通常在观看几秒钟后就会卡住(无论是在电视[Wi

设置: 我有一个RPI4,带有miniDLNA(ReadyMedia)和samba,每个都在docker中运行,一个SSD通过USB3连接到RPi,一个电视通过WiFi连接。所有设备都在我的区域设置网络中。SSD的格式为ext4。我可以通过samba访问SSD上的文件夹,该文件夹也可以用作miniDLNA卷

我通过LAN和WiFi将速度大约为90MB/s的数据传输到我的samba共享。但问题是,当通过miniDLNA传输视频时,我注意到缓冲时间很长,通常在观看几秒钟后就会卡住(无论是在电视[WiFi]还是在Win10机器[LAN]上)。直到现在,我才注意到.mp4文件的这种行为,只有.mkv文件。视频文件为1080p

我使用的两个docker文件分别是from和

我不认为这是docker compose文件的问题,而不是编码问题,但这是我的docker compose文件:

version: '3.4'

services:
 samba:
   image: dperson/samba
   environment:
     TZ: 'Europe/Berlin'
     USER: 'username;password'
     SHARE: 'share;/mnt/transit;yes;no;yes'
   ports:
     - "137:137/udp"
     - "138:138/udp"
     - "139:139/tcp"
     - "445:445/tcp"
   restart: unless-stopped
   volumes:
     - "/mnt/transit:/mnt/transit"
   command: '-p'
   
 dlna:
   image: ypopovych/readymedia
   network_mode: "host"
   environment:
     FRIENDLY_NAME: "DLNA4B"
     VIDEO_DIR1: "/media"
   volumes:
     - "/mnt/transit/videos:/media"
     - "readymediacache:/cache"
   ports:
     - 8200:8200
   restart: unless-stopped
   depends_on:
     - "samba"

volumes:
 readymediacache:
有没有人有过类似的行为

编辑:
经过进一步测试,我可以排除miniDLNA和samba。我在我的RPi上的SD卡上创建了一个共享,并从那里播放了一段mkv视频。根本没有缓冲问题。当我从通过USB3连接的SSD播放时,每隔几秒钟就会出现缓冲问题。当这种情况发生时,SSD在几秒钟内根本没有响应。这很奇怪,因为从SSD通过网络以恒定的90-100MB/s进行读写操作。

Hey@landmann123我在这里遇到了完全相同的问题!我将添加一些细节,以再次检查您的场景

我正在使用
raspbian-nspawn-64
通过x64终端
ds64 shell运行docker。你是怎么管理你的码头工人的?这是我的docker信息:

pi@debian-buster-64:~$sudo docker--版本
Docker版本19.03.13,内部版本4484c46
pi@debian-buster-64:~$sudo docker compose--版本
docker compose版本1.21.0,构建未知
你查过minidlna日志了吗?我以前尝试过几个图像-其中一个我发现了一个错误
upnphttp.c:1272:debug:sendfile error::error no.32[breaked pipe]
,这似乎是一些断开的连接,尽管它们的服务器上没有文档化的解决方案

我使用一些avi文件和这个示例进行了测试。我也遇到了同样的问题,唯一的区别是mp4在其他10秒中比buffer播放0.5秒,而.avi(大约180MB)需要1到2分钟的时间来缓冲并播放0.5秒,然后两者都随机卡住或再播放0.5秒

我怀疑这可能是一个网络问题(可能只是与docker有关),尽管我有一个fibre 100/20,我曾经在另一个raspbian图像中使用minidlna,效果非常好,所以我需要澄清一点这个理论。顺便说一下,如果您使用
网络模式:主机
将忽略
端口

编辑:我尝试了
ypopovych/readymedia
图像,但遇到了相同的问题,比较了图像,我注意到这张图像只是警告日志级别,可能在您的案例中隐藏了一些调试/提示。minidlna版本与我的图像相同,它使用的是
tini
,我删除它只是为了再次检查,尽管它很少会改变某些东西

所有这些变化都导致了相同的结果。另外,您可以在minidlna命令上启用调试和详细模式,并使用相应的参数
-d
-v
。请在下面的一个日志中找到我正在使用的参数和minidlna版本:

++ /usr/sbin/minidlnad -d -v -P /minidlna/minidlna.pid -S
minidlna.c:1048: warn: Starting MiniDLNA version 1.2.1.
Server: 5.4.27-0-lts DLNADOC/1.50 UPnP/1.0 MiniDLNA/1.2.1
使用
ypopovych/readymedia
我尝试使用/不使用指定卷进行缓存,但没有发生任何变化。其中一次测试中,我暂停了视频几分钟(只是为了检查它是否能缓冲所有内容,谁知道呢),但出现了相同的错误。我怀疑它可能是在转移之前的一些渲染内容,VLC在被卡住时显示了一个金条,因为它在等待一些东西,比如:

p.S.:我尝试使用windows机器和iPad进行的所有测试-都是VLC。我安装了一个SD路径和一个外部HD,都有相同的问题。虽然只使用SMB,但我能够在两种设备和两种路径上播放。啊,我还没有试着在本地玩《覆盆子》,看看它是否在网络上,这将是另一件事来尝试

更新:在DLNA上运行Raspberry的VLC可以在两个图像和两条路径上工作!这又把我带到了网络上,顺便说一句,断管错误出现在日志中,即使它工作起来很有魅力:

minidlna.c:1309: debug: HTTP connection from 192.168.1.11:46616
upnphttp.c:259: debug: Range Start-End: 10117400 - -1
clients.c:331: debug: Client found in cache. [Generic UPnP 1.0/entry 0]
upnphttp.c:889: debug: HTTP REQUEST: GET /MediaItems/9074.avi HTTP/1.1
Host: 192.168.1.11:8200

Accept: */*
Accept-Language: en_US
User-Agent: VLC/3.0.11 LibVLC/3.0.11
Range: bytes=10117400-
upnphttp.c:1937: info: Serving DetailID: 9074 [/media/animes/bleach 2004/S01E030.avi]
upnphttp.c:1281: debug: sendfile error :: error no. 32 [Broken pipe]

嘿@landmann123我这里有完全相同的问题!我将添加一些细节,以再次检查您的场景

我正在使用
raspbian-nspawn-64
通过x64终端
ds64 shell运行docker。你是怎么管理你的码头工人的?这是我的docker信息:

pi@debian-buster-64:~$sudo docker--版本
Docker版本19.03.13,内部版本4484c46
pi@debian-buster-64:~$sudo docker compose--版本
docker compose版本1.21.0,构建未知
你查过minidlna日志了吗?我以前尝试过几个图像-其中一个我发现了一个错误
upnphttp.c:1272:debug:sendfile error::error no.32[breaked pipe]
,这似乎是一些断开的连接,尽管它们的服务器上没有文档化的解决方案

我使用一些avi文件和这个示例进行了测试。我也遇到了同样的问题,唯一的区别是mp4在其他10秒中比buffer播放0.5秒,而.avi(大约180MB)需要1到2分钟的时间来缓冲并播放0.5秒,然后两者都随机卡住或再播放0.5秒

我怀疑这可能是一个网络问题(可能只是与docker有关),尽管我有一个fibre 100/20,我曾经在另一个raspbian图像中使用minidlna,效果非常好,所以我需要澄清一点这个理论。顺便说一下,如果您使用
网络模式:主机
端口