Saya agak terlambat, Tapi VidGear
saya kuat Pustaka Python mengotomatiskan proses penyaluran bingkai OpenCV ke FFmpeg di platform apa pun . Berikut adalah contoh dasar python:
# import libraries
from vidgear.gears import WriteGear
import cv2
output_params = {"-vcodec":"libx264", "-crf": 0, "-preset": "fast"} #define (Codec,CRF,preset) FFmpeg tweak parameters for writer
stream = cv2.VideoCapture(0) #Open live webcam video stream on first index(i.e. 0) device
writer = WriteGear(output_filename = 'Output.mp4', compression_mode = True, logging = True, **output_params) #Define writer with output filename 'Output.mp4'
# infinite loop
while True:
(grabbed, frame) = stream.read()
# read frames
# check if frame empty
if not is grabbed:
#if True break the infinite loop
break
# {do something with frame here}
gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
# write a modified frame to writer
writer.write(gray)
# Show output window
cv2.imshow("Output Frame", frame)
key = cv2.waitKey(1) & 0xFF
# check for 'q' key-press
if key == ord("q"):
#if 'q' key-pressed break out
break
cv2.destroyAllWindows()
# close output window
stream.release()
# safely close video stream
writer.close()
# safely close writer
Sumber:https://abhitronix.github.io/vidgear/latest/gears/writegear/compression/usage/#using-compression-mode-with-opencv
Anda dapat melihat VidGear Docs untuk aplikasi dan fitur lebih lanjut.
Semoga itu bisa membantu!
Butuh banyak mengutak-atik tapi saya mengetahuinya menggunakan FFmpeg rawvideo demuxer:
python capture.py | ffmpeg -f rawvideo -pixel_format bgr24 -video_size 640x480 -framerate 30 -i - foo.avi
Karena tidak ada tajuk dalam video mentah yang menentukan parameter video yang diasumsikan, pengguna harus menentukannya agar dapat mendekode data dengan benar:
-framerate
Setel laju bingkai video masukan. Nilai default adalah 25.-pixel_format
Atur format piksel video masukan. Nilai defaultnya adalah yuv420p.-video_size
Atur ukuran video masukan. Tidak ada default, jadi nilai ini harus ditentukan secara eksplisit.
Dan ini sedikit tambahan untuk pengguna yang mahir. Hal yang sama tetapi menggunakan VLC untuk mengalirkan keluaran langsung ke web, format Flash:
python capture.py | cvlc --demux=rawvideo --rawvid-fps=30 --rawvid-width=320 --rawvid-height=240 --rawvid-chroma=RV24 - --sout "#transcode{vcodec=h264,vb=200,fps=30,width=320,height=240}:std{access=http{mime=video/x-flv},mux=ffmpeg{mux=flv},dst=:8081/stream.flv}"
Sunting:Buat aliran webm menggunakan ffmpeg dan ffserver
python capture.py | ffmpeg -f rawvideo -pixel_format rgb24 -video_size 640x480 -framerate 25 -i - http://localhost:8090/feed1.ffm