Saya merekam video dari Pi menggunakan Modul Kamera dengan kamera:
import picamera
with picamera.PiCamera() as camera:
camera.resolution = (640, 480)
camera.start_recording('1.h264')
camera.wait_recording(5)
for i in range(2, 11):
camera.split_recording('%d.h264' % i)
camera.wait_recording(5)
camera.stop_recording()
Saya secara terpisah menggunakan kombinasi raspivid
dan gstreamer
untuk streaming video dari pi tanpa penundaan. Apakah ada cara untuk menyimpan dan mengalirkan rekaman menggunakan python secara bersamaan ?
Pemikiran saya adalah harus ada cara untuk menggunakan kamera sebagai input dan membuat dua sumber output: video 720p untuk penyimpanan dan video 240p downscaled untuk streaming menggunakan gstreamer ...?
streaming-video
koogee
sumber
sumber
raspivid
Anda bisatee
output ke file dan gstreamer atau apa pun (lihatman tee
). Selama satu aliran langsung ke disk, itu tidak akan menambah banyak overhead, tetapi jika Anda ingin memproses input menjadi dua format yang berbeda secara bersamaan, saya pikir itu akan terlalu banyak pekerjaan untuk pi untuk menangani.Jawaban:
The
tee
perintah membaca dari input standar dan salinan ke sejumlah file ditambah output standar secara default, lihatman tee
untuk lebih jelasnya. Ini berarti Anda dapat meminta tee untuk membuat file dari input dan kemudian mengirimkan hasilnya ke sesuatu yang lain.Penambahan pipa tambahan secara teori menambah sedikit inefisiensi. Mengenai apakah ini penting atau tidak, Anda harus menilai sendiri menggunakan metode streaming Anda sendiri. Metode saya saat ini tidak memuaskan pada resolusi penuh. Ini bukan minat besar sekarang tetapi ketika itu saya akan mencoba untuk menemukan sesuatu yang lebih baik (misalnya seharusnya Gstreamer bekerja lebih baik daripada CLVC).
Namun, perlu dicatat bahwa file yang disimpan secara lokal pada pi pada saat yang sama adalah kualitas yang sempurna, sehingga aktivitasnya tidak mengganggu raspivid. Ini sebuah contoh:
Saya membagi ini menjadi dua baris untuk dibaca; Anda dapat menekan kembali setelah
|
(pipa) dan menyelesaikan perintah sama seperti Anda dapat memutuskan garis\
. Anda dapat mengganticvlc
dengan apa pun yang Anda inginkan. Sekali lagi, meskipun kualitas alirannya buruk,test_video.h264
hasilnya sempurna.Jika saya menurunkan resolusi ke 640x360 pengaturan ini baik-baik saja, dengan satu atau dua latensi yang biasanya saya dapatkan. Saya tidak berpikir
tee
atau pipa kedua membuat perbedaan pada kualitas aliran; ini mampu throughput yang jauh lebih tinggi dari yang diperlukan di sini dan tidak memerlukan banyak sumber daya sistem.CPU bekerja pada 35-45%, yang sama dengan CPU streaming video
tee
.sumber
record_sequence
yang mengambilsplitter_port
parameter. Ada juga contoh merekam hingga 4 keluaran simultan dari kamera.Tidak ada yang salah sama sekali dengan goldilocks yang menjawab di atas, tapi di sini ada satu tambahan yang berhubungan secara khusus dengan picamera API. Anda dapat menggunakan output khusus untuk melakukan pemisahan seperti itu (sebanyak mungkin cara yang Anda suka) dan mengirim output ke berbagai tujuan. Dalam kasus Anda, jika Anda ingin merekam ke file dan soket Anda bisa melakukan sesuatu seperti ini:
sumber