【问题标题】:LG TV UPnP/DLNA error illegal mime-typeLG 电视 UPnP/DLNA 错误非法 mime 类型
【发布时间】:2018-08-07 13:44:27
【问题描述】:

我正在尝试编写一个在我的 LG 智能电视上播放视频文件的 python 脚本。到目前为止,我已经设置了可以流式传输音频和视频的minidlna 服务器。它适用于同一局域网上的其他设备。然后我有以下代码可以在我的电视上播放一些东西:

#import requests
#import sys


def upload_file(location, filename, controlURL):
    headers = {
        'Content-Type': 'text/xml; charset=utf-8',
        'SOAPAction': '"urn:schemas-upnp-org:service:AVTransport:1#SetAVTransportURI"',
    }
    #<DIDL-Lite xmlns="urn:schemas-upnp-org:metadata-1-0/DIDL-Lite/" xmlns:upnp="urn:schemas-upnp-org:metadata-1-0/upnp/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:sec="http://www.sec.co.kr/"><item id="0" parentID="-1" restricted="0"><dc:title>Video</dc:title><dc:creator>Anonymous</dc:creator><upnp:class>object.item.videoItem</upnp:class><res protocolInfo="http-get:*:video/mp4:*" sec:URIType="public">"http://' + location + '/' + filename + '"</res></item></DIDL-Lite>
    data = '<?xml version "1.0" encoding="utf-8"?><s:Envelope s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"><s:Body><u:SetAVTransportURI xmlns:u="urn:schemas-upnp-org:service:AVTransport:1"><InstanceID>0</InstanceID><CurrentURI><![CDATA[http://' + location + '/' + filename + ']]></CurrentURI><CurrentURIMetaData></CurrentURIMetaData></u:SetAVTransportURI></s:Body></s:Envelope>'
    print "[*] Sending request"

    try:
        response = requests.post(controlURL, headers=headers, data=data, timeout=2)
    except Exception as ex:
        print "[x] Request failed!"
        sys.exit(ex)
    print response.status_code
    print response.text


upload_file("192.168.22.217:8200", "MediaItems/22.mp4", "http://192.168.22.198:1498/AVTransport/8167b8fc-bf78-da40-9070-5663d70a8a40/control.xml")

无论有没有请求中的元数据,它都不起作用。我可以访问192.168.22.217:8200/MediaItems/22.mp4,它可以正常播放视频,并且 controlURL 是有效的(实际上我得到的有点不同,但这超出了这个问题的范围)。

电视成功联系了 minidlna 服务器(我可以从以 HTTP 200 响应并开始提供文件的日志中看到它),但电视不播放任何内容并以 HTTP 500 响应:

<?xml version="1.0" encoding="UTF-8"?>
<s:Envelope s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
    <s:Body>
        <s:Fault>
            <faultcode>s:Client</faultcode> 
            <faultstring>UPnPError</faultstring>
            <detail>
                <UPnPError xmlns="urn:schemas-upnp-org:control-1-0"> 
                    <errorCode>714</errorCode>
                    <errorDescription>Illegal MIME-type</errorDescription> 
                </UPnPError>
            </detail>
        </s:Fault>
    </s:Body>
</s:Envelope>

为什么会这样? video/mp4 是有效的 mime 类型。我还尝试了其他几种 mime 类型和文件格式,每次都得到相同的结果。

电视:LG 43UJ635V

笔记本电脑:MacBook Pro

minidlnad 版本:minidlnad -V -&gt; Version 1.1.5

【问题讨论】:

    标签: python upnp television lg dlna


    【解决方案1】:

    我也在这个问题上苦苦挣扎,但终于找到了适用于 WebOS LG TV 的解决方案。

    我已经尝试了很多 upnp/dlna 实施,但没有一个与我全新的 WebOS LG 电视配合使用。

    所以我安装了 LG 软件并使用 Wireshark 检查了数据包,更具体地说,是 SetAVTransport 数据包。

    根据我的发现,我采用了一个用 Python 编写的名为 nano-dlna 的现有基本 upnp/dlna 流式实用程序,将其分叉并调整有效负载以与我的 LG 电视配合使用。你可以找到我的 fork here,以及工作负载 here

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-02-18
      • 2018-07-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-09-24
      • 2016-09-26
      • 2016-12-21
      相关资源
      最近更新 更多