Aby zautomatyzować skrypty do manipulowania plikami wideo, chciałbym uzyskać listę obsługiwanych kodeków audio - najlepiej z ich nazwami koderów - w oparciu o kodek wideo i format kontenera (może być również znany jako muxer lub demuxer), jak to jest obsługiwane przez ffmpeg
.
Sprawdź kodek wideo za pomocą:
ffprobe -v error -select_streams v:0 -show_entries stream=codec_name \
-of default=noprint_wrappers=1:nokey=1 video.mp4
który wraca h264
. Sprawdź format kontenera, używając:
ffprobe -v error -select_streams v:0 -show_format_entry format_name \
-of default=noprint_wrappers=1:nokey=1 video.mp4
Który wraca mov,mp4,m4a,3gp,3g2,mj2
.
Zakładamy, że wejściowy plik wideo nie ma strumienia audio, więc nie możemy po prostu użyć:
ffprobe -v error -select_streams a:0 -show_entries \
stream=codec_name -of default=noprint_wrappers=1:nokey=1 video.mp4
które w przeciwnym razie wróciłyby aac
.
Polecenia w https://stackoverflow.com/a/20587693/188159 mogą mieć rozwiązanie, ale nie udało mi się znaleźć sposobu ich filtrowania.
ffmpeg
automatycznie wybierzesz odpowiedni koder audio w oparciu o format wyjściowy. Możesz przeglądać domyślne kodery dla twojegoffmpeg
, za pomocąffmpeg -h muxer=mp4
. Nie jestem pewien, dlaczego potrzebujesz listy obsługiwanych formatów audio na format wyjściowy kontenera. Twoje polecenia „format” i „kodek” są błędnie oznaczone (zamień je).