我有一个问题,当用pyglet播放视频时,流的开头和结尾显然处理不正确。播放器忽略第一个关键帧,因此显示出小故障图像,直到找到第二个关键帧。同样,on-eos-event不是fire而是python chrash,因为它显然试图加载更多的帧。在
import pyglet
vidPath = "test.mp4"
window = pyglet.window.Window()
player = pyglet.media.Player()
source = pyglet.media.load(vidPath)
player.queue(source)
player.play()
@player.event
def on_eos():
print('video end')
@window.event
def on_draw():
window.clear()
if player.source and player.source.video_format:
player.get_texture().blit(0, 0)
pyglet.app.run()
我在OSX10.11.3上使用了Python3.4.3、pyglet 1.2.4和Avbin10。在
在Ubuntu上尝试同样的代码和视频,我在start时遇到了同样的问题和以下错误:
^{pr2}$当视频结束后:
[h264 @ 0x23bde00] no frame!
[h264 @ 0x23bf7e0] AVC: nal size 0
[h264 @ 0x23bf7e0] AVC: nal size 0
[h264 @ 0x23bf7e0] no frame!
[h264 @ 0x23bfc20] AVC: nal size 0
[h264 @ 0x23bfc20] AVC: nal size 0
有什么问题吗?我有一些视频,开始正确,但结束永远无法识别。在
我也遇到了一个问题,当通过pyglet播放时,文件的开头会出现故障。我通过重新编码并强制在文件开头添加一些额外的关键帧来“修复”它:
这种方法也适用于ffmpeg的最新版本(只需将
avconv
替换为ffmpeg
)。我只在linux上用h264编码的视频流测试过它,在avbin10上使用their git master branch在本地构建libav。在这是一个黑客,而不是一个解决方案,因为它没有告诉你为什么pyglet在流的早期忽略关键帧,也没有导致pyglet正确地读取它们。但这会让问题消失。在
相关问题 更多 >
编程相关推荐