Aktywne Wpisy
idziesz sobie w niedziele, kontemplujesz przyrodę i wchodzi ci w kard taki dżolo alfa bambolo, wypinglowany, wyperfumowany, że trup komara ulice za nim ściele, rekini uśmieszek {bo już wie co się będzie dziać wieczorem) a obok niego rzecz jasna nie co innego jak najlepsze srańsko jakie widziałem przez ostatnie 5km marszu (a podkreślam ludzi od #!$%@?), do tego rude (a wiecie co takie śmigło z .uja robią), a ja na to sobie
Sekra13 +9
Szczerze mówiąc to nigdy wam nie daruje tego że zniszczyliście karierę Sergiusza, nic złego wam ani nikomu innego nie zrobił i nie zasługiwał na to
#famemma
#famemma
Dziś mam pytanie głównie do Linuchmajstrów:
SYTUACJA:
Rozpoczynam jednoczesne nagrywanie audio i video z pomocą dwóch bashowych skryptów w oparciu o avconv (ffmpeg), procedura dzieje się w tle. Użytkownik widzi w tym czasie 3-sekundowe odliczanie w postaci pliku video (countdown.mp4), po czym pokazuje się mu podgląd z wycelowanej w niego kamery (stream z pomocą mplayera). Po 30 sekundach (a dokładnie 34s, licząc wraz z momentem odliczania) użytkownikowi wyświetla się podziękowanie, a nagrane pliki audio i video są sklejane avconvem(ffmpegiem) do postaci jednego pliku mp4.
PROBLEMY:
1. skrypty nie chcą działać jednocześnie (tzn. jednoczesne nagrywanie audio i video działa, ale jeśli układ komend w głównym skrypcie wygląda następująco:
bash countdown.sh &
bash preview.sh &
bash recvideo.sh &
bash recaudio.sh &
bash AVmerge.sh &
... to skrypty nie działają jednocześnie - nagrywanie odbywa się dopiero po wykonaniu countdown.sh i preview.sh.
Jak sprawić, aby nagrywanie rozpoczęło się w tle, tj. wraz z rozpoczęciem wykonywania countdown.sh i preview.sh?
#kiciochpyta #linux #bash #programowanie #raspberrypi
1) Czemu za każdym razem wykonujesz bash blabla?
Chyba za każdym razem wywołujesz powłokę bash, która wywołuje kolejną powłokę (ze skryptu).
Zamiast bash zrób ./
recvideo.sh:
avconv -threads auto -f video4linux2 -i /dev/video0 -s 800x600 -t 30 -r 20 -b:v 6M -y /media/video.avi
recaudio.sh:
#usuwanie poprzednio nagranego strumienia audio
rm /media/audio.wav
#nagrywanie nowego strumienia audio
arecord -f dat -D plughw:Camera --duration=30 /media/audio.wav
natomiast preview robię z pomocą mplayera:
mplayer tv:///dev/video0 -ss 0 -endpos 30
a AVmerge.sh wygląda tak:
name=vidgot
ffmpeg -f alsa -thread_queue_size 1024 \
-ac 1 -ar 44100 -i hw:3,0 \
-standard ntsc \
-f v4l2 -thread_queue_size 1024 -i /dev/video1 \
-c:v libx264 -preset medium -q 18 \
-c:a aac -b:a 256k \
-movflags +faststart \
output.mp4
Może dasz rade przerobić to na avconv'a i pozbedziesz sie 2 skryptów.
countdown.sh nie powinien być wykonany bez & (jako że
Próbowałem zrobić to z wykorzystaniem Alsy, problem w tym, że RPi 2b+ zdaje się być na tyle słabiutki, że Alsa zaczyna pluć błędami o zapchanym buforze mimo, że ręcznie ustawiłem jej go wystarczająco duży. Na domiar złego, występowały liczne problemy z synchronizacją i inne temu podobne błędy. Dlatego zdecydowałem się na osobne nagrywanie dźwięku przez
Komentarz usunięty przez autora
Osobiście robiłem niedawno coś podobnego na RPi camera + karta dźwiękowa na USB. Bardzo pomocny jest w tym wypadku projekt: https://github.com/iizukanao/picam (streamowanie na żywo/zapis do plików dobrze zsynchronizowanego audio + wideo i sterowanie hook'ami przez tworzenie plików - więc łatwo zintegrować to z jakimiś skryptami). Całość zrobiona sensownie
@Lord_Gerwazy: Niestety nie, samo przepychanie obrazu z v4l do sprzętowego enkodera H264 nie byłoby takie trudne (tu przykładowy kod który to robi: https://www.raspberrypi.org/forums/viewtopic.php?f=38&t=41844&start=50), ale trzeba by ogarnąć też różne tryby/ustawienia które takie kamery mogą obsługiwać. Wydaje mi się, że mechanizm synchronizacji audio-wideo zaimplementowany teraz w picam by wystarczył. Tyle że trzeba by to do picam