Как преобразовать .ts файл в основной формат без потерь?

У меня есть файл, который заканчивается в .ts (например, вот первые 10 МБ). Я хотел бы преобразовать его в более основной потоковый формат (например, mp4, MPEG2-PS...), способом без потерь если возможный (т.е. повторно мультиплексирующий).

Я читал, Как я преобразовываю .ts файлы во что-то полезное? вопрос. Я попробовал avidemux с настройками "копируют" для видеопотоков и аудиопотоков и формата контейнера "PS" для MPEG. Отказавший с сообщением об ошибке "Несовместимое аудио / Для DVD, аудио должен быть MP2 на 48 кГц (стерео), AC3, DTS или LPCM (стерео)".

Я также попробовал предложенную команду CLI.

avconv -i 10MB.ts -vcodec copy -acodec copy 10MB.mpg

Выходной файл имеет правильное видео, но никакой звук, по крайней мере, при проигрывании с VLC. Это является довольно озадачивающим, потому что avconv кажется, правильно обнаружил аудиопоток.

Input #0, mpegts, from '10MB.ts':
  Duration: 00:00:06.36, start: 51523.824800, bitrate: 12563 kb/s
  Program 37888 
    Stream #0.0[0x100]: Video: mpeg2video (Main), yuv420p, 1440x1080 [PAR 4:3 DAR 16:9], 20000 kb/s, 29.97 fps, 29.97 tbr, 90k tbn, 59.94 tbc
    Stream #0.1[0x110]: Audio: aac, 0 channels, fltp, 144 kb/s
    Stream #0.2[0x130]: Data: [6][0][0][0] / 0x0006
    Stream #0.3[0x138]: Data: [6][0][0][0] / 0x0006
    Stream #0.4[0x140]: Data: [13][0][0][0] / 0x000D
    Stream #0.5[0x160]: Data: [13][0][0][0] / 0x000D
    Stream #0.6[0x161]: Data: [13][0][0][0] / 0x000D
    Stream #0.7[0x162]: Data: [13][0][0][0] / 0x000D
    Stream #0.8[0x170]: Data: [13][0][0][0] / 0x000D
    Stream #0.9[0x171]: Data: [13][0][0][0] / 0x000D
    Stream #0.10[0x172]: Data: [13][0][0][0] / 0x000D
Output #0, mpeg, to '10MB.mpg':
  Metadata:
    encoder         : Lavf54.20.4
    Stream #0.0: Video: mpeg2video, yuv420p, 1440x1080 [PAR 4:3 DAR 16:9], q=2-31, 20000 kb/s, 90k tbn, 90k tbc
Stream mapping:
  Stream #0:0 -> #0:0 (copy)

Я также попробовал команду CLI, предложенную в комментариях другого вопроса.

avconv -i 10MB.ts -c:v copy -c:a libfaac 10MB.mp4

Снова, никакой звук в выходном файле.

Править: Я попробовал VLC, как предложено @Daniel. Это было почти прекрасно. Это было быстро и удобно для пользователя. Я просто должен был нажать на "Convert / Save", добавить входной файл, выбрать профиль MP4, настроить Видеокодек и Аудиокодек для "Хранения исходного видео / аудиотрек", выбирают целевой файл, и нажимают на "Start". Видео выглядело прекрасным, но аудио было так или иначе немного повреждено, но оно могло бы быть вызвано чем-то довольно экзотическим в аудиопотоке моего видео.

10
задан 8 January 2019 в 18:21

3 ответа

Matroska (MKV)

Это будет потоковая копия (перемультиплексор) все потоки:

ffmpeg -i input -map 0 -c copy output.mkv

-map 0 опция используется для включения всех потоков. Иначе это будет использовать значение по умолчанию потоковый выбор поведение, которое только привело бы к одному потоку на потоковый выбираемый тип. Так как Matroska может обработать большинство произвольных потоков, которые я включал -map 0.

MP4

Это повторно закодирует видео к H.264, и поток копируют аудио:

ffmpeg -i input.ts -c:v libx264 -c:a copy output.mp4

следующий пример повторно закодирует и видео и аудио:

ffmpeg -i input.ts -c:v libx264 -c:a aac output.mp4

пример H.264 Без потерь:

ffmpeg -i input.ts -c:v libx264 -crf 0 -c:a copy output.mp4

файлы Без потерь будут огромны.

См. Wiki FFmpeg: H.264 для большего количества информации

16
ответ дан 16 November 2019 в 05:30

VideoLAN (VLC - http://www.videolan.org/vlc/index.html ) легко преобразует примерно что-либо во что-либо.

Дают ему выстрел. Это работает на Linux, Windows и Mac OS X, и имеет очень удобный для пользователя интерфейс.

3
ответ дан 16 November 2019 в 05:30

В качестве дополнения к другому ответу от @llogan - поскольку потоковая копия в любом случае предпочтительнее:

Я уже давно использую некоторые команды для извлечения звука без изменения имени файлы, которые можно адаптировать к представленным здесь, чтобы интегрировать в контекстные меню файловых менеджеров.

Итак, для «демультиплексирования и мультиплексирования» без изменения имени используемого файла:

ffmpeg -i "$0" -map 0 -c copy "${0%%.*}".mkv

Я добавил это в настраиваемые действия Thunar и в инструмент настройки действий FileManager (Nautilus, Nemo, Caja, PCManFM), например:

sh -c 'ffmpeg -i "$0" -map 0 -c copy "${0%%.*}".mkv' %f

при ограничении его до "* .ts" в Thunar и video / mp2t в действиях FileManager.


Что касается приложений с графическим интерфейсом пользователя, некоторые из них могут обрабатывать без перекодирования, копируя потоки в другой контейнер, например mkv или mp4.

Я использую MKVToolNix (вывод только mkv) и dmMediaConverter (mkv, mp4 и любой формат, поддерживаемый ffmpeg).

3
ответ дан 11 February 2020 в 22:25

Другие вопросы по тегам:

Похожие вопросы: