Як конвертувати .ts файл у основний формат без втрат?


13

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

Я прочитав, як перетворити .ts файли в щось корисне? питання. Я спробував avidemuxз налаштуваннями "копіювати" для потоків відео та аудіо та форматом контейнера "PS" для MPEG. Це не вдалося з повідомленням про помилку "Несумісне аудіо / для DVD, аудіо має бути 48 кГц MP2 (стерео), 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

Знову ж, у вихідному файлі немає звуку.

EDIT: Я спробував VLC, як запропонував @Daniel. Це було майже ідеально. Це було швидко та зручно для користувачів. Мені просто довелося натиснути «Перетворити / зберегти», додати вхідний файл, вибрати профіль MP4, налаштувати відеокодек та аудіокодек на «Зберігати оригінальний відео / аудіозапис», вибрати файл призначення та натиснути «Пуск». Відео виглядало ідеально, але аудіо було якось трохи пошкоджене, але воно може бути викликане чимось досить екзотичним у аудіопотоці мого відео.


Ви пробували VLC? videolan.org/vlc/index.html
Даніель

Ви згадали, що хочете ремуксувати, а не перекодувати, якщо можливо. Ви впевнені, що VLC лише ремуксує?
логікан

@LordNeckbeard Добре! Як я можу бути впевнений?
лактон

Я не знайомий з VLC для перетворення, але я додав відповідь, використовуючи ffmpeg.
логікан

VLC перетворить що-небудь у що завгодно з видатними втратами. В основному ви обмежені вибраним вами форматом.
Даніель

Відповіді:


22

Матроска (MKV)

Це передасть потокове копіювання (повторне копіювання ) всіх потоків:

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

-map 0Параметр використовується , щоб включити всі потоки. В іншому випадку він використовуватиме поведінку вибору потоку за замовчуванням, що призведе до вибору лише одного потоку на тип потоку. Оскільки Matroska може обробляти більшість довільних потоків, які я включив -map 0.

MP4

Це передасть потокове копіювання (повторне копіювання ) всіх потоків:

ffmpeg -i input -map 0 -c copy output.mp4
  • Якщо формати ваших входів не сумісні з MP4, ви отримаєте помилку.
  • Ваш програвач / пристрій може не підтримувати всі довільні, менш поширені або застарілі формати, навіть якщо вони підтримуються MP4.
  • Якщо є сумніви, перекодуйте до H.264 + AAC, як показано нижче.

Це перекодуватиме відео в 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

Файли без втрат будуть величезними.

Додаткову інформацію див. У FFmpeg Wiki: H.264 .


Якщо ви хочете кодувати MP4-файл без втрат, додайте або -qp 0 або -crf 0, як згадується на сторінці вікі FFMpeg
SuperSluether

2
@SuperSluether Lossless створює величезні файли. Я вважаю, що "без втрат" лактон означав "ремуксацію".
логіан

Файл зразка, який я надав, справді усічений. Фактичний файл, який я хочу ремуксувати, занадто великий, щоб легко ділитися.
лактон

1
@lacton Спробуйте мультиплексування в Matroska: ffmpeg -i 10MB.ts -c copy output.mkv. Ви отримаєте повідомлення про помилку: Error parsing AAC extradata, unable to determine samplerate. Ось чому мій приклад MKV перекодував аудіо. Також див. # 4472: Копія AAC з потоку без кодування виходить з ладу та lavf / mkv: виправити перезавантаження AAC . Однак нічого з цього не може застосовуватися до вашого великого невченого вхідного файлу, і він може працювати як слід.
логікан

1
@LordNeckbeard ffmpeg -i input -c:v copy -c:a aac output.mkvвідмінно працював. Відео було повторно відтворене, і звук звучить так само добре, як оригінал, без легкої пошкодження, яку я отримав при конвертації з VLC.
лактон

3

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

Дай постріл. Він працює на Linux, Windows та Mac OS X і має дуже зручний інтерфейс.


Тепер, коли я використовував VLC для перетворення відео, я б рекомендував його. Дякую за цю пропозицію. Для мого .ts файлу він майже працював. Відео виглядало ідеально, але аудіо було якось трохи зіпсовано. Це може бути викликане чимось досить екзотичним в аудіо потоці мого відео. Я відредагував оригінальне запитання, щоб включити це.
лактон

Так, це може працювати краще, якщо ви використовуєте інший підконтейнер для аудіо в mp4. Можливо, RAW.
Даніель

0

Як доповнення до іншої відповіді від @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 Actions.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.