Play video Files(播放视频)

1。实现:

   导入: #import <MediaPlayer/MediaPlayer.h>

   MPMoviePlayerController:可进行更加全面的视频显示设置,它没使用delegate,而是靠notification system

   MPMoviePlayerViewController:可以放入navigationController,简单实现全屏显示,

                               或是用presentMoviePlayerViewControllerAnimated进行模式窗口全屏显示


e.g.

#import <MediaPlayer/MediaPlayer.h>

#import <AVFoundation/AVFoundation.h>     /* AVAudioSession */


@property (nonatomic, strong)MPMoviePlayerController *moviePlayer;

//监听结束时

- (void) videoHasFinishedPlaying:(NSNotification *)paramNotification{

    /* 找出视频停止播放的原因 */

    NSNumber *reason =  paramNotification.userInfo [MPMoviePlayerPlaybackDidFinishReasonUserInfoKey];   

    if (reason != nil){

        NSInteger reasonAsInteger = [reason integerValue];      

        switch (reasonAsInteger){

            case MPMovieFinishReasonPlaybackEnded:{

                NSLog(@"The movie ended normally");

                break;

            }

            case MPMovieFinishReasonPlaybackError:{

                NSLog(@"An error happened and the movie ended");

                break;

            }

            case MPMovieFinishReasonUserExited:{

                NSLog(@" The user exited the player");

                break;

            }

        }        

        NSLog(@"Finish Reason = %ld", (long)reasonAsInteger);

        [self stopPlayingVideo:nil];

    }   

}

//开始播放视频 

- (void) startPlayingVideo:(id)paramSender{ 

   if (self.moviePlayer != nil){

        [self stopPlayingVideo:nil];

    }

    NSBundle *mainBundle = [NSBundle mainBundle]; 

    NSURL *url = [mainBundle URLForResource:@"Sample"  withExtension:@"m4v"]; 

    self.moviePlayer = [[MPMoviePlayerController alloc] initWithContentURL:url];  

    if (self.moviePlayer != nil){

        /*监听:结束播放 */

        [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(videoHasFinishedPlaying:)

                                  name:MPMoviePlayerPlaybackDidFinishNotification object:self.moviePlayer];       

        NSLog(@"Successfully instantiated the movie player.");      

        /* 播放比例 */

        self.moviePlayer.scalingMode = MPMovieScalingModeAspectFit;     

       [self.view addSubview:self.moviePlayer.view]; //稍后需removeFromSuperview        

        [self.moviePlayer setFullscreen:YES   animated:NO];

        

        /* 当模拟器有声音,真机无声音时 需在启动播放器之前 加上以下这一句 */

       [[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback error:nil];


        [self.moviePlayer play];

    } else {

        NSLog(@"Failed to instantiate the movie player.");

    }

}

//停止播放

- (void) stopPlayingVideo:(id)paramSender { 

    if (self.moviePlayer != nil){

        //取消监听

        [[NSNotificationCenter defaultCenter] removeObserver:self 

          name:MPMoviePlayerPlaybackDidFinishNotification  object:self.moviePlayer];       

        [self.moviePlayer stop];      

        [self.moviePlayer.view removeFromSuperview];

    }  


postscript: 

  视频必须是H.264 file format



在PyQt中,可以使用QMediaPlayer和QVideoWidget类来实现视频播放功能。QMediaPlayer类是一个多媒体播放器,可以播放各种类型的音频和视频文件,而QVideoWidget类是一个显示视频的控件。下面是一个简单的例子,演示了如何使用QMediaPlayer和QVideoWidget类播放视频: ```python from PyQt5.QtCore import QUrl from PyQt5.QtWidgets import QApplication, QMainWindow, QFileDialog, QHBoxLayout, QWidget, QPushButton, QLabel, QVideoWidget from PyQt5.QtMultimedia import QMediaPlayer, QMediaContent class MyWindow(QMainWindow): def __init__(self): super().__init__() self.initUI() def initUI(self): self.setWindowTitle("Video Player Example") self.setGeometry(100, 100, 800, 600) # 创建一个播放器和一个视频控件,并将它们添加到布局中 self.player = QMediaPlayer(self) self.video = QVideoWidget(self) layout = QHBoxLayout() layout.addWidget(self.video) widget = QWidget() widget.setLayout(layout) self.setCentralWidget(widget) # 创建一个标签和一个按钮,并将它们添加到布局中 self.label = QLabel("No Video Selected", self) layout.addWidget(self.label) self.button = QPushButton("Open Video", self) layout.addWidget(self.button) self.button.clicked.connect(self.openVideo) def openVideo(self): # 打开一个文件对话框,选择视频文件 filename, _ = QFileDialog.getOpenFileName(self, "Open Video", ".", "Video Files (*.mp4 *.avi)") if filename: # 如果用户选择了一个视频文件,则播放视频 self.player.setMedia(QMediaContent(QUrl.fromLocalFile(filename))) self.player.setVideoOutput(self.video) self.player.play() self.label.setText("Playing " + filename) if __name__ == "__main__": app = QApplication([]) window = MyWindow() window.show() app.exec_() ``` 在上面的代码中,我们首先创建了一个播放器和一个视频控件,并将它们添加到布局中。然后创建了一个标签和一个按钮,将它们也添加到布局中。当用户点击按钮时,会打开一个文件对话框,选择视频文件后,播放器会播放选中的视频,并将视频显示在视频控件中。同时,标签会显示当前正在播放视频文件名。 注意,如果要播放视频,需要安装相应的多媒体插件。在Windows系统下,可以使用Qt的官方安装程序安装相应的插件。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值