Karaoke to system muzyczny, który odtwarza nagrany akompaniament do popularnej piosenki. Wykonawca śpiewa ją na żywo, zwykle śledząc słowa na ekranie. Słowo oznacza też sam taki występ.
Japońskie słowo łączy kara, czyli puste, z skróconą formą słowa oznaczającego orkiestrę. Dosłownie karaoke znaczy pusta orkiestra.
W raporcie metadanych Karaoke to pole o węższym znaczeniu. Nazwa pochodzi od ffprobe, czytnika plików w projekcie FFmpeg.
FFmpeg wymienia każdą część pliku jako osobny strumień. Każdy strumień dostaje zestaw flag zwany disposition, takich jak Karaoke i Attached Pic. Dokumentacja FFmpeg definiuje tę flagę w kilku słowach: strumień zawiera dźwięk karaoke.
Jak wyglądają wartości
Opcja -show_streams czytnika ffprobe wypisuje tę flagę dla każdego strumienia, nawet w plikach bez muzyki. W tym wyniku flaga ma 2 wartości:
0: flaga jest wyłączona1: flaga jest włączona, więc strumień jest oznaczony jako audio karaoke
Dokładny zapis zależy od raportu. Raport JSON pokazuje "karaoke": 0, a raport w zwykłym tekście pokazuje DISPOSITION:karaoke=0.
Które pliki to zawierają
FFmpeg odczytuje i zapisuje tę flagę w niektórych formatach, a w innych nie, jak pokazują te przykłady:
- NUT: strumień może przechowywać słowo
karaokew znacznikuDisposition - MKV: specyfikacja Matroska ma flagi takie jak default, forced i commentary, ale nie ma flagi karaoke
- MP4: lista ról ścieżek MP4 w FFmpeg nie ma wpisu karaoke
- Audio AC-3 i E-AC-3: dane audio mają typ usługi, a jedna wartość oznacza karaoke
FFmpeg zamienia typ usługi karaoke na flagę, gdy dźwięk ma 2 lub więcej kanałów, także w pliku MKV lub MP4. W przypadku innych formatów audio strumień w pliku MKV lub MP4 zwykle zgłasza 0, nawet jeśli piosenka jest wersją karaoke.
Niektóre piosenki karaoke używają własnego typu pliku. Library of Congress podaje rozszerzenie pliku kar dla plików karaoke MIDI.
Gdzie są zapisane słowa piosenki
Flaga Karaoke nie przechowuje słów, tylko liczbę 0 lub 1. FFmpeg ma osobną flagę Lyrics dla strumienia z tekstem piosenki. Sam tekst jest w innym miejscu w każdym formacie:
- MP3: ramka ID3v2 USLT przechowuje tekst piosenki bez informacji o czasie, a ramka SYLT zapisuje znacznik czasu przy każdej sylabie lub jednostce tekstu
- MKV: znacznik
LYRICSprzechowuje słowa, gdy czas nie jest znany, lub jako kopię ścieżki napisów
Skąd pochodzi wartość
FFmpeg ustawia flagi, gdy tworzy każdy strumień, lub później, gdy go analizuje. Dla pliku NUT FFmpeg odczytuje flagi ze znacznika Disposition. Dla dźwięku AC-3 FFmpeg odczytuje typ usługi z danych audio.
Dzięki opcji FFmpeg -disposition możesz samodzielnie ustawić flagę. Domyślnie FFmpeg kopiuje flagi ze strumienia wejściowego do strumienia wyjściowego.
Flaga przechowywana wyłącznie w kontenerze trafi do nowego pliku tylko wtedy, gdy nowy format potrafi ją zapisać. Moduł zapisu MKV w FFmpeg nie ma obsługi tej flagi.
Dlaczego ma to znaczenie
Plik może mieć kilka strumieni audio, a ta flaga może oznaczyć jeden z nich jako audio karaoke. W poleceniach FFmpeg selektor strumieni disp:karaoke wybiera strumienie z tą flagą.
Flaga jest tylko etykietą, więc nie potwierdza, co naprawdę słychać. Wartość 0 nie dowodzi, że piosenka nie ma wersji karaoke ani tekstu.