Plik mam w kontenerze mp4. Na podstawie tego co wskazałeś, zrobiłem tak:
ffmpeg -i input.mp4 -filter:v "setpts=0.5*PTS" -filter:a "atempo=2.0" -vn
output.mkv
Coś podobnego próbowałem kilka miesięcy temy ale odpuściłem bo efekt był
podobny.
Na XP jest kumunikat na czerwono:
Only '-af atempo=2.0' read, ignoring remaining -af options: Use ',' to
separate filters
i wypluwa wnikowo tylko samą fonię w kontenerze mkv.
Czyli komenda dla video coś mu się nie widzi.
Potrzeba mi to na chłopski rozum przetłumaczyć o co z tym błędem dotyczącym
tego tempa chodzi.
Zaraz się okaże, że wersja ffmpeg krojona pod XP nie obsłuży takiej linii
komend
Czy raczej szarpie się o podwójny cudzysłów " zamiast ' ?
W sklecaniu gadającego polecenia do linii komend nigdy nie byłem mistrzem ;)
Zrobienie samego przyspieszenia video bez fonii, czyli:
ffmpeg -i input.mp4 -filter:v "setpts=0.5*PTS" output.mkv
Robi bez problemu.
Ale złożenie dwóch komend nie podoba się programowi to co poleciłeś jako
zbiorcze polecenie.
Potem te dwa osobne klocki audio i video składam ręcznie przez mktoolnix to
nie ma zastrzeżeń.
Czy te wartości przyspieszeń muszą być krotnością parzystą?
Czy raczej mogą być dowolną liczbą z ułamkiem nieskończonym?
Jak będzie wyglądać przyspieszenie o 1,5 czy 1,75?
Dla przyspieszenie x1,75 wstawiamy setpts 0,5714 czy jak?
A dla przyspieszenie x1,5 wstawiamy setpts 0,6666?
W przypadku parzystej wielkości widzę, że parametr setpts jest odwrotnością
parametru atempo stąd taka dedukcja.
Jakie wartości mają przyjąć wtedy parametry x.x y.y
setpts=x.x*PTS[v];[0:a]atempo=y.y
Jeżeli chcemy przyspieszenie o 1,5x lub 1,75x
Zakładając, że takie nieparzyste przyspieszenia mogą w ogóle być
realizowane.
Próby robiłem na tej wersji ffmpeg
ffmpeg-4.3-dev-327-g83e0b71-win32-static-xpmod-sse
Z tego co widzę nie musi być aż na takie stare sprzęty bez sse
Bo taki Athlon II X2 260 raczej nie wymaga takiego okrojenia co do
obsługiwanych rozkazów.
Dawniej wątek
https://ffmpeg.zeranoe.com/forum/viewtopic.php?f=7&t=4961&p=12160&hilit=windows+xp#p12160
prowadził do tego:
https://ffmpeg.zeranoe.com/forum/viewtopic.php?f=13&t=3572&start=40#p12105
Gdzie były ładowane wersje pod XP, dziś już wątku nie ma.
Która wersja ffmpeg jest tą ostatnią pod XP?
Czyżby ostatnia oficjalna dla XP to
ffmpeg-20151126-git-72eaf72-win32-static
?
Natknąłem się jeszcze na taką wersję:
ffmpeg-N-86763-g341f012-win32-static_legacy
Ale to już chyba nie jest oficjalna tylko oddolnie przez jakichś pasjonatów
sklecona?
Kolejne polecenie, które wskazałeś
ffmpeg -i input.mkv -filter_complex
"[0:v]setpts=0.5*PTS[v];[0:a]atempo=2.0[a]" -map "[v]" -map "[a]" output.mkv
Działa bez problemu.
Ale chcę ciut wolniej niż 2x przyspieszać
Próba dla 1,75x da radę? Co wstawić?
W ogóle z tego co słyszę przyspieszenie tej fonii odbywa się podobną metodą
(w odsłuchu) jak robi to yt na swoim youtubowym playerze.
Czyli jakby częstotliwość (barwa) głosu się nie zmienia, a zaczyna
przyspieszać tempo mowy - czyli szybciej słowa lecą, a barwa głosu
praktycznie się nie zmienia.
A jak przyspieszamy ręcznie materiał w odtwarzaczu MPC-HC
https://mpc-hc.org/downloads/
to efekt przyspieszenia jest jak w magnetofonie, któremu zwiększyliśmy
sztucznie prędkość przesuwu taśmy przy odtwarzaniu dla nagrania
zrealizowanego z normalną prędkością. Czyli z niskotonoego głosu, robi się
taki bardziej wysoki szybszy dźwięk.
Bardziej mi odpowiada ta metoda z MPC-HC, bo jakoś tak jakby w odsłuchu
mniej cięła głoski i jest to bardziej zrozumiałe.
Da sie to tak programowo przemielić żeby wyszedł efekt podobny do tego z
odtwarzacza MPC-HC?
A z tym AVI to video musi być jakimś starszym kodekiem typu Xvid robione
żeby przyspieszyć przez zmianę parametru fps?
Czy można to także robić do materiałów kodowanych AVC?
Które narzędzie do zmiany fps w AVI się najlepiej sprawdza?
Zrobię wtedy próbę jak z tym AVI się to zachowa.
Bo jeżeli sam kodek jakim była kompresja robiona nie ma znaczenia a tylko
kontener ma tu wpływ to przeładuję to AVC do kontenera AVI i zrobię próbę.
W przypadku zmiany fps rozumiem, że żadne klatki nie są pomijane i np z
25fps robi się np 50fps?
A z tego co widzę w oknie linii komend dla ffmpeg, w czasie realizacji
pierwszego proponowanego polecenia, co któraś klatka jest brana do nowego
materiału, a reszta przeskakiwana? Czyli powstaje taki jakiś kastrat video?
|