.Ts dosyası kayıpsız bir ana forma dönüştürmek nasıl?


13

.Ts ile biten bir dosya var (örneğin, ilk 10 MB burada ). Mümkünse kayıpsız bir şekilde daha fazla ana akış biçimine (örneğin, mp4, MPEG2-PS ...) dönüştürmek istiyorum (yani, remuxing).

Nasıl .ts dosyaları yararlı bir şeye dönüştürmek okudum ? soru. avidemuxVideo ve ses akışları için "kopya" ayarları ve MPEG için "PS" kapsayıcı biçimi ile denedim . "Uyumsuz ses / DVD için ses 48 kHz MP2 (stereo), AC3, DTS veya LPCM (stereo)" hata iletisiyle başarısız oldu.

Ayrıca önerilen CLI komutunu denedim.

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

Çıktı dosyası en azından VLC ile oynatıldığında doğru videoya sahip, ancak ses yok. Bu oldukça şaşırtıcıdır, çünkü avconvses akışını doğru bir şekilde algılamış gibi görünüyor.

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)

Başka bir sorunun yorumunda önerilen CLI komutunu da denedim .

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

Yine, çıktı dosyasında ses yok.

EDIT: @Daniel tarafından önerildiği gibi VLC denedim . Neredeyse mükemmeldi. Hızlı ve kullanıcı dostu. Sadece "Dönüştür / Kaydet" i tıklatmak, giriş dosyasını eklemek, MP4 profilini seçmek, Video codec bileşenini ve Audio codec bileşenini "Orijinal video / ses kaydını tut" olarak yapılandırmak, bir hedef dosya seçmek ve "Başlat" a tıklamak zorunda kaldım. Video mükemmel görünüyordu, ancak ses bir şekilde biraz bozuktu, ancak videomun ses akışında oldukça egzotik bir şeyden kaynaklanabilir.


VLC'yi denediniz mi? videolan.org/vlc/index.html
Daniel

Mümkünse yeniden kodlamak yerine remux yapmak istediğinizi söylediniz. VLC'nin sadece remuxing olduğundan emin misiniz?
llogan

@LordNeckbeard İyi bir nokta! Nasıl emin olabilirim?
Lacton

Dönüştürmek için VLC'ye aşina değilim, ancak kullanarak bir cevap ekledim ffmpeg.
llogan

VLC, kayıpsızlığı olan her şeyi herhangi bir şeye dönüştürecektir. Temel olarak seçtiğiniz formatla sınırlısınız.
Daniel

Yanıtlar:


22

Matroska (MKV)

Bu, tüm akışların kopyasını (yeniden mux) aktaracaktır :

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

Bu -map 0seçenek tüm akışları dahil etmek için kullanılır. Aksi takdirde , seçilen akış başına yalnızca bir akışla sonuçlanacak olan varsayılan akış seçim davranışını kullanır . Matroska, dahil ettiğim çoğu keyfi akışı işleyebildiğinden -map 0.

MP4

Bu, tüm akışların kopyasını (yeniden mux) aktaracaktır :

ffmpeg -i input -map 0 -c copy output.mp4
  • Giriş biçimleriniz MP4 ile uyumlu değilse bir hata mesajı alırsınız.
  • Oynatıcınız / cihazınız MP4 tarafından desteklense bile tüm keyfi, daha az yaygın veya eski biçimleri desteklemeyebilir.
  • Şüpheniz varsa, aşağıda gösterildiği gibi H.264 + AAC'ye yeniden kodlayın.

Bu, videoyu H.264'e yeniden kodlar ve sesi akış olarak kopyalar:

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

Bir sonraki örnek hem video hem de sesi yeniden kodlayacaktır:

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

Kayıpsız H.264 örneği:

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

Kayıpsız dosyalar çok büyük olacaktır.

Daha fazla bilgi için bkz. FFmpeg Wiki: H.264 .


Kayıpsız bir MP4 dosyasını kodlamak isterseniz, FFMpeg wiki sayfasında belirtildiği gibi -qp 0 veya -crf 0'ı ekleyin: trac.ffmpeg.org/wiki/Encode/H.264
1'de SuperSluether

2
@SuperSluether Kayıpsız büyük dosyalar yapar. "Kayıpsız" laktonun "remuxing" anlamına geldiğine inanıyorum.
llogan

Sağladığım örnek dosya gerçekten kesildi. Remux istediğim gerçek dosya kolay paylaşım için çok büyük.
Lacton

1
matroska içine muxing deneyin @lacton: ffmpeg -i 10MB.ts -c copy output.mkv. Sen hatayı alırsınız: Error parsing AAC extradata, unable to determine samplerate. Bu yüzden MKV örneğim sesi yeniden kodladı. Ayrıca bkz. # 4472: Kodlamadan akıştan AAC kopyası ve lavf / mkv: AAC yeniden düzenlemesini düzeltin . Ancak, bunların hiçbiri büyük, kesilmemiş giriş dosyanız için geçerli olmayabilir ve beklendiği gibi çalışabilir.
llogan

1
@ LordNeckbeard ffmpeg -i input -c:v copy -c:a aac output.mkvmükemmel çalıştı. Video yeniden düzenlendi ve ses, VLC ile dönüştürürken aldığım küçük bir bozulma olmadan orijinal kadar iyi geliyor.
Lacton

3

VideoLAN (VLC - http://www.videolan.org/vlc/index.html ) hemen hemen her şeyi kolayca her şeye dönüştürür.

Bi dene. Linux, Windows ve Mac OS X üzerinde çalışır ve kullanıcı dostu bir arayüze sahiptir.


Video dönüştürme için VLC kullandığım için bunu tavsiye ederim. Bu öneri için teşekkür ederim. .Ts dosyamda neredeyse işe yaradı. Video mükemmel görünüyordu, ancak ses bir şekilde biraz bozuktu. Videomun ses akışında oldukça egzotik bir şey olabilir. Bunu eklemek için orijinal soruyu düzenledim.
Lacton

Evet, mp4 içindeki ses için farklı bir alt kapsayıcı kullanırsanız daha iyi olabilir. Belki RAW.
Daniel

0

@Llogan'ın diğer cevabının bir tamamlayıcısı olarak - yine de bir akış kopyası tercih edilir:

Dosya yöneticilerinin bağlam menülerine entegre olmalarını sağlamak için burada sunulanlara uyarlanabilen dosyaların adını değiştirmeden ses çıkarmak için bazı komutları uzun zamandır kullanıyorum.

Yani, dosya kullanım adını değiştirmeden "demuxing ve muxing" için:

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

Bunu Thunar'ın özel eylemlerine ve FileManager Eylemler Yapılandırma aracına (Nautilus, Nemo, Caja, PCManFM) ekledim:

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

Thunar ve video/mp2tFileManager Eylemlerinde "* .ts" ile sınırlandırılır .

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.