31 marca 2018

Łączenie wideo i audio w jeden plik

Sposób na złączenie dwóch plików audio i wideo w jeden jest bardzo prosty (przynajmniej w przypadku użycia ffmpeg):

ffmpeg -i video.mp4 -i audio.wav -c copy output.mkv

więcej: https://superuser.com/questions/277642/how-to-merge-audio-and-video-file-in-ffmpeg

25 marca 2018

Reenkodowanie plików dźwiękowych do formatu opus

Zaszła potrzeba zreenkodowania (w założeniu) dowolnego formatu pliku wejściowego audio do formatu wyjściowego opus. Celem było zminimalizowanie operacji pośrednich.
Jest to bardzo proste z wykorzystaniem ffmpeg oraz opusenc i opcją dekodowania/enkodowania do/z strumienia (pipe).
Przykład:

ffmpeg -i plik.mp3 -f wav - | opusenc <opcjonalne opcje> - output.opus

14 marca 2018

Edycja paczek Androida .apk i podpisywanie

Szybki wpis opisujący jak wyedytować i podpisać plik .apk

Było mi to potrzebne ze względu na błąd:

Failure [INSTALL_FAILED_SHARED_USER_INCOMPATIBLE: Package couldn’t be installed in /data/app/com.android.stk-1: Package com.android.stk has no signatures that match those in shared user android.uid.phone; ignoring!]

  1. Decompile the apk file using apktool(https://bitbucket.org/iBotPeaches/apktool/downloads/):
    1. java -jar apktool.jar d example.apk
  2. Make the changes needed – my app needed permissions, so I wanted to remove sharedUserId from AndroidMainfest.xml:
    1. remove android:sharedUserId= …
  3. Recompile the source code into a new apk:
    1. java -jar apktool.jar b -o example_my.apk example
  4. Create a signing key; Skip this step if you have created one already. Note: keytool is located in the Java SDK directory (e.g. C:\Program Files (x86)\Java\jdk1.8.0_161\bin)
    1. keytool -genkey -v -keystore myAndroidKey.keystore -alias myAndroidKeyAlias -keyalg RSA -keysize 2048 -validity 10000
  5. Sign your new apk
    1. jarsigner -verbose -keystore myAndroidKey.keystore ./example_my.apk myAndroidKeyAlias
  6. (Optional) Use zipalign to align your apk.
    1. zipalign -v 4 Reader_my.apk Reader_my_zipaligned.apk

 

based on:

  1. https://forum.xda-developers.com/showpost.php?p=37343918&postcount=2
  2. https://stackoverflow.com/questions/3997748/how-can-i-create-a-keystore

2 stycznia 2018

Dodawanie zakładek spisu treści do pliku pdf

Często zdarza się, że ściągnę użyteczną książkę w PDF, ale niestety bez zakładek. Aby ułatwić przeglądanie takiego pliku można dodać go własnoręcznie – wykorzystując skrypt Python, który zmodyfikuje nam plik pdf i doda stworzone przez nas zakładki.

Zakładki w przykładowym pliku pdf

Wpierw trzeba przygotować plik, z którego wygenerujemy zakładki. Format jest następujący:

Rozdział<spacja>nr-strony
<tab>Podrozdział<spacja>nr-strony

Np:

r.1 3
	r.1.1 5
	r.1.2 6
		r.1.2.1 7
		r.1.2.2 8
	r.1.3 10

Następnie tak sformatowany plik zostaje przetworzony przez skrypt Python, który wkleja zakładki do pdf-a.

Skrypt można ściągnąć ze strony: https://github.com/kkthx/pdf_bookmarks/releases

 

24 grudnia 2017

Instalacja Gitea w RPi0W

Gitea jest to interfejs graficzny do Gita, podobny do Githuba – fork Gogs. Napisany w Go, po kompilacji nie wymaga praktycznie żadnych dodatkowych konfiguracji i mieści się w jednym pliku binarnym.

Uruchamianie Gitea

Ściąganie binarki gitea na dysk:

wget https://dl.gitea.io/gitea/1.3.2/gitea-1.3.2-linux-arm-6

Doda nowego użytkownika do systemu:

# useradd --system -m -d /home/gitea -s /bin/bash gitea

mv https://dl.gitea.io/gitea/1.3.2/gitea-1.3.2-linux-arm-6 /home/gitea

Ustawienie serwisu:

Stworzenie pliku gitea.service w katalogu /lib/systemd/system/:


[Unit]
Description=Gitea
After=syslog.service
Wants=network.target

[Service]
Type=simple
User=gitea
WORKINGDIR=/home/gitea
ExecStart=/home/gitea/gitea-1.3.2-linux-arm-6 web
Restart=always
Environment=USER=gitea HOME=/home/gitea

[Install]
WantedBy=multi-user.target

ustawienie serwisu:

systemctl enable gitea.service

Jeśli zmieniamy konfigurację trzeba zresetować serwis poleceniem:

systemctl stop gitea
systemctl start gitea

23 grudnia 2017

Raspberry Pi Zero W – instalacja systemu bez monitora i klawiatury

Stając się posiadaczem Raspberry Pi Zero W stanąłem przed dylematem instalacji systemu.
Niestety opóźnienia związane z nadchodzącymi świętami Bożego Narodzenia spowodowały, że moja paczka z Aliexpress nie dotarła. A jednak, chęć spróbowania jak działa Raspberry mocno kusiła.

Okazało się, że jest możliwość uruchomienia płytki nie mając do dyspozycji monitora i klawiatury (bardziej chodzi o wersje mikro złącz – mikro-USB i mikro-HDMI – te przejściówki nie dotarły z Chin).

Są dwie możliwe schematy instalacji:

  • z użyciem przejściówki USB-RS232 (to omawia ten artykuł)
  • z użyciem trybu USB On-the-go (na samym końcu artykułu)

Instalacja systemu z przejściówką USB-RS232

Do uruchomienia Raspberry Pi Zero W potrzebne są:

  • Raspberry Pi Zero W 🙂
  • Karta SD z adapterem do komputera
  • Zasilacz (ja użyłem ładowarki do komórki)
  • Przejściówka UART USB-RS232 (np. ft232)

Na początku instalujemy system na kartę SD. Aby to zrobić należy ściągnąć system ze strony. Ja wybrałem wersję “Raspbian Stretch Lite”. Ściągnięty plik zip wypakowujemy i za pomocą programu Win32DiskImager wypalamy na kartę SD.

Po zakończeniu zapisu edytujemy plik “config.txt” – dodajemy nową linię o zawartości:

enable_uart=1

Następnie wkładamy kartę microSD do Raspberry, podłączamy z adapterem UART i podłączamy zasilanie.

Mój setup Rpi zero W

Po uruchomieniu konsola powinna działać, domyślne dane root do logowania to

login: pi hasło: raspberry

Początkowa konfiguracja

Użyjemy narzędzia raspi-config

WiFi

Skanujemy dostępne sieci i wyszukujemy naszą, w linijce zaczynającej się od “ESSID:”. Kopiujemy nazwę i wkleimy ją potem w konfiguracji.

Optymalizacja config.txt

Do konfiguracji dodajemy linijki:

 # Disable Bluetooth dtoverlay=pi3-disable-bt 

Dodatkowe informacje:

https://elinux.org/RPiconfig

https://www.raspberrypi.org/documentation/configuration/config-txt/

Wyłączanie nieużywanych opcji dla zaoszczędzenia energii

HDMI

w pliku /etc/rc.local dodaj przed linijką “exit 0”:


/usr/bin/tvservice -o

Zmiana rozmiaru konsoli

Domyślne rozmiar konsoli ustawiony jest na 32×80:

<pre>% stty size
32 80</pre>

Można to zmienić poleceniem:

% stty cols 132 rows 42

można dodać także do /etc/rc.local

Rozszerzenie partycji na całą kartę SD

sudo raspi-config --expand-rootfs

Uruchomienie SSH

Trzeba stworzyć pusty plik o nazwie “ssh” w katalogu /boot.

Można także zmienić domyślny port SSH w pliku /etc/ssh/sshd_configc

Instalacja Dockera

w konsoli wpisać:

curl -sSL https://get.docker.com |sh

Instalacja systemu w trybie USB On-the-go

Możliwa jest także instalacja posiadając tylko Raspberry Pi Zero W, kartę SD oraz kabel USB.

Mozliwe jest to dzięki opcji USB On-the-go – pozwala to na podłączenie RPi do komputera i łączenie się przez konsolę z nim.

Więcej informacji:

https://gist.github.com/gbaman/975e2db164b3ca2b51ae11e45e8fd40a

Raspberry Pi Zero – Programming over USB! (Part 2)