You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter中如何通过视频路径播放本地视频?

通过本地视频路径播放视频的实现方案

下面分不同场景给出具体实现方式:

Android 原生实现(Java/Kotlin)

可以直接用系统自带的VideoView快速实现,也可以用更强大的ExoPlayer,这里先给出VideoView的简单示例:

Java 代码

// 布局中需先添加VideoView组件,id设为video_view
VideoView videoView = findViewById(R.id.video_view);
String videoPath = "storage/emulated/0/vedio1.mp4";

// 设置视频路径并启动播放
videoView.setVideoPath(videoPath);
videoView.start();

// 可选:添加播放控制器
MediaController mediaController = new MediaController(this);
mediaController.setAnchorView(videoView);
videoView.setMediaController(mediaController);

Kotlin 代码

val videoView = findViewById<VideoView>(R.id.video_view)
val videoPath = "storage/emulated/0/vedio1.mp4"

videoView.setVideoPath(videoPath)
val mediaController = MediaController(this)
mediaController.setAnchorView(videoView)
videoView.setMediaController(mediaController)
videoView.start()

注意:需要在AndroidManifest.xml中添加读取外部存储权限,Android 10及以上版本还需处理动态权限申请或者使用MediaStore访问文件:

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />

Python 实现

用OpenCV轻量播放

适合快速测试或处理视频帧的场景:

import cv2

video_path = "storage/emulated/0/vedio1.mp4"
cap = cv2.VideoCapture(video_path)

if not cap.isOpened():
    print("无法打开目标视频文件")
else:
    while cap.isOpened():
        ret, frame = cap.read()
        if not ret:
            break
        cv2.imshow('Video Player', frame)
        # 按下q键退出播放
        if cv2.waitKey(25) & 0xFF == ord('q'):
            break
    cap.release()
    cv2.destroyAllWindows()

用PyQt5/PyQt6实现带界面的播放器

适合做桌面应用场景:

from PyQt5.QtWidgets import QApplication, QWidget, QVBoxLayout, QPushButton
from PyQt5.QtMultimedia import QMediaPlayer, QMediaContent
from PyQt5.QtMultimediaWidgets import QVideoWidget
from PyQt5.QtCore import QUrl
import sys

class VideoPlayer(QWidget):
    def __init__(self, video_path):
        super().__init__()
        self.setWindowTitle("本地视频播放器")
        self.layout = QVBoxLayout()
        
        self.video_widget = QVideoWidget()
        self.player = QMediaPlayer()
        self.player.setVideoOutput(self.video_widget)
        
        # 设置本地视频路径
        media_content = QMediaContent(QUrl.fromLocalFile(video_path))
        self.player.setMedia(media_content)
        
        self.play_btn = QPushButton("播放")
        self.play_btn.clicked.connect(self.play_video)
        
        self.layout.addWidget(self.video_widget)
        self.layout.addWidget(self.play_btn)
        self.setLayout(self.layout)
        
    def play_video(self):
        self.player.play()

if __name__ == "__main__":
    app = QApplication(sys.argv)
    video_path = "storage/emulated/0/vedio1.mp4"
    player = VideoPlayer(video_path)
    player.show()
    sys.exit(app.exec_())

Web 前端实现

用HTML5的video标签即可,注意本地文件需通过本地服务器访问(直接打开HTML会触发跨域限制):

<video controls width="600">
    <source src="storage/emulated/0/vedio1.mp4" type="video/mp4">
    你的浏览器不支持HTML5视频播放功能
</video>

可以用Python快速启动本地服务:

python -m http.server 8000

之后在浏览器访问http://localhost:8000即可加载本地视频。

内容的提问来源于stack exchange,提问作者fayzo bngsh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 17:45:48