- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
使用vlc python API,我想浏览youtube视频并每10秒拍摄一次快照。
使用我目前的方法,我遇到了问题,因为我必须依靠播放器更新其显示图像的速度。发生的速度是不可预测的。我认为,最好的办法是在播放器显示新图像时触发事件。然后,我可以对此使用react,而不必使用time.sleep()
变得模糊。
目前,我一直等到收到带有时间戳的视频缓冲区包,以确保播放器可以按所需的时间戳显示图像。
首先,我实例化播放器,然后等待它出现在屏幕上(需要一个事件)。然后,循环以截屏开始。
import pafy
import vlc
import os
import time
url = "https://www.youtube.com/watch?v=bMt47wvK6u0"
video = pafy.new(url)
best = video.getbest()
playurl = best.url
skipTime = 1000*10*10 # milliseconds
directory = "images/"
prefix = str.split(url, "=")[1] + "_" # get video ID, end of url
harvesting = False
waitForBuffer = False
recordTime = 0
def callbackBuffering(arg):
global waitForBuffer
global harvesting
if(recordTime + skipTime < arg.u.new_time and harvesting):
waitForBuffer = False
try:
os.mkdir("images")
except:
print("directory exists")
Instance = vlc.Instance()
player = Instance.media_player_new()
eventManager = player.event_manager()
eventManager.event_attach(vlc.EventType.MediaPlayerBuffering, callback = callbackBuffering)
Media = Instance.media_new(playurl)
Media.get_mrl()
player.set_media(Media)
player.play()
time.sleep(5) # wait till the window appears
player.pause()
images = 0
harvesting = True
while(player.get_time() < player.get_length()):
waitForBuffer = True
path = directory + prefix + str(player.get_time() )
print("image will be taken at " + str(player.get_time() ) + "ms at path "+ path )
time.sleep(0.5)
recordTime = player.get_time()
player.video_take_snapshot(0, directory + prefix + str(recordTime) ,i_width=player.video_get_width(), i_height=player.video_get_height())
player.set_time(recordTime+skipTime)
while(waitForBuffer):
print("waiting for buffering")
time.sleep(0.1)
最佳答案
尝试EventType.MediaPlayerPositionChanged
或EventType.MediaPlayerTimeChanged
它们似乎都基于每秒计数来工作。
他们也很高兴地处理了等待视频加载的问题,因为在显示内容之前,时间和位置都不会改变
关于python - 使用python-vlc从youtube视频获取屏幕截图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52918532/
我希望能够以不显眼的方式在 vlc 中查看我的播放列表。目前它看起来像这样: 我的愿望恰恰相反 - 让实际视频播放占据屏幕的大部分,并将播放列表不显眼地放在一边(实际上,除了 this bug 之外,
我目前有一个 Android 应用程序,它正在从相机捕获视频并通过 RTP 流式传输。我不使用 RTSP。 我创建了一个描述 RTP 提要的 SDP 文件。我可以在 Quicktime 7 中打开 S
我在互联网上搜索过这个,但似乎找不到任何东西。我知道有一些热键可以快退几秒钟,我知道有一些热键可以在 VLC 媒体播放器中暂停和播放音频/视频。但是,我使用单个脚踏板进行转录,并且基本上需要它来完成这
我在 C# Windows 表单应用程序中使用 vlc 插件。它适用于所有媒体类型,但不能通过插件播放 YouTube 视频,也可以在主播放器本身中播放。我正在使用以下代码: axVLCPlu
我正在使用 VLC 的命令行选项 --http-user-agent ,但它似乎不起作用。 我的命令是 $ vlc --http-user-agent 'FooBar/1.2.3' 'http://w
在 Linux 中从命令行启动 VLC 媒体播放器有哪些不同的方式? 很难找到这方面的任何信息。这是我迄今为止发现的: vlc - 启动 VLC 媒体播放器 cvlc - 在没有界面的情况下启动 VL
我正在尝试用 java 制作一个简单的 rtsp 流媒体服务器。服务器能够将视频正确地流式传输到自定义的写入播放器。 问题是我无法在 vlc 媒体播放器中播放相同的流。当我启动 vlc 媒体播放器并输
目标 确认 VLC 可以播放本地给定 SDP 文件中的流。 根据证词,这似乎是可能的: Playing RTP using VLC - Stack Overflow How to send SDP o
我正在编写一个简单的 Python 脚本,它应该做一些事情,然后播放一个视频文件,然后再做一些其他事情。 我被迫在装有 Python 3.2.3 和 VLC 的 Windows XP 机器上播放我的视
假设我有一个 RTSP 网址 (rtsp://192.168.0.17/mpeg4)。现场摄像机安装在中继现场视频的机器上。我正在使用 vlc 播放器对其进行流式传输,并将其保存在某个位置的 mp4
我找到了一种在 VLC 3.0.8 上正确显示来自 RTSP 摄像机的流马赛克的方法,并想分享解决方案: 将以下内容写入文件 # Comment the following line if you
我想用 vlc 流式传输 ts 编码的文件。该文件有多个音轨和多个字幕轨道。 是否可以流式传输以便在接收端的播放器中用户可以选择音轨和字幕轨道,如果可以,我该怎么做? 流是通过 vlm 脚本设置的,如
我有一个非常高质量的 RTSP 提要进入 Windows 服务器。我正在尝试使用 VLC 将其重新流式传输为 Http Live Streaming。 有谁知道是否可以通过 VLC 的图形用户界面而不
我正在尝试编写一个小应用程序,重复动态播放单个电影文件。我用 Python 编写的,使用 these VLC-Python 绑定(bind) 我想说,这不会那么难,即使非常稀疏的文档,我也可以全屏播放
我希望有人可以帮助解决 Python 绑定(bind)输出问题(使用 vlc.py) 我有一个使用 vlc.py 的基本测试脚本,它运行但不播放视频。 import vlc def setup_pla
可以在 Cubox 上安装 vlc 和 vlc 的 web 插件? 哪个版本的 Linux 更好,您推荐? Here我已经看到可以重新编译arm架构的源代码,但是可以在cubox上使用vlc而不需要重
我正在使用vlcj捕获Java程序中的屏幕。因此,我使用以下代码: public static void main(final String[] args) { NativeL
我有一个家庭影院设置,光束刚刚太宽,我希望视频能进来一点。我真的很惊讶没有缩小,就像在视频中添加黑框/挤压它一样。有什么想法吗? 最佳答案 使用 O(键),您将自动缩放设置为“原始大小”。然后,Alt
我找到了这个 Material ,http://wiki.videolan.org/Documentation:Play_HowTo/Format_String .我在我的文件名前缀中尝试视频的时间码
在VLC Player上播放原始视频(.yuv)文件时。如何告诉VLC视频的宽度,高度和帧速率? 最佳答案 试试这个: vlc --demux rawvideo --rawvid-fps 25 --r
我是一名优秀的程序员,十分优秀!