菜鸟教程小白 发表于 2022-12-12 23:24:29

ios - Chromecast 无法播放已保存的视频


                                            <p><p>好的,我正在为 IOS 上的 chrome cast 开发一个应用程序。我的应用程序将执行的功能之一是从您的​​设备播放本地视频。为此,我使用了在 github 上找到的名为 <a href="https://github.com/robbiehanson/CocoaHTTPServer" rel="noreferrer noopener nofollow">CocoaHttpServer.</a> 的外部源。这个 Http 服务器允许我将文件上传到 localhost 服务。为此,我使用以下代码启动我的服务器:</p>

<pre><code>- (void)viewDidLoad
{
    ;
    // Do any additional setup after loading the view from its nib.
      // Configure our logging framework.
    // To keep things simple and fast, we&#39;re just going to log to the Xcode console.
    ];

    // Create server using our custom MyHTTPServer class
    httpServer = [ init];


    // Tell the server to broadcast its presence via Bonjour.
    // This allows browsers such as Safari to automatically discover our service.
    ;

    // Normally there&#39;s no need to run our server on any specific port.
    // Technologies like Bonjour allow clients to dynamically discover the server&#39;s port at runtime.
    // However, for easy testing you may want force a certain port so you can just hit the refresh button.
    // ;

    // Serve files from our embedded Web folder
    NSString *webPath = [[ resourcePath] stringByAppendingPathComponent:@&#34;Web&#34;];
    DDLogInfo(@&#34;Setting document root: %@&#34;, webPath);

    ;
    ;

    gblvb = ;

    self.mediaControlChannel = [ init];
    self.mediaControlChannel.delegate = self;
    ;
    ;
}
</code></pre>

<p>然后此代码设置我的 http 服务器并将其指向导入到我的主包中的 web 文件夹并包含我从谷歌下载用于测试目的的测试视频(谷歌在他们的流式传输示例中使用此视频通过网络转换的 Chrome )。我从 <a href="http://commondatastorage.googleapis.com/gtv-videos-bucket/sample/BigBuckBunny.mp4" rel="noreferrer noopener nofollow">http://commondatastorage.googleapis.com/gtv-videos-bucket/sample/BigBuckBunny.mp4</a> 获得了这个视频.除此之外,代码还设置了一个新的媒体 channel ,准备好让 chrome cast 转换到...</p>

<p>接下来我有我的 void 函数 <code>startServer</code> 真正建立连接并发布服务器...</p>

<pre><code>- (void)startServer
{
    // Start the server (and check for problems)

    NSError *error;
    if()
    {
      DDLogInfo(@&#34;Started HTTP Server on port %hu&#34;, );

    }
    else
    {
      DDLogError(@&#34;Error starting HTTP Server: %@&#34;, error);
    }
}
</code></pre>

<p>最后,下面的代码将路径设置为与 localhost url 相同,并将视频转换到 chrome cast:</p>

<pre><code>-(void)viewDidAppear:(BOOL)animated
{
path = , @&#34;/&#34;, @&#34;BigBuckBunny.mp4&#34;];


    // Do any additional setup after loading the view from its nib.

    gblvb = [ GlobalVariables singleobj];


    deviceScanner = [ init];


    ;
    ;
    NSString *image;
    NSString *type;
    GCKMediaMetadata *metadata = [ init];


      image = @&#34;Folder-Video-icon.png&#34;;

      [metadata setString:@&#34;The MP4 file format defined some extensions over the ISO Base Media File Format to support MPEG-4 visual/audio codecs and various MPEG-4 Systems features such as object descriptors and scene descriptions.&#34;
                     forKey:kGCKMetadataKeySubtitle];
      type = @&#34;video/mp4&#34;;
forKey:kGCKMetadataKeyTitle];



   
                        initWithURL:[ initWithString:image]
                        width:480
                        height:360]];

    //define Media information
    sleep(2);
    GCKMediaInformation *mediaInformation =
    [ initWithContentID:path
                                        streamType:GCKMediaStreamTypeNone
                                       contentType:type
                                          metadata:metadata
                                    streamDuration:0
                                        customData:nil];

    //cast video
    ;
    NSLog(@&#34;Full Path : %@&#34;, path);
}
</code></pre>

<p>现在我的问题是,当此 http 服务器已发布并准备转换时,即使当我实际导航到 safari 上的路径时,chrome cast 也不会播放它,视频显示完美。除此之外,我知道 chrome cast 可以正常播放,因为它可以播放 google 的在线示例视频。</p>

<p><strong>编辑</strong>
这是我的调试日志,来自 chrome cast:</p>

<pre><code>Failed to load resource: the server responded with a status of 404 (Not Found) https://www.gstatic.com/eureka/player/undefined
Opening the WebSocket on ws://localhost:8008/v2/ipc
cast_receiver.js:18
WebSocket opened on ws://localhost:8008/v2/ipc
cast_receiver.js:18
GET https://www.gstatic.com/eureka/player/Folder-Video-icon.png 404 (Not Found) player.js:31
The page at &#39;https://www.gstatic.com/eureka/player/player.html?skin&#39; was loaded over HTTPS, but displayed insecure content from &#39;http://localhost:49598/BigBuckBunny.mp4&#39;: this content should also be loaded over HTTPS.
cast_receiver.js:69
GET http://localhost:49598/BigBuckBunny.mp4cast_receiver.js:69
[ 21.834s] Load metadata error
cast_receiver.js:18
GET https://www.gstatic.com/eureka/player/Folder-Video-icon.png 404 (Not Found)
</code></pre>

<p>任何帮助将不胜感激。</p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>我解决了这个问题,而不是在模拟器上使用 localhost 进行测试,而是编写了一个函数来获取当前设备的 IP 地址以及 localhost 部分在这一行中的位置 <code>path = , @"/", @"BigBuckBunny.mp4"];</code>替换成设备ip地址。</p></p>
                                   
                                                <p style="font-size: 20px;">关于ios - Chromecast 无法播放已保存的视频,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/24456574/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/24456574/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - Chromecast 无法播放已保存的视频