Я пытаюсь найти информацию о том, как перекодировать файл в несколько выходов за один раз, но, похоже, не могу. Большинство результатов, которые я нахожу, описывают обратное: объединение нескольких файлов в один.
Вот ситуация:
У меня есть IP-камера, которая принимает "дамп" или необработанный снимок (хотя я не люблю говорить "необработанный", потому что он может быть ошибочно принят в формате .raw), который состоит из двух потоков: видео H264 и аудио PCM ,
Мне нужно перекодировать этот захват «raw /dump» в три файла MP4, два из них с аудио и видео (H264+AAC) и третий с только аудио AAC; более конкретно:
Файл с тем же разрешением, что и оригинал, обеспечивает скорость 30 кадров в секунду, звук aac со скоростью 128 кбит / с и формат пикселя - yuv420p (пиксельный формат "сброшенного" видеопотока - yuvj420p, что делает поток в невоспроизводимом виде непосредственно в Chrome .. по крайней мере на данный момент).
Файл с теми же функциями, что и выше, но с половиной разрешения.
- Файл, содержащий только аудио AAC.
У меня есть команда, чтобы заставить первый файл работать довольно хорошо (хотя у меня есть кто-то для этого комментария, это будет с благодарностью оценено):
/usr/bin/avconv "/home/borrajax/Videos/original.dump" \
-acodec libvo_aacenc -ac 1 -ab 128k -ar 44100 \
-vcodec libx264 -preset fast -r 30 -pix_fmt yuv420p \
"/home/borrajax/Videos/transcoded.mp4"
Возможно, я мог бы сохранить некоторые параметры, но проблема в том, что конфигурацию камеры можно изменить, поэтому мне нужно убедиться, что полученный .mp4 имеет нужный мне формат (именно поэтому я указал так много)
Я думаю, что это , вероятно , хорошая идея (я говорю "наверное" , потому что я не знаю , что угодно о кодировании видео) пытается перекодировать три файла в одном кадре, повторное использование транскодированных данных , чтобы сэкономить время.
Например: видео с половиной разрешения оригинального будет иметь точно такой же звук, что и "большое", поэтому нет необходимости перекодировать его снова. Очевидно, то же самое относится и к аудиофайлу. Там не должно быть необходимости транскодировать три раза. Кроме того, возможно (и здесь, я не знаю, что будет лучше), я также могу повторно использовать видео поток. Поскольку мне нужно два видео с другим форматом кадров в секунду и пикселем, отличным от исходного, возможно, его стоит перекодировать только один раз (как я уже делал в приведенной выше команде), а затем захватить тот видеопоток, который уже имеет формат пикселей 30 кадров в секунду и yuv420p, и просто сделать его разрешение наполовину.
Я думаю, это будет хорошая идея, чтобы подвести итог ... как я могу цепь (труба?) несколько выходов с avconv, применяя различные параметры для каждого?
С помощью:
- Ubuntu 12.04 LTS
- Версия avconv 0.8.5-4:0.8.5-0ubuntu0.12.04.1