ffplay - jak odtwarzać razem oddzielne pliki wideo i audio


9

Jestem więc w stanie transkodować osobne pliki wideo i audio w jeden plik filmowy, na przykład:

ffmpeg -ss 0 -lowres 0 -r 24 -i dcp/picture.mxf -vf "xyz2rgb" -i mov/sound.wav -ac 2 -ab 256k -vb 3000k -t 10 -y mov/movie.mp4

I zobacz i usłysz wynikowy film tak:

ffplay -ss 0 -lowres 1 -vf "xyz2rgb" mov/movie.mp4

Jednak, aby uniknąć konieczności transkodowania filmu i dźwięku razem w jednym pliku, zanim będzie można go zobaczyć, chciałbym po prostu odtworzyć dwa osobne pliki razem. O ile mi wiadomo, ffplay nie pozwala łączyć dwóch różnych plików (prawda?).

Czytając te fora, wydaje się, że możesz przesłać wyjście ffmpeg do ffplay . Poniżej jest tak blisko, jak mam. Nie jest tak blisko. :( Informacje o filmie są wyraźnie przenoszone, ale jest to zielony „śnieg” w odpowiednim rozmiarze klatki, z nutami rzeczywistych zdjęć tańczących w okropnym zielonym śniegu. W ten sposób wiem, że coś z rzeczywistych danych obrazu przenosi , po prostu nie wyświetla się poprawnie.

I nie ma dźwięku. Dźwięk nie przenosi się (nie sądzę). Teraz ... utknąłem. Poniższe sugestie sugerują, co próbuję zrobić, ale to nie działa:

ffmpeg -ss 0 -lowres 0 -r 24 -i dcp/picture.mxf -vf "xyz2rgb" -i mov/sound.wav -f rawvideo - | ffplay -f rawvideo -vf "xyz2rgb" -s 1998x1080 -

Odpowiedzi:


4

Informacje wideo są wyraźnie przenoszone, ale jest to zielony „śnieg” o odpowiedniej wielkości klatki, z nutami rzeczywistych zdjęć tańczących w okropnym zielonym śniegu.

To musi być format pikseli. Stosujesz xyz2rgbfiltr, który konwertuje przestrzeń kolorów DCP na RGB, a następnie przesyłasz surowe wideo ffplay. Tutaj ponownie zastosujesz xyz2rgbfiltr , co prawdopodobnie powoduje zakłócenia, ponieważ FFmpeg nie ma pojęcia, jak kodowane jest surowe wideo. Zrobi wszystko, co chcesz z wideo, a nawet dwukrotnie przekształci przestrzeń kolorów.


Mam dobre wyniki przesyłając do formatu Matroska ffplayzamiast rawvideo, co daje również możliwość dekodowania dźwięku (patrz poniżej). Format Matroska może zawierać dowolny kodek.

Zauważ, że kolejność opcji ma znaczenie w FFmpeg i prawdopodobnie powinieneś użyć nowszej wersji, ponieważ jest bardziej rygorystyczna co do tego, gdzie umieścisz opcje:

  • Opcje globalne, takie jak -ypierwsze.
  • Następnie określ opcje odczytu plików wejściowych - -r 24wymusza szybkość klatek dla picture.mxfpliku.
  • Następnie określ wszystkie pliki wejściowe.
  • Potem są opcje kodeków, takie jak filtry wideo, szybkość transmisji wideo itp.

W twojej sytuacji sensowne jest po prostu skopiowanie strumienia audio, ponieważ tak naprawdę nie musimy go transkodować. Wideo musi zostać transkodowane, aby można było zastosować filtr.

Coś takiego powinno wystarczyć. Zwróć uwagę, w jaki sposób jawnie ustawiliśmy format wyjściowy jako, matroskai pozwól nam ffplayustalić resztę:

ffmpeg -r 24 -i dcp/picture.mxf -i mov/sound.wav \
-filter:v "xyz2rgb" -b:v 3000k -c:a copy -t 10 -f matroska - | \
ffplay -

Użyłem składni (IMO mniej niejednoznaczna) dla opcji takich jak -filter:vzamiast zamiast -vf, -b:vzamiast -vbi -c:azamiast -acodec.

Jeśli ten format nie działa dla Ciebie, wypróbuj AVI:

ffmpeg -i picture.mxf -i sound.wav -f avi - | ffplay -

Ten pracował dla mnie bez problemu , i to nawet nie wymaga mnie do używania filtra potrzebne. Audio też działało.


slhck, dziękuję za to! OK, mam to: <br/> <br/> Nie można znaleźć odpowiedniego formatu wyjściowego dla '-filter: v' -filter: v: Nieprawidłowy argument <br> <br> ?? (to samo dla -vf). Kodek i filtr znajdują się tutaj: goo.gl/avE1f - autor napisał go i zaprojektował niestandardową instalację ffmpeg (tylko jedna wersja, która działa z tą procedurą i jego plikami), która zawiera zastrzeżony kodek i filtr przestrzeni kolorów, a zatem mogę to odkodować. Niestandardowa instalacja ffmeg musi być w stanie odczytać zastrzeżoną sekwencję obrazów JPEG2000 MJPEG zawartą w obrazie MFX. Jeśli to pomaga zauważyć :)
Bill Rudolph Yaber Russell

Ups, jestem manekinem. Zapomniałem usunąć przerwania „\” w wierszu poleceń. W każdym razie, teraz kiedy wprowadzę twoją sugestię, liczby pokazują przesyłanie strumieniowe, ale żadne okno się nie otwiera, a następnie około 20 sekund później zatrzymuje się z: <br /> <br /> Błąd segmentacji: 1136,0 rozmiar = czas 138kB = 00: 00: 00.08 bitrate = 13445,2 kbit / s
Bill Rudolph Yaber Russell


Dziękuję bardzo za wideo. Po pierwsze, twoje pierwsze polecenie rawvideo ma problem z określeniem niewłaściwego rozmiaru. Twój wkład ma rozmiar 500 x 270 - a przynajmniej tyle ffplay. Również ma swoją moc rgb48lejako format piksela (ze względu na filtr), ale ffplayzakłada się yuv420p, więc trzeba także określić, że: ffplay -f rawvideo -s 500x270 -pix_fmt rgb48le -. Co do segfault: nie mam pojęcia… może mógłbyś gdzieś stworzyć i przesłać mały plik testowy?
slhck

O rany, testuj pliki! Rzeczywiście, dzięki. Powodem dla 500x270 jest to, że podałem „Lores 2”, która dwukrotnie zmniejsza jej rozmiar (aby zmieścił się w uporządkowanym chwycie dla Ciebie :) Wydaje się, że pominąłem jeden. Tytułem tła, ten plik to domowy DCP (pomyśl o „cyfrowym druku filmowym” dla kina, dlatego media są tak dziwnie dziwne), 2K przy 1998x1080 (1,85 piksela kwadratowego). Po wyodrębnieniu sekwencji obrazów jest to poprawne, a ja wczoraj przesłałem paczkę i zagraliśmy ją na DLP w kinie, gdzie zostanie pokazana (na jedną noc na festiwalu) - i było dobrze (uff!).
Bill Rudolph Yaber Russell

3

To nie transkoduje strumieni:

ffmpeg -i video.mkv -i audio.mkv -c copy -map 0:0 -map 1:1 output.mkv

-map 1:1= drugi plik, strumień 1 (zwykle audio). -c copy= -c:v copy -c:a copy. Domyślnie zmiksowany plik jest tak długi, jak dłuższy plik, ale -shortestbyłby tak długi, jak plik krótszy.


Dziękuję za ten wywiad. Nie potrzebuję pliku wyjściowego, ale naprawdę warto wiedzieć o tych przełącznikach.
Bill Rudolph Yaber Russell

3
ffmpeg -lowres 2 -ss 0 -r24 -i MOVIE.MOV -ss 0 -i AUDIO.WAV -vf xyz2rgb -ac: 2 -c:v mpeg2video -f avi - | ffplay -

Dla moich celów pozwala to na szybki przegląd zawartości DCP (Digital Cinema Package), który można zbudować za pomocą narzędzi open source . DCP używa przestrzeni kolorów xyz, więc musisz mieć zainstalowany filtr wideo xyz , w przeciwnym razie nie będziesz mógł go użyć w powyższej linii. (W porządku, będzie wyglądał na mocno zabarwiony na pomarańczowo, nie zobaczysz prawdziwych kolorów.)

Dodałem kodek mpeg2video b / c, chociaż obniżając jakość, jest niski i buforuje trochę, więc działa płynniej na moim komputerze. (Z jakiegoś powodu bez transkodowania najpierw otrzymuję tylko stopklatkę z sekwencji mjpeg jpeg2000 karmiącej się z MXF z szybkością 125 Mb / s, chyba że zacznę od „- ss 0”, czyli na samym początku plik.) Na maszynie BARDZO SZYBKIEJ, bez określania kodeka (usuń „-c: v mpeg2video”), pełnego rozmiaru („-lores 0”) i rozpoczynając od 0 (-ss 0), możesz teoretycznie przejrzeć kino 2K jakość DCP dokładnie taka, jaka jest. Poza wszelkimi specjalnymi instrukcjami zawartymi w plikach XML - napisy lub inne programy. Ale ogólnie. (BTW „-ac: 2” downmixuje 5.1 do 2.0 - chociaż możesz mieć sprzęt obsługujący odsłuch 5.1, w takim przypadku użyj „-c: kopia”.)

Dzięki Matthiasowi z Belle-Nuit i slhck powyżej za PACJENTOWNIE przeprowadzanie mnie przez to. Dziękuję Ci!!!! To jest całkiem przydatne. W rzeczywistości uratował mnie przed potencjalnie zawstydzającym pokazem filmowym w niedzielnym wieczorem w teatrze Aero. Moja numeracja sekwencji obrazów była poza sekwencją - znalazłem to i naprawiłem!

Wow, wszystko to dla jednego wiersza poleceń, który wiedział;)

Cheereo - b worldpoop.com


Mam taki błąd: brak takiego filtra: „xyz2rgb”
Dr.jacky
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.