Skocz do zawartości
13x0r

ffmpeg: problem z konwersją 2x avi -> avi

Rekomendowane odpowiedzi

Napisano (edytowane)

TLDR: Próbuję z dwóch plików avi stworzyć jeden plik avi zawierający jedną ścieżkę wideo i dwie dźwiękowe, jednak przy bezpośredniej konwersji (2x avi -> avi) pojawia się błąd o braku sygnatur czasowych i w pliku wynikowym dźwięk nie zawsze pasuje do obrazu. Zastosowanie opcji "-fflags +genpts" nic tu nie pomaga. Coś niby pomaga zastosowanie dodatkowego pośredniego innego formatu dla pliku wynikowego (2x avi -> mp4 -> avi) ale w dalszym ciągu (z powodu pojawiających się komunikatów) mam spore wątpliwości, że otrzymany plik wynikowy jest poprawny. Proszę o pomoc i podanie metody służącej uzyskaniu w 100% poprawnego pliku wynikowego.

 

Posiadam dwa pliki avi, które zawierają ten sam materiał wideo ale dwie różne ścieżki dźwiękowe. Chciałbym bez ponownego kodowania przekonwertować je do jednego pliku wideo z dwoma ścieżkami dźwiękowymi.

Materiał wideo:

Stream #0:0: Video: mpeg4 (Advanced Simple Profile) (XVID / 0x44495658), yuv420p, 640x320 [SAR 1:1 DAR 2:1], 1012 kb/s, 24 fps, 24 tbr, 24 tbn, 24 tbc

Obie ścieżki audio:

Stream #0:1: Audio: mp3 (U[0][0][0] / 0x0055), 48000 Hz, stereo, fltp, 128 kb/s

Próbowałem konwersji przy pomocy:

ffmpeg -y -i video1.avi -i video2.avi -map 0:v:0 -map 0:a:0 -map 1:a:0 -c copy final.avi

... ale jej czasie pojawia się komunikat:

[avi @ 0000000002fe09c0] Timestamps are unset in a packet for stream 0. This is deprecated and will stop working in the future. Fix your code to set the timestamps properly

... i kiedy odtwarzam finalny plik avi, to dźwięk nie zawsze współgra z obrazem.

W internecie znalazłem poradę, że powinienem użyć opcji "-fflags +genpts":

ffmpeg -y -fflags +genpts -i video1.avi -fflags +genpts -i video2.avi -map 0:v:0 -map 0:a:0 -map 1:a:0 -c copy final-pts.avi

... i wtedy podczas konwersji nie mam komunikatu o braku sygnatur czasowych ale uzyskany finalny plik jest binarnie indentyczny z tym, który powstał bez użycia tej opcji.

W następnym kroku spróbowałem użyć innego formatu pliku końcowego, mp4. Tu, niezależnie od tego czy nie używam opcji "-fflags +genpts", czy też ją dodaję:

ffmpeg -y -i video1.avi -i video2.avi -map 0:v:0 -map 0:a:0 -map 1:a:0 -c copy final.mp4
ffmpeg -y -fflags +genpts -i video1.avi -fflags +genpts -i video2.avi -map 0:v:0 -map 0:a:0 -map 1:a:0 -c copy final-pts.mp4

... w obu plikach mp4 nie ma widocznych błędów łączenia dźwięku z obrazu i to nawet pomimo tego, że wersja konwersji bez "-fflags +genpts" pokazuje uwagi o braku sygnatur czasowych (oba pliki mp4 różnią się też binarnie).

Jednak potem, kiedy używam komend:

ffmpeg -y -i final.mp4 -map 0 -c copy final-mp4.avi
ffmpeg -y -i final-pts.mp4 -map 0 -c copy final-mp4-pts.avi

... aby wrócić z mp4 do oryginalnego formatu avi, to przy obu konwersjach pojawia się komunikat:

[avi @ 000000000286cbc0] requested bits_per_coded_sample (16) and actually stored (0) differ

... czyli w dalszym ciągu z tymi plikami mp4 może być coś nie tak?

Oba pliki avi uzyskane z tych dwóch różnych plików mp4 są binarnie identyczne (choć różne od tych uzyskanych bezpośrednio) i, co chyba ważne, dźwięk w nich już niby współgra z obrazem.

Nie jestem ekspertem ffmpeg więc pytam: jaka jest najlepsza droga na to co chcę zrobić bez ponownego rekodowania materiału w plikach źródłowych i abym mógł mieć pewność poprawnej zawartości pliku wynikowego?

Edytowane przez 13x0r

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach
Napisano (edytowane)

Zmuksuj to do MKV i tyle?

Program: MKVToolNix.

Możesz też wyciągnąć samo audio z pliku, np.:

ffmpeg -i input.avi -c:a copy output.mp3

Samo: -c:a copy powinno skopiować, ale nie wiem, jaki tam jest format.

W sumie MKV i tak obsługuje praktycznie wszystko. Po co ci w ogóle taki rupieć jak AVI?

Edytowane przez Kamiyan

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

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

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się

  • Ostatnio przeglądający   0 użytkowników

    Brak zarejestrowanych użytkowników przeglądających tę stronę.

×
×
  • Dodaj nową pozycję...