質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
87.20%
VLC

VLCは、クロスプラットフォーム対応の高機能メディアプレイヤーです。多くの動画・音声コーデックを内蔵。そのため、各種コーデックをインストールせずに様々なメディアファイルを再生することができます。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

解決済

python での動画の再生について

kokawa2003
kokawa2003

総合スコア217

VLC

VLCは、クロスプラットフォーム対応の高機能メディアプレイヤーです。多くの動画・音声コーデックを内蔵。そのため、各種コーデックをインストールせずに様々なメディアファイルを再生することができます。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

1回答

0リアクション

0クリップ

7066閲覧

投稿2019/10/24 03:11

pythonでVLCをつかって動画を再生しようとしています。
まず

python

import vlc from time import sleep Instance = vlc.Instance('--fullscreen') player = Instance.media_player_new() Media = Instance.media_new('http://techslides.com/demos/sample-videos/small.mp4') #Media.get_mrl() player.set_media(Media) player.play() sleep(5) # Or however long you expect it to take to open vlc while player.is_playing(): sleep(1)

のコードを書いてみました。
これは動作しました。
そこで次にpython-vlcにあるサンプルを改造して

python

""" A simple example for VLC python bindings using PyQt5. Author: Saveliy Yusufov, Columbia University, sy2685@columbia.edu Date: 25 December 2018 """ import platform import os import sys from PyQt5 import QtWidgets, QtGui, QtCore import vlc class Player(QtWidgets.QMainWindow): """A simple Media Player using VLC and Qt """ def __init__(self, master=None): QtWidgets.QMainWindow.__init__(self, master) self.setWindowTitle("Media Player") # Create a basic vlc instance self.instance = vlc.Instance() self.media = None # Create an empty vlc media player self.mediaplayer = self.instance.media_player_new() self.create_ui() self.is_paused = False def create_ui(self): """Set up the user interface, signals & slots """ self.widget = QtWidgets.QWidget(self) self.setCentralWidget(self.widget) # In this widget, the video will be drawn if platform.system() == "Darwin": # for MacOS self.videoframe = QtWidgets.QMacCocoaViewContainer(0) else: self.videoframe = QtWidgets.QFrame() self.palette = self.videoframe.palette() self.palette.setColor(QtGui.QPalette.Window, QtGui.QColor(0, 0, 0)) self.videoframe.setPalette(self.palette) self.videoframe.setAutoFillBackground(True) self.positionslider = QtWidgets.QSlider(QtCore.Qt.Horizontal, self) self.positionslider.setToolTip("Position") self.positionslider.setMaximum(1000) self.positionslider.sliderMoved.connect(self.set_position) self.positionslider.sliderPressed.connect(self.set_position) self.hbuttonbox = QtWidgets.QHBoxLayout() self.playbutton = QtWidgets.QPushButton("Play") self.hbuttonbox.addWidget(self.playbutton) self.playbutton.clicked.connect(self.play_pause) self.stopbutton = QtWidgets.QPushButton("Stop") self.hbuttonbox.addWidget(self.stopbutton) self.stopbutton.clicked.connect(self.stop) self.hbuttonbox.addStretch(1) self.volumeslider = QtWidgets.QSlider(QtCore.Qt.Horizontal, self) self.volumeslider.setMaximum(100) self.volumeslider.setValue(self.mediaplayer.audio_get_volume()) self.volumeslider.setToolTip("Volume") self.hbuttonbox.addWidget(self.volumeslider) self.volumeslider.valueChanged.connect(self.set_volume) self.vboxlayout = QtWidgets.QVBoxLayout() self.vboxlayout.addWidget(self.videoframe) self.vboxlayout.addWidget(self.positionslider) self.vboxlayout.addLayout(self.hbuttonbox) self.widget.setLayout(self.vboxlayout) menu_bar = self.menuBar() # File menu file_menu = menu_bar.addMenu("File") # Add actions to file menu open_action = QtWidgets.QAction("Load Video", self) close_action = QtWidgets.QAction("Close App", self) file_menu.addAction(open_action) file_menu.addAction(close_action) open_action.triggered.connect(self.open_file) close_action.triggered.connect(sys.exit) self.timer = QtCore.QTimer(self) self.timer.setInterval(100) self.timer.timeout.connect(self.update_ui) def play_pause(self): """Toggle play/pause status """ if self.mediaplayer.is_playing(): self.mediaplayer.pause() self.playbutton.setText("Play") self.is_paused = True self.timer.stop() else: if self.mediaplayer.play() == -1: self.open_file() return self.mediaplayer.play() self.playbutton.setText("Pause") self.timer.start() self.is_paused = False def stop(self): """Stop player """ self.mediaplayer.stop() self.playbutton.setText("Play") def open_file(self): """Open a media file in a MediaPlayer """ # getOpenFileName returns a tuple, so use only the actual file name self.media = self.instance.media_new("http://techslides.com/demos/sample-videos/small.mp4") # Put the media in the media player self.mediaplayer.set_media(self.media) # Parse the metadata of the file self.media.parse() # Set the title of the track as window title self.setWindowTitle(self.media.get_meta(0)) # The media player has to be 'connected' to the QFrame (otherwise the # video would be displayed in it's own window). This is platform # specific, so we must give the ID of the QFrame (or similar object) to # vlc. Different platforms have different functions for this if platform.system() == "Linux": # for Linux using the X Server self.mediaplayer.set_xwindow(int(self.videoframe.winId())) elif platform.system() == "Windows": # for Windows self.mediaplayer.set_hwnd(int(self.videoframe.winId())) elif platform.system() == "Darwin": # for MacOS self.mediaplayer.set_nsobject(int(self.videoframe.winId())) self.play_pause() def set_volume(self, volume): """Set the volume """ self.mediaplayer.audio_set_volume(volume) def set_position(self): """Set the movie position according to the position slider. """ # The vlc MediaPlayer needs a float value between 0 and 1, Qt uses # integer variables, so you need a factor; the higher the factor, the # more precise are the results (1000 should suffice). # Set the media position to where the slider was dragged self.timer.stop() pos = self.positionslider.value() self.mediaplayer.set_position(pos / 1000.0) self.timer.start() def update_ui(self): """Updates the user interface""" # Set the slider's position to its corresponding media position # Note that the setValue function only takes values of type int, # so we must first convert the corresponding media position. media_pos = int(self.mediaplayer.get_position() * 1000) self.positionslider.setValue(media_pos) # No need to call this function if nothing is played if not self.mediaplayer.is_playing(): self.timer.stop() # After the video finished, the play button stills shows "Pause", # which is not the desired behavior of a media player. # This fixes that "bug". if not self.is_paused: self.stop() def main(): """Entry point for our simple vlc player """ app = QtWidgets.QApplication(sys.argv) player = Player() player.show() player.resize(640, 480) sys.exit(app.exec_()) if __name__ == "__main__": main()

のコードを書いてみたがこれは動作しません。
エラーは
[00000000032f5a10] access stream error: HTTP connection failure
[00000000032f5a10] http stream error: cannot connect to techslides.com:80
です。
なぜHTTPが下のコードだけだめなのかさっぱり分かりません。
HTTPアクセス禁止になっているところがわからない。
なお
self.instance.media_new("http://techslides.com/demos/sample-videos/small.mp4")
をローカルのファイルに変えると動作するのはわかっています。
OSはWINDOWSです。

以下のような質問にはリアクションをつけましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

リアクションが多い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

下記のような質問は推奨されていません。

  • 間違っている
  • 質問になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

適切な質問に修正を依頼しましょう。

まだ回答がついていません

会員登録して回答してみよう

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
87.20%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

VLC

VLCは、クロスプラットフォーム対応の高機能メディアプレイヤーです。多くの動画・音声コーデックを内蔵。そのため、各種コーデックをインストールせずに様々なメディアファイルを再生することができます。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。