Które kodeki najlepiej nadają się do odtwarzania w programie Windows Media Player w systemie Windows XP?

16

Muszę zakodować krótki film w formacie, który można odtwarzać za pomocą Windows Media Player na Windows XP bez instalowania dodatkowych kodeków. Do procesu przekodowywania używam ffmpeg.

Próbowałem już tego msmpeg4v2kodeka, ale jakość jest okropna (w porównaniu do oryginalnego wideo widać duże „bloki”), więc szukam innych kodeków, które działają od razu i mają co najmniej „ok” jakość.

Ponieważ komentarze wskazują, że może to nie być kodek, ale problem z przepływnością, oto polecenie, którego użyłem:

ffmpeg -i x.flv -vcodec msmpeg4v2 -acodec adpcm_ima_wav x.avi

Wynik:

Input #0, flv, from 'x.flv':
  Metadata:
    moovPosition    : 39337765
    avcprofile      : 100
    avclevel        : 30
    aacaot          : 2
    videoframerate  : 25
    audiochannels   : 2
  Duration: 00:06:19.52, start: 0.000000, bitrate: 836 kb/s
    Stream #0:0: Video: h264 (High), yuv420p, 702x396 [SAR 2596:3679 DAR 354:283], 25 tbr, 1k tbn, 50 tbc
    Stream #0:1: Audio: aac, 48000 Hz, stereo, s16
w:702 h:396 pixfmt:yuv420p tb:1/1000000 sar:2596/3679 sws_param:
Output #0, avi, to 'x.avi':
  Metadata:
    moovPosition    : 39337765
    avcprofile      : 100
    avclevel        : 30
    aacaot          : 2
    videoframerate  : 25
    audiochannels   : 2
    ISFT            : Lavf53.32.100
    Stream #0:0: Video: msmpeg4v2 (MP42 / 0x3234504D), yuv420p, 702x396 [SAR 2596:3679 DAR 354:283], q=2-31, 200 kb/s, 25 tbn, 25 tbc
    Stream #0:1: Audio: adpcm_ima_wav ([17][0][0][0] / 0x0011), 48000 Hz, stereo, s16, 384 kb/s
Stream mapping:
  Stream #0:0 -> #0:0 (h264 -> msmpeg4v2)
  Stream #0:1 -> #0:1 (aac -> adpcm_ima_wav)
Press [q] to stop, [?] for help
frame= 9485 fps=436 q=31.0 Lsize=   31197kB time=00:06:19.48 bitrate= 673.5kbits/s
video:12628kB audio:17913kB global headers:0kB muxing overhead 2.149820%
ThiefMaster
źródło
3
Być może problemem jest twoja szybkość transmisji, a nie kodek. Preferowanym kodekiem dla systemów Windows jest najprawdopodobniej jakiś rodzaj WMV .
Der Hochstapler,
Zobacz moją odpowiedź tam, aby znaleźć link do oficjalnego FAQ firmy Microsoft. Ale w gruncie rzeczy utknąłeś z Windows Media Video - którego FFmpeg nie wyprodukuje. Więc albo to, albo te, które wypróbowałeś. Jak już powiedział @Oliver, wypróbuj wyższą szybkość transmisji lub ustawienie jakości. Zakładam, że używa tylko domyślnego.
slhck
Zaletą kodeka MPEG nie jest rozmiar, ale fakt, że nie jest on pojemnikiem takim jak AVI, a jest to plik strumieniowy, który można nagrać za pomocą kodera sprzętowego, używanego na nośnikach DVD do samodzielnych odtwarzaczy, i można go łatwo edytować. Tak więc, dla jasności, pytasz o format filmu, który możesz zakodować za pomocą FFMPEG, który zapewni odpowiedni rozmiar i będzie działał z Windows Media Player bez żadnych dodatkowych pobrań. Poprawny?
Bon Gart,
Tak. WMV też jest w porządku. Mam tę samą jakość - więc może rzeczywiście coś jest nie tak z bitrate.
ThiefMaster

Odpowiedzi:

12

Ponieważ nie określisz nic innego, Twój strumień wideo jest gotowy do użycia q=2-31, 200 kb/s. Wynikiem jest 673.5kbitsśrednia, która nie jest duża, przynajmniej nie dla kodeków innych niż h.264.

Spróbuj wymusić

  • -b:v 1000Kna przykład pewien bitrate . W starszych wersjach FFmpeg można używać tylko -b.
  • na przykład stały poziom jakości -qscale 2. Tutaj wartość może wynosić od 1 do 31. Wartości rozsądne dla qscalesą w zakresie od 2 do 5 lub więcej. Po prostu spróbuj i zobacz, co osiąga najlepszy wynik.

Kodeki, które naprawdę domyślnie obsługiwane w systemie Windows, to :

Istnieją obecnie setki kodeków audio i wideo. Niektóre zostały utworzone przez Microsoft, ale zdecydowana większość kodeków została stworzona przez inne firmy, organizacje lub osoby fizyczne. Domyślnie system operacyjny Windows i odtwarzacz zawierają wiele najpopularniejszych kodeków, takich jak Windows Media Audio, Windows Media Video i MP3.

Aby uzyskać więcej informacji, zobacz także typy plików multimedialnych obsługiwane przez program Windows Media Player .

Z FFmpeg możesz wypróbować mpeg1video(MPEG-1) lub mpeg2video(MPEG-2) lub msmpeg4(MPEG-4 Part II), ale nie jestem pewien, czy ten ostatni jest nawet powszechnie obsługiwany. Jeśli chcesz grać bezpiecznie, musisz użyć MPEG-1 lub MPEG-2.

slhck
źródło
tak ... to był dość niski bitrate dla pliku MPEG.
Bon Gart,
Heh Muszę powiedzieć, że obecnie jesteśmy naprawdę pobłogosławieni h.264.
slhck
szczególnie biorąc pod uwagę, że patrzysz na 4k do 5k przez 2 dobre godziny na DVD (Oczywiście możesz iść wyżej, ale to zawsze pozostawia mi niezłą przestrzeń na płycie, aby dołączyć plik AVI i obrazy itp.)
Bon Gart
7

Miałem podobny problem z plikiem aac / h264 .mp4, który oryginalnie grał dobrze w Windows Media Player (Windows 7). Po edycji w VirtualDub i zapisaniu w formacie .avi, a następnie konwersji z powrotem do formatu aac / h264 .mp4 przy użyciu ustawień domyślnych ffmpeg, nie będzie już odtwarzany w programie Windows Media Player.

Za pomocą MediaInfo do porównania plików oryginalnych i końcowych zauważyłem, że zastosowano inny profil kodowania i różne ustawienia podpróbkowania kolorów (4: 2: 0, końcowe 4: 4: 4). Przekodowując go za pomocą ffmpeg przy użyciu następującej opcji, WMP mógł poprawnie odtworzyć plik:

ffmpeg  -i edited.avi -pix_fmt yuv420p fixed.mp4
Annihilannic
źródło
1
Zobacz trac.ffmpeg.org/wiki/Encode/H.264#Encodingfordumbplayers, który wspomina o użyciu -pix_fmt yuv420pi wsparciu tego pomysłu.
Użytkownik
Właśnie przetestowałem to na Windows 10. Po prostu dodając, -pix_fmt yuv420pbyłem w stanie otworzyć mp4 w aplikacjach Microsoft (zarówno wbudowany odtwarzacz, jak i Movie Maker).
Nux
0

Ponieważ oba kodeki są już obsługiwane przez kontener AVI, możesz to zrobić

ffmpeg -i x.flv -vcodec copy -acodec copy x.avi

zakładając, że twój XP obsługuje h.264, w przeciwnym razie wybrałbym plik wmv, ten sam kwantyzator i pozwoliłbym ffmpeg wypełnić kodeki. To powinno dać ci prawie identyczną jakość jak oryginał:

ffmpeg -i x.flv -sameq x.wmv
Justin Buser
źródło
2
Jakoś wątpię, że zwykły XP obsługuje h.264
ThiefMaster
2
-sameqnie należy używać do konwersji formatów, które nie mają podobnej skali kwantyzatora. Ta opcja nie oznacza „tej samej jakości”, co sugerowana dokumentacja. Również H.264 w AVI nie jest zalecany (chociaż bezstratny H.264 [bez ramek b] powinien być w porządku).
llogan