Как отключить не-1ые аудиопотоки / треки в FFmpeg для файлов mp4

Моя конечная цель - создать одну команду FFmpeg, которая преобразует мои файлы h264.DTS.mkv в формат, совместимый с моим AppleTV, с сохранением исходного качества.

Я почти у цели, но я не смог понять, как отключить потоки / треки.

Пока у меня есть:

ffmpeg -i FILE \
 -y -strict experimental \
 -map 0:0 -map 0:1 -map 0:1 -map 0:1 -map 0:2 \
 -c:0 copy -c:1 aac -ac:a 2 -c:2 ac3 -ac:a 6 -c:3 copy -c:4 mov_text \
 OUTPUT

Это создает выходной файл, который выглядит так:

  1. Видеодорожка H264 (включена) [скопировано из оригинала]
  2. 2-канальная звуковая дорожка AAC (включена)
  3. 6-канальная звуковая дорожка AC3 (включена)
  4. 6-канальная звуковая дорожка DTS (включена) [скопировано с оригинала]
  5. дорожка субтитров (включена)

Проблема в том, что мне нужно, чтобы это выглядело так:

  1. 1 видеодорожка H264 (скопирована с оригинала) (включена)
  2. 1 2-канальная звуковая дорожка AAC (включена)
  3. 1 6-канальная звуковая дорожка AC3 (отключена)
  4. 1 6-канальная звуковая дорожка DTS (скопирована с оригинала) (отключена)
  5. 1 дорожка субтитров (включена)

Следовательно, мне нужно знать, как я могу отключить не-1ые аудиопотоки / треки.

Из того, что я прочитал, это часть атома заголовка дорожки в местоположении "tkhd.flags". Но я не смог понять, как установить это с помощью аргументов командной строки.

Любая помощь будет принята с благодарностью.


person Dipesh    schedule 18.01.2013    source источник


Ответы (3)


Здравствуйте, Дипеш, это решит вашу проблему.

Эта проблема

Вы стремитесь указать, какой аудиопоток будет использоваться по умолчанию, при этом отключив этот флаг для всех нежелательных аудиопотоков. Это решение будет аналогичным при попытке выбрать, какая (если есть) дорожка субтитров будет по умолчанию и / или, возможно, принудительной.

Общее решение

FFmpeg автоматически помечает все потоки default без вмешательства пользователя. Поэтому нам сначала нужно пометить все потоки -default, а затем пометитьdefault тот, который требуется по умолчанию. В качестве примера воспользуемся аудиопотоком.

-disposition:a -default -disposition:a:0 default

Результат приведенного выше оператора помечает все аудиопотоки -default и первый аудиопоток как default.

Подробную информацию о его использовании можно найти в документации FFmpeg в разделе 5.4 Основные параметры.

Конкретное решение

ffmpeg -i FILE \
 -y -strict experimental \
 -map 0:0 -map 0:1 -map 0:1 -map 0:1 -map 0:2 \
 -c:0 copy -c:1 aac -ac:a 2 -c:2 ac3 -ac:a 6 -c:3 copy -c:4 mov_text \
 -disposition:a -default -disposition:a:0 default \
 OUTPUT

В решении -disposition:a -default помечает все аудиопотоки в выходном файле как не по умолчанию. В то время как -disposition:a:0 default помечает первый аудиопоток в выходном файле по умолчанию.

person Lore    schedule 16.12.2016

Вы проверили это: http://ffmpeg.org/trac/ffmpeg/wiki/How%20to%20use%20-map%20option Просто не копируйте потоки, которые вам не нужны, в вывод.

ffmpeg -i FILE \
 -y -strict experimental \
 -map 0:0 -map 0:1 -map 0:4 \
 -c:0 copy -c:1 aac -ac:a 2 -c:4 mov_text \
 OUTPUT

Надеюсь, я правильно понял ваш вопрос!

person d33pika    schedule 21.01.2013
comment
Я думаю, вы неправильно поняли, однако мне нужны все вышеперечисленные выходные потоки с отключенными некоторыми аудиопотоками. В контейнере mp4 отключен один из возможных заголовков потока. Отключенный поток по-прежнему воспроизводится, однако проигрыватель не будет воспроизводить его по умолчанию, для этого требуется, чтобы пользователь переключился на этот поток. Один из примеров использования этого потока - аудиодорожки на разных языках в потоке. В моем случае я использую эту функцию для получения нескольких качественных аудиопотоков. - person Dipesh; 28.01.2013
comment
Какой аудиопоток проигрывает плеер по умолчанию? Не выбирает ли первое? В таком случае, разве вы не этого хотите? - person d33pika; 29.01.2013

Отключение звуковой дорожки не означает ее полное удаление.

посмотреть картинку

введите здесь описание изображения

person rodon    schedule 09.05.2016
comment
Что должно быть изображено на картинке (поскольку она на русском языке) и как это отвечает на вопрос? - person NSNoob; 09.05.2016