У меня есть поток HLS, и я хотел извлечь кадр, как это выглядит для компьютерного зрения, используя opencv в python. Я попытался исследовать ffmpeg, но он, кажется, легко читает .mp4, но не поток hls (m3u8). Есть ли какая-либо другая опция или другой API ffmpeg- python для извлечения кадра из потока HLS.
Вот пример кода, который я хотел попробовать, но не работает с VIDEO_URL
from imutils.video import VideoStream
import ffmpeg
import cv2
import numpy as np
import subprocess as sp
VIDEO_URL = "https://bitdash-a.akamaihd.net/content/sintel/hls/playlist.m3u8"
VIDEO_FILE = "sampleStream.mp4"
process = (
ffmpeg
.input(VIDEO_FILE)
#.input(VIDEO_URL)
.output('pipe:', format='rawvideo', pix_fmt='rgb24')
.run_async(pipe_stdout=True)
)
tar = 200
val = 0
while True:
val = val + 1
in_bytes = process1.stdout.read(100 * 200 * 3)
if not in_bytes:
print('Breaking - No bytes found.')
break
in_frame = (
np
.frombuffer(in_bytes, np.uint8)
.reshape([100, 200, 3])
)
if val == tar:
print('Writing image...')
cv2.imwrite("sample.jpg", in_frame)
break