【问题标题】:how play mp4 video in google colab如何在 google colab 中播放 mp4 视频
【发布时间】:2019-12-14 01:47:31
【问题描述】:

我在content/video.mp4有一个video.mp4

如果我想在不下载的情况下在 google colab 中播放视频,¿我应该使用什么代码在我的 jupyter notebook 中打开一种视频播放器?

【问题讨论】:

    标签: python video mp4 google-colaboratory


    【解决方案1】:

    这是代码

    from IPython.display import HTML
    from base64 import b64encode
    mp4 = open('video.mp4','rb').read()
    data_url = "data:video/mp4;base64," + b64encode(mp4).decode()
    HTML("""
    <video width=400 controls>
          <source src="%s" type="video/mp4">
    </video>
    """ % data_url)
    

    您可以在 colab notebook here 中测试它。

    更新(2020 年 6 月)

    为了支持大型 vdo 文件,我编写了一个库以上传到 Google Drive 并将其设置为公开。然后使用返回的 URL 来显示视频。

    !pip install -U kora
    from kora.drive import upload_public
    url = upload_public('video.mp4')
    # then display it
    from IPython.display import HTML
    HTML(f"""<video src={url} width=500 controls/>""")
    

    【讨论】:

    • 我正在尝试阅读我的谷歌驱动器的视频,但由于某种原因运行时环境重新启动,您有什么想法
    • 然后,先将文件复制到当前目录。
    • 嗨 Korakot,你知道我如何将视频从 url 流式传输到 colab,而不是从驱动器加载视频吗?非常感谢
    • 它不适用于重度视频,我用大约 80MB 的视频进行了测试,运行时崩溃了。还有其他方法吗?
    • @Yachi웃 我为大视频添加了新方法。
    【解决方案2】:

    目前,如果格式不支持,我们需要压缩视频文件在google colaboratory中播放。

    from IPython.display import HTML
    from base64 import b64encode
    import os
    
    # Input video path
    save_path = "/content/videos/result.mp4"
    
    # Compressed video path
    compressed_path = "/content/videos/result_compressed.mp4"
    
    os.system(f"ffmpeg -i {save_path} -vcodec libx264 {compressed_path}")
    
    # Show video
    mp4 = open(compressed_path,'rb').read()
    data_url = "data:video/mp4;base64," + b64encode(mp4).decode()
    HTML("""
    <video width=400 controls>
          <source src="%s" type="video/mp4">
    </video>
    """ % data_url)
    

    参考:https://towardsdatascience.com/yolov3-pytorch-on-google-colab-c4a79eeecdea

    【讨论】:

    • 我认为最完整的答案,因为这适用于我原本不受支持的 mp4 视频格式。
    【解决方案3】:

    只需输入该功能的 mp4 视频路径即可。

    from IPython.display import HTML
    from base64 import b64encode
     
    def show_video(video_path, video_width = 600):
       
      video_file = open(video_path, "r+b").read()
     
      video_url = f"data:video/mp4;base64,{b64encode(video_file).decode()}"
      return HTML(f"""<video width={video_width} controls><source src="{video_url}"></video>""")
     
    show_video(video_path)
    

    【讨论】:

      猜你喜欢
      • 2020-02-15
      • 2017-04-07
      • 1970-01-01
      • 2020-08-17
      • 1970-01-01
      • 2016-05-06
      • 1970-01-01
      • 1970-01-01
      • 2013-06-28
      相关资源
      最近更新 更多