UIWebview не воспроизводит видео в формате mp4

Я попытался воспроизвести видео .mp4 с веб-сайта (с тегом видео HTML5) с помощью UIWebView. Устройство iPhone / iPad и симулятор показывают только черную рамку с перечеркнутой кнопкой воспроизведения. Если я просто зайду на этот сайт в версии Safari для Mac, в нее можно будет играть. В чем дело?

Это не локальный файл. HTML-код выглядит следующим образом:

    <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <meta charset="utf-8" />
        <link rel="stylesheet" type="text/css" href="../css/shared-culture.css" />
    </head>
    <body>
        <section class="base">
            <hgroup>
                <h1>creative commons</h1>
                <h2>a shared culture</h2>
            </hgroup>

                <p>To celebrate our 2008 fundraising campaign, Creative Commons has
                    released “A Shared Culture,” a short video by renowned filmmaker <a
                        href="http://en.wikipedia.org/wiki/Jesse_Dylan">Jesse Dylan</a>. Known for
                    helming a variety of films, music videos, and the Emmy Award-winning <a
                        href="http://my.barackobama.com/page/invite/yeswecanvideo">“Yes We Can”</a>
                    Barack Obama campaign video collaboration with rapper will.i.am, Dylan created
                    “A Shared Culture” to help spread the word about the Creative Commons mission. </p>
                <!-- height="240" width="360" -->
                <video id="video1" controls="controls">
                    <source src="../video/shared-culture.mp4" type="video/mp4"/>
                    <source src="../video/shared-culture.webm" type="video/webm"/>
                    <div class="errmsg">
                        <p>Your Reading System does not support (this) video.</p>
                        <pre><code>
&lt;video id="video1" controls="controls"&gt;                    
  &lt;source src="../video/shared-culture.mp4" type="video/mp4"/&gt;
  &lt;source src="../video/shared-culture.webm" type="video/webm"/&gt;    
&lt;/video&gt;
                        </code></pre>
                    </div>
                </video>
                <p>In the video, some of the leading thinkers behind Creative Commons
                    describe how the organization is helping “save the world from failed sharing”
                    through free tools that enable creators to easily make their work available to
                    the public for legal sharing and remix. Dylan puts the Creative Commons system
                    into action by punctuating the interview footage with dozens of photos that have
                    been offered to the public for use under CC licenses. Similarly, he used two
                    CC-licensed instrumental pieces by Nine Inch Nails as the video’s soundtrack
                    music. These tracks, “17 Ghosts II” and “21 Ghosts III,” come from the Nine Inch
                    Nails album Ghosts I-IV, which was released earlier this year under a Creative
                    Commons BY-NC-SA license. (See <a
                        href="http://creativecommons.org/videos/a-shared-culture">attribution</a>.)
                </p>

        </section>

    </body>
</html>

person iach    schedule 18.12.2012    source источник
comment
это видео из локального файла, можете ли вы опубликовать свой HTML код.   -  person arthankamal    schedule 18.12.2012
comment
Если вы хотите воспроизвести видео только на этом веб-сайте, воспользуйтесь VideoPlayerKit.   -  person Ben Lu    schedule 15.02.2013
comment
Только что взглянул на исходный код страницы http://my.barackobama.com . . ./video/shared-culture.mp4, и он объявляет тег встраивания фильма с атрибутом: type="application/x-shockwave-flash". Для Apple HLS вам потребуется H.264/AVC в контейнерах MPEG2.TS. Документация по HLS здесь: https://developer.apple.com/resources/http-streaming/   -  person Rich Tolley    schedule 21.02.2013
comment
@RichTolley Вы должны сделать это ответом, а не комментарием.   -  person Caleb    schedule 22.02.2013
comment
тебе надоело играть на реальном устройстве??   -  person Meera    schedule 22.02.2013


Ответы (7)


Он может быть не в формате, удобном для iPhone.

Перетащите файл mp4 в iMovie, затем нажмите Поделиться -> Экспортировать фильм и выберите один из форматов, совместимых с iPhone.

person Vinny Coyne    schedule 21.02.2013
comment
Мне пришлось перекодировать видео с помощью Adobe Media Encoder, чтобы оно заработало (iOS 8.3). Мое видео было довольно коротким (3 секунды). - person Chris; 13.06.2015

Одна из причин, по которой видео может не воспроизводиться в UIWebView, — это если веб-сервер, на котором размещен видеофайл, не поддерживает диапазоны байтов. UIWebView не загружает сразу весь файл .mp4; вместо этого он передает видео, запрашивая части файла. Большинство серверов в наши дни поддерживают диапазоны байтов, но если ваш не поддерживает или если вы отключили его по какой-либо причине, вы не сможете передавать видео на устройство iOS.

person Caleb    schedule 22.02.2013

Похоже на проблему с кодеком. Вы можете увидеть, какие кодеки использует файл, если откроете его в VLC на своем компьютере, перейдите в «Окно» -> «Информация о носителе» -> «Сведения о кодеке». Ответ здесь ссылается на Apple docs, где вы найдете поддерживаемые видео- и аудиокодеки:

https://developer.apple.com/library/ios/#documentation/mediaplayer/reference/MPMoviePlayerController_Class/Reference/Reference.html

https://developer.apple.com/library/ios/#documentation/AudioVideo/Conceptual/MultimediaPG/UsingAudio/UsingAudio.html

person Brendon    schedule 19.02.2013

Это может быть проблема с относительным путем ../, который вы используете. Попробуйте использовать полный абсолютный путь, начиная с http://.

person Luke    schedule 21.02.2013

Я искал то же самое в приложении C#.NET Core Ios Webview. Для меня установка этих переключателей в элементе управления WebView (после настройки html в веб-просмотре):

WebView.AllowsLinkPreview = true;
WebView.AllowsInlineMediaPlayback = true;
WebView.AllowsPictureInPictureMediaPlayback = true;

Работал на меня.

person ikwillem    schedule 28.09.2018

У меня также есть эта проблема, у меня есть 2 .mp4, но один можно использовать, а другой нет, я пытаюсь отформатировать тип файла .mp4 в .mp4 для IPad, и это работает, я думаю, вы должны попробовать.

person Masataga.Takashi    schedule 10.02.2014

Чтобы воспроизвести видео в формате mp4 на iPhone, программирование не очень сложно. Просто нам нужно сделать ОДИН дополнительный перетаскивание.

Пожалуйста, возьмите новый проект с одним видом. затем в файле ViewController.m просто скопируйте и вставьте этот код

    #import "ViewController.h"

   @interface ViewController ()

   @end

   @implementation ViewController
   @synthesize webView;
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.

CGRect screenRect = [[UIScreen mainScreen] bounds];

CGFloat screenWidth = screenRect.size.width;
CGFloat screenHeight = screenRect.size.height;

webView=[[UIWebView alloc]initWithFrame:CGRectMake(0,  0,screenWidth,screenHeight)];


NSURL *url = [[NSBundle mainBundle] URLForResource:@"testingHTML" withExtension:@"html"];
NSLog(@"%@",url);
[self.webView loadRequest:[NSURLRequest requestWithURL:url]];



// NSURL *nsurl=[NSURL URLWithString:url];
//NSURLRequest *nsrequest=[NSURLRequest requestWithURL:nsurl];
// [webView loadRequest:nsrequest];
[self.view addSubview:webView];





}

- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}

@end

Затем создайте файл HTML с именем testingHTML.html.

и скопируйте и вставьте следующий код в файл HTML

<!DOCTYPE html>
<html>
<head></head>

<body>
  <center> <video width="250" height="304" controls preload>
        <source src="video1.mp4" type="video/mp4">
            </video> </center>

   <p>Thanks to Md Kamrul Hasan [email protected]</p>

   </body>
</html>

Перетащите видео типа MP4 в два места:

Во-первых: перетащите видео с жесткого диска на вкладку проекта [Левая вкладка Xcode]. Во-вторых: из левой вкладки Xcode снова перетащите тот же самый видеофайл в проект ---> Фазы сборки ---> Копировать ресурсы пакета

Обычно в Ресурсах пакета копирования есть файлы проекта, но иногда они не содержат видеофайлов.

СЕЙЧАС ЗАПУСТИТЕ проект и НАСЛАЖДАЙТЕСЬ видео......!!

Удачи

person MK HASAN    schedule 23.08.2015
comment
Я пытаюсь воспроизвести два видео в двух веб-просмотрах, но воспроизвести только одно видео. - person Gami Nilesh; 12.01.2017