Skocz do zawartości

Karta Dźwiękowa do raspberry pi zero


Pomocna odpowiedź

Czyli w sox'ie wywołuje je się przez subprocess myślałem, że sox ma swoją klasę wywołania. Czyli jak dobrze rozumiem na końcu linijki zrobiłeś wzmocnienie dźwięku na 20dB?

Na początku muszę dodać jeszcze import sox? Sox mam już zainstalowanego.

Muszę się oderwać wyjazd służbowy i weekend z głowy, ale po weekendzie wrócę do tego.

A jeszcze miałem zapytać jak w manie się poruszać wpisałem tak na szybko w terminalu Man sox, ale nie wiem co dalej.

 

1 minutę temu, Brendy napisał:

Czyli jak dobrze rozumiem na końcu linijki zrobiłeś wzmocnienie dźwięku na 20dB?

Nie, zwiększyłem subiektywną głośność (20 to przykład, musisz sobie wypróbować parametr od 0 do 100). Warto dać jeszcze norm, czyli (już nie rozpisuję na listę):

play -t mp3 cośtam.mp3 norm contrast 20

norm zwiększy głośność do maksymalnej możliwej. Jeśli będą clicki to wtedy:

play -t mp3 cośtam.mp3 norm -3 contrast 20

(zwiększy głośność o 3 dB mniej od maksymalnej). Co prawda contrast nie powinien ruszać sygnału w okolicach maximum, ale jak wiadomo różnie z tym bywa 🙂

6 minut temu, Brendy napisał:

Na początku muszę dodać jeszcze import sox? Sox mam już zainstalowanego.

Nie - sox jest poleceniem zewnętrznym i wystarczy subprocess.

 

(edytowany)

Dziękuję za przykłady i wyjaśnienia po powrocie będę walczył dalej. Masakra jakie tu są możliwości można edytować dźwięk dodać głośność i masę innych parametrów zanim trafi na głośnik. Coś jak na kompie bym odpalił audacity i robił z dźwiękiem co chciał, a tu odbywa się to z automatu.

Edytowano przez Brendy

Ethanak poznając takie możliwości z edycją dźwięku zastanawiam się i bardzo wkręciłeś mnie w temat.

Jak zaczyna się proces nagrywania video i dźwięku, potem stop i zaczyna się proces łączenia video z nagraniem głosowym w całość i wysyłka na Telegram.

Czy jest to bardzo skomplikowany proces do ogarnięcia i ile czasu mógłby trwać łącząc 10s nagranie?

 

Proces jest stosunkowo prosty, ale coś o systemie trzeba wiedzieć, a tu masz sporo do nadrobienia.

Spróbuj na początek zostawić program w spokoju i połączyć ręcznie audio i video w jeden filmik. Możesz użyć ffmpeg, ale moim zdaniem mencoder jest wygodniejszy, szczególnie jeśli nie transkodujesz żadnego ze strumieni. Tu już będziesz wiedział ile czasu to zajmie.

A co do pythona... jeśli nagrywanie audio i video to dwa oddzielne procesy - bezwzględnie zapoznaj się z funkcjami os.fork, os.exec  (i pochodnymi), os.wait, os.waitpid i co tam wyjdzie po drodze. Trudność może być taka, że żadne odpowiedniki tych funkcji nie występują w windows (i raczej nie wystąpią), a dokumentacja pythona dość często ogranicza się do krótkiej wzmianki i odesłania do dokumentacji C.

No ale jeśli się zrozumie ogólną zasadę działania to potem jest to już dziecinnie proste 🙂

Tak że próbuj i pytaj o szczegóły jeśli coś będzie niejasne.

(edytowany)

Ok najpierw jak wrócę to zacznę od tego dźwięku żeby ten głos był głośniejszy powołując się na twój przykład wyżej. Potem spróbuję trochę poczytać,żeby chociaż mieć jakieś podstawowe tło i tak jak piszesz zacznę od podstawowego programu połączenia video z audio.

Jeśli chodzi zasadę działania mnie w programie to dźwięk i video ma być nagrywane tym samym czasie i potem połączone czy jak tam się to zwie i wysłane na Telegram.

Ważne jest że jak trafi do telegram to musi być w formacie MP4.

Nagrywanie z kamery h264 z audio w tym samym czasie ->> konwersja video z dźwiękiem na MP4-->> Telegram.

 

Dziękuję za wsparcie na pewno będą pytania.

 

Edytowano przez Brendy

Możesz. Ale może najpierw zrób to z linii poleceń, a jak już będziesz wiedział co trzeba zrobić to dopiero wrzuć do programu.

To co pisałem o mencoderze to - jak nadmieniłem - moje osobiste zdanie. Jak dla mnie jest po prostu wygodniejszy w użyciu, ale efekt przy użyciu mencodera i ffmpeg będzie ten sam.

Jeszcze zapomniałem zapytać o kolejność.

1. Nagrane video z dźwiękiem w tym samym momencie.

2. Edycja dźwięku czyli dodanie contrast, norm, żeby było głośniej.

3. Połączenie video + audio do MP4.

4. Wysyłka do Telegrama.

???

 

 

 

 

(edytowany)

A masz inny pomysł?

Nagranie zajmuje tyle samo czasu (dźwięk i video), czyli kolejność jest nieważna.

Ja bym zrobił coś takiego:

  • fork
  • w utworzonej gałęzi nagranie video
  • w głównej gałęzi:
  1. nagranie dźwięku
  2. korekta
  3. zaczekanie na zakończenie nagrania video
  • utworzenie mp4
  • wysyłka

Równie dobrze można:

  • fork
  • w utworzonej gałęzi:
  1. nagranie dżwięku
  2. korekta
  • w głównej:
  • nagranie video
  • zaczekanie na zakończenie procesu tworzącego dźwięk
  • utworzenie mp4
  • wysyłka

(sorki, ale ten genialny edytor nie przewiduje zagnieżdżania list)

Czyli po pythonowemu:

pid = os.fork()
if pid == 0:
  subprocess.call(to co trzeba do stworzenia dźwięku)
  subprocess.call(to co trzeba do korekty bo nie wiem jak to zrobić jednym wywołaniem)
  sys.exit(0)
nagraj_video()
os.waitpid(pid, 0)
połącz_audio_i_video()
telepot.wyślij_film()

Oczywiście warto sprawdzić czy wszystko poszło tak jak trzeba, ale obsługa błędów (np. użycie check_call zamiast call) to inna bajka.

No i oczywiście użycie os.execl zamiast subprocess.call

 

 

 

 

Edytowano przez ethanak

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...