У меня есть файл, который заканчивается в .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". Видео выглядело прекрасным, но аудио было так или иначе немного повреждено, но оно могло бы быть вызвано чем-то довольно экзотическим в аудиопотоке моего видео.
Это будет потоковая копия (перемультиплексор) все потоки:
ffmpeg -i input -map 0 -c copy output.mkv
-map 0
опция используется для включения всех потоков. Иначе это будет использовать значение по умолчанию потоковый выбор поведение, которое только привело бы к одному потоку на потоковый выбираемый тип. Так как Matroska может обработать большинство произвольных потоков, которые я включал -map 0
.
Это повторно закодирует видео к 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 для большего количества информации
VideoLAN (VLC - http://www.videolan.org/vlc/index.html ) легко преобразует примерно что-либо во что-либо.
Дают ему выстрел. Это работает на Linux, Windows и Mac OS X, и имеет очень удобный для пользователя интерфейс.
В качестве дополнения к другому ответу от @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).