Nagrywam pulpit za pomocą avconv (aka ffmpeg), a następnie skaluję go do 720p.
Niedawno dodałem do mojego skryptu, aby mogli wybrać okno za pomocą xwininfo i zapisze je konkretnie.
Jednak jeśli format wyjściowy nie jest podzielny przez 2, koder wariuje i nie otrzymuję mojego wideo.
Czy istnieje sposób, aby to naprawić wewnątrz ffmpeg, więc nie muszę wykonywać ręcznej matematyki w bash, aby ustawić wartości skali?
Czy jest możliwe, aby filtr skali odejmował / dodawał jeden do szerokości / wysokości, jeśli są nierówne? (okrągły?)
Czy można zastosować inny filtr po oryginalnej skali, który mógłby to osiągnąć? (Spowodowałoby to zaokrąglenie filmów o nierównym rozmiarze wejściowym i braku skalowania)
#!/bin/bash
avconv \
-f x11grab -r $fps -s $capturesize -i :0.0$offset \
-vcodec libx264 \
-vf scale=-1:720 \
-pre:v lossless_ultrafast \
-threads 4 \
-y $@
Niektóre stare listy mailingowe sugerują round()
funkcję, której można użyć w filtrze, ale wydaje mi się, że nie mam poprawnej składni. Jeśli to działa, scale=round(iw,2):round(ih,2)
zastosowany na końcu filtr rozwiązałby wszystkie moje problemy naraz. iw
i ih
wydaje się, że nie działa.
ceil
Zamiast tego używam,trunc
aby uzyskać wyższy numer pary, jak w przypadku 16: 9 480p