Aktywne Wpisy
![urwis69](https://wykop.pl/cdn/c0834752/7c80979e7b1e159a8c7eb7726d39715835f138ca4f28e0f7abc056b7c02ac0fb,q60.jpg)
urwis69 +88
Syn mi się urodzil!
Pijta ze mna kompot mircy! 乁(♥ ʖ̯♥)ㄏ
Pijta ze mna kompot mircy! 乁(♥ ʖ̯♥)ㄏ
![heksengerg](https://wykop.pl/cdn/c0834752/2b3a0278144bca663ab1ad97eeba168585639ca2a44102377c54417d24b25712,q60.png)
heksengerg +28
Jeszcze Air Fryer i odkurzacz marki Dyson.
#onet
#onet
![heksengerg - Jeszcze Air Fryer i odkurzacz marki Dyson.
#onet](https://wykop.pl/cdn/c3201142/63319c82e15953fa8632e1e96024dab94288d2d9b618c39cfa1002ab77db2697,w150.jpg)
źródło: temp_file7562512892753440104
Pobierz
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
ffmpeg -f alsa -thread_queue_size 1024 \
-ac 1 -ar 44100 -i hw:3,0 \
-standard ntsc \
-f v4l2 -thread_queue_size 1024 -i
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
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