【问题标题】:mp4 video uploaded from android not play on ios从android上传的mp4视频不能在ios上播放
【发布时间】:2017-12-07 11:40:12
【问题描述】:

我们有一个应用程序允许用户将视频和图像上传到服务器。 如果我从 android 上传 mp4 视频,它不会在 ios 设备中播放。 这是我的代码。播放器状态显示 readytoplay 但它没有加载并且没有出现错误。 vieo 在 web 和 android 上运行良好。 这是视频网址:https://justgolive.net/assets/uploads/newrecordings/20919/19777983355a28e15326df6.mp4

  NSURL *streamURL = [NSURL URLWithString:_videoUrl];
    player = [AVPlayer playerWithURL:streamURL];

    AVPlayerLayer *playerLayer = [AVPlayerLayer playerLayerWithPlayer:player];
    playerLayer.frame =self.previewView.frame;
    playerLayer.videoGravity = AVLayerVideoGravityResizeAspectFill;
    //CGRectMake(0, 50, self.view.frame.size.width, self.view.frame.size.height/1.2);
    [self.previewView.layer addSublayer:playerLayer];

    // [self.playerContainer setUserInteractionEnabled:NO];   //to avoid touch events when activity is on
    [self.player addObserver:self forKeyPath:@"status" options:NSKeyValueObservingOptionInitial | NSKeyValueObservingOptionNew context:NULL];
    player.actionAtItemEnd = AVPlayerActionAtItemEndNone;

    [[NSNotificationCenter defaultCenter] addObserver:self
                                             selector:@selector(playerItemDidReachEnd:)
                                                 name:AVPlayerItemDidPlayToEndTimeNotification
                                               object:[player currentItem]];

【问题讨论】:

  • 你调用播放器的播放方法了吗?
  • 是的,iad添加[player play];

标签: objective-c avplayer


【解决方案1】:

我已尝试使用您的视频网址并使用以下代码:

头文件如下:

#import <UIKit/UIKit.h>

@interface ViewController : UIViewController

@property (weak, nonatomic) IBOutlet UIView *playerView;

@end

实现文件如下:

#import "ViewController.h"
#import <AVFoundation/AVFoundation.h>

@interface ViewController ()
@property (nonatomic) AVPlayer *player;
@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];




    NSURL *url = [NSURL URLWithString:@"https://justgolive.net/assets/uploads/newrecordings/20919/19777983355a28e15326df6.mp4"];

    AVPlayerItem *playerItem = [AVPlayerItem playerItemWithURL:url];

    self.player = [AVPlayer playerWithPlayerItem:playerItem];

    CALayer *superlayer = self.playerView.layer;
    self.player.volume = 20.0;

    AVPlayerLayer *playerLayer = [AVPlayerLayer playerLayerWithPlayer:self.player];
    [playerLayer setFrame:self.playerView.bounds];
    playerLayer.videoGravity = AVLayerVideoGravityResizeAspect;
    playerLayer.frame = self.playerView.layer.bounds;
    [superlayer addSublayer:playerLayer];
    [self.player seekToTime:kCMTimeZero];
    [self.player play];


}


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


@end

【讨论】:

  • 它不工作。可以分享项目文件吗?一天做了 100 次同样的事情,但它没有出现
  • 请在我编辑的答案中找到运行应用程序后的输出。是在Android中获取网址时的视频吗?
  • 它为我显示空白屏幕。这真的很奇怪。我正在模拟器上检查它
  • 显示黑屏是因为在头文件中声明了 AVPlayer 的实例并在你想要的方法中初始化它。AvPlayer 对象范围应该是整个类播放视频
  • 好的。但我无法在设备上测试它,因为我没有 ios 设备。对不起
猜你喜欢
  • 1970-01-01
  • 2011-09-28
  • 1970-01-01
  • 2012-01-06
  • 2017-01-14
  • 2023-04-01
  • 2017-10-24
  • 2014-08-27
  • 2016-05-09
相关资源
最近更新 更多