GNU/Linux >> Belajar Linux >  >> Linux

Pipa gambar OpenCV mentah ke FFmpeg

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

Linux
  1. 5 gambar kontainer Linux favorit saya

  2. Unduh Manjaro 17 – Gambar ISO DVD

  3. Membuat Tail -f Keluar Pada Pipa Rusak?

  1. Cara Menginstal FFmpeg Di Linux

  2. Gambar dasar tersembunyi

  3. Konfigurasikan dan Bangun OpenCV ke Instal FFMPEG Kustom

  1. Linux – Mode Keyboard Mentah?

  2. Ny Cara Menggunakan Xargs Di Pipa?

  3. Redirect Dan Output Pipa?