Jak bezstratnie przekonwertować plik .ts na format głównego nurtu?


13

Mam plik z rozszerzeniem .ts (np. Tutaj jest pierwsze 10 MB ). Chciałbym przekonwertować go na bardziej główny format strumienia (np. Mp4, MPEG2-PS ...), w miarę możliwości bezstratnie (tj. Remuxing).

Przeczytałem Jak przekonwertować pliki .ts na coś przydatnego? pytanie. Próbowałem avidemuxz ustawieniami „kopiuj” dla strumieni wideo i audio oraz formatem kontenera „PS” dla MPEG. Nie powiodło się to z komunikatem o błędzie „Niezgodny dźwięk / DVD, dźwięk musi być 48 kHz MP2 (stereo), AC3, DTS lub LPCM (stereo)”.

Próbowałem także sugerowanego polecenia CLI.

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

Plik wyjściowy ma właściwe wideo, ale bez dźwięku, przynajmniej podczas odtwarzania z VLC. Jest to dość zagadkowe, ponieważ avconvwydaje się, że poprawnie wykrył strumień audio.

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)

Próbowałem także polecenia CLI sugerowanego w komentarzach do innego pytania .

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

Ponownie brak dźwięku w pliku wyjściowym.

EDYCJA: Próbowałem VLC zgodnie z sugestią @Daniel. To było prawie idealne. To było szybkie i przyjazne dla użytkownika. Musiałem tylko kliknąć opcję „Konwertuj / zapisz”, dodaj plik wejściowy, wybierz profil MP4, skonfiguruj kodek wideo i kodek audio do „Zachowaj oryginalną ścieżkę wideo / audio”, wybierz plik docelowy i kliknij „Start”. Film wyglądał idealnie, ale dźwięk był w jakiś sposób nieco uszkodzony, ale może to być spowodowane czymś egzotycznym w strumieniu audio mojego wideo.


Czy próbowałeś VLC? videolan.org/vlc/index.html
— Daniel

Wspomniałeś, że chcesz remuxować, a nie, jeśli to możliwe, ponownie kodować. Czy jesteś pewien, że VLC to tylko remuxing?
— llogan

@LordNeckbeard Dobra uwaga! Jak mogę być pewien?
— Lakton

Nie znam VLC do konwersji, ale dodałem odpowiedź za pomocą ffmpeg.
— llogan

VLC przekształci wszystko w wszystko z wyjątkową bezstratnością. Zasadniczo jesteś ograniczony przez wybrany format.
— Daniel

Odpowiedzi:


22

Matroska (MKV)

Spowoduje to skopiowanie (ponowne zmiksowanie) wszystkich strumieni:

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

-map 0Opcja służy do obejmują wszystkie strumienie. W przeciwnym razie użyje domyślnego zachowania wyboru strumienia, co spowoduje, że zostanie wybrany tylko jeden strumień na typ strumienia. Ponieważ Matroska może obsłużyć większość dowolnych strumieni, które zawarłem -map 0.

MP4

Spowoduje to skopiowanie (ponowne zmiksowanie) wszystkich strumieni:

ffmpeg -i input -map 0 -c copy output.mp4
  • Jeśli twoje formaty wejściowe nie są kompatybilne z MP4, pojawi się błąd.
  • Twój odtwarzacz / urządzenie może nie obsługiwać wszystkich dowolnych, mniej popularnych lub starszych formatów, nawet jeśli są one obsługiwane przez MP4.
  • W razie wątpliwości ponownie zakoduj do H.264 + AAC, jak pokazano poniżej.

Spowoduje to ponowne zakodowanie wideo do H.264 i przesyłanie strumieniowe dźwięku:

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

Następny przykład przekoduje zarówno wideo, jak i audio:

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

Przykład bezstratnego H.264:

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

Pliki bezstratne będą ogromne.

Aby uzyskać więcej informacji, zobacz FFmpeg Wiki: H.264 .


Jeśli chcesz zakodować bezstratny plik MP4, dodaj albo -qp 0, albo -crf 0, jak wspomniano na stronie wiki FFMpeg
— SuperSluether

2
@SuperSluether Lossless tworzy ogromne pliki. Przez „bezstratny” uważam, że lakton oznaczał „remuxing”.
— llogan

Przykładowy plik, który podałem, jest rzeczywiście obcięty. Rzeczywisty plik, który chcę ponownie przetworzyć, jest zbyt duży, aby można go było łatwo udostępnić.
— lacton

1
@lacton Spróbuj muksowania do Matroska: ffmpeg -i 10MB.ts -c copy output.mkv. Dostaniesz błąd: Error parsing AAC extradata, unable to determine samplerate. Dlatego mój przykład MKV ponownie zakodował dźwięk. Zobacz także # 4472: Kopiowanie AAC ze strumienia bez kodowania kończy się niepowodzeniem i lavf / mkv: Napraw remuxing AAC . Jednak żaden z tych elementów nie może dotyczyć dużego, nieskalowanego pliku wejściowego i może działać zgodnie z oczekiwaniami.
— llogan

1
@ LordNeckbeard ffmpeg -i input -c:v copy -c:a aac output.mkvdziałał idealnie. Wideo zostało przemienione, a dźwięk brzmi tak dobrze, jak oryginał, bez lekkiego zepsucia, które dostałem podczas konwersji za pomocą VLC.
— Lakton

3

VideoLAN (VLC - http://www.videolan.org/vlc/index.html ) z łatwością przekształci niemal wszystko w cokolwiek.

Spróbuj. Działa w systemach Linux, Windows i Mac OS X i ma bardzo przyjazny interfejs użytkownika.


Teraz, gdy użyłem VLC do konwersji wideo, poleciłbym to. Dziękuję za tę sugestię. W przypadku mojego pliku .ts prawie zadziałało. Film wyglądał idealnie, ale dźwięk był w jakiś sposób nieco uszkodzony. Może to być spowodowane czymś dość egzotycznym w strumieniu audio mojego wideo. Zredagowałem oryginalne pytanie, aby to uwzględnić.
— lakton

Tak, może działać lepiej, jeśli użyjesz innego subkontenera dla dźwięku wewnątrz MP4. Być może RAW.
— Daniel

0

Jako uzupełnienie drugiej odpowiedzi @llogan - i tak preferowana jest kopia strumieniowa:

Od dłuższego czasu używam niektórych poleceń do wyodrębniania dźwięku bez zmiany nazw plików, które można dostosować do przedstawionych tutaj, aby zintegrować je z menu kontekstowymi menedżerów plików.

Zatem do „demultipleksowania i multipleksowania” bez zmiany nazwy pliku użyj:

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

Dodałem to do niestandardowych akcji Thunara i narzędzia konfiguracji akcji FileManager (Nautilus, Nemo, Caja, PCManFM), jak:

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

ograniczając go do „* .ts” w Thunar i akcjach FileManager video/mp2t.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.