Bagaimana cara mengonversi file .ts ke format mainstream tanpa kehilangan?

13

Saya memiliki file yang berakhiran .ts (mis., Di sini adalah 10 MB pertama ). Saya ingin mengonversinya ke format aliran yang lebih utama (misalnya, mp4, MPEG2-PS ...), dengan cara lossless jika memungkinkan (yaitu, remuxing).

Saya telah membaca Bagaimana cara mengkonversi file .ts menjadi sesuatu yang bermanfaat? pertanyaan. Saya mencoba avidemuxdengan pengaturan "copy" untuk aliran video dan audio, dan format wadah "PS" untuk MPEG. Itu gagal dengan pesan kesalahan "Audio tidak kompatibel / Untuk DVD, audio harus 48 kHz MP2 (stereo), AC3, DTS atau LPCM (stereo)".

Saya juga mencoba perintah CLI yang disarankan.

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

File output memiliki video yang tepat, tetapi tidak ada suara, setidaknya ketika diputar dengan VLC. Ini cukup membingungkan, karena avconvsepertinya telah mendeteksi aliran audio dengan benar.

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)

Saya juga mencoba perintah CLI yang disarankan di komentar pertanyaan lain .

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

Sekali lagi, tidak ada suara di file output.

EDIT: Saya mencoba VLC seperti yang disarankan oleh @Daniel. Itu hampir sempurna. Itu cepat dan ramah pengguna. Saya hanya perlu mengklik "Konversi / Simpan", tambahkan file input, pilih profil MP4, konfigurasikan codec Video dan codec Audio ke "Simpan video / audio track asli", pilih file tujuan, dan klik "Mulai". Video itu terlihat sempurna, tetapi audionya entah bagaimana sedikit rusak, tetapi mungkin disebabkan oleh sesuatu yang cukup eksotis dalam aliran audio video saya.

lakton
sumber
Sudahkah Anda mencoba VLC? videolan.org/vlc/index.html
Daniel
Anda menyebutkan Anda ingin melakukan remux, bukan menyandikan ulang jika memungkinkan. Apakah Anda yakin VLC hanya remuxing?
Logan
@ LordNeckbeard Poin bagus! Bagaimana saya bisa yakin?
lacton
Saya tidak terbiasa dengan VLC untuk mengkonversi, tetapi saya menambahkan jawaban menggunakan ffmpeg.
Logan
VLC akan mengkonversi apa saja menjadi apa saja dengan losslessness yang luar biasa. Pada dasarnya Anda dibatasi oleh format yang Anda pilih.
Daniel

Jawaban:

22

Matroska (MKV)

Ini akan mengalirkan salinan (re-mux) semua aliran:

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

The -map 0opsi digunakan untuk memasukkan semua aliran. Jika tidak, ia akan menggunakan perilaku pemilihan aliran default yang hanya akan menghasilkan satu aliran per jenis aliran dipilih. Karena Matroska dapat menangani sebagian besar aliran acak yang saya masukkan -map 0.

MP4

Ini akan mengalirkan salinan (re-mux) semua aliran:

ffmpeg -i input -map 0 -c copy output.mp4
  • Jika format input Anda tidak kompatibel dengan MP4, Anda akan mendapatkan kesalahan.
  • Player / perangkat Anda mungkin tidak mendukung semua format yang sewenang-wenang, kurang umum, atau lawas walaupun didukung oleh MP4.
  • Jika ragu, enkode ulang ke H.264 + AAC seperti yang ditunjukkan di bawah ini.

Ini akan menyandikan ulang video ke H.264 dan streaming menyalin audio:

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

Contoh berikutnya akan menyandikan ulang video dan audio:

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

Contoh H.264 lossless:

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

File lossless akan sangat besar.

Lihat FFmpeg Wiki: H.264 untuk info lebih lanjut.

llogan
sumber
Jika Anda ingin menyandikan file MP4 tanpa kehilangan, tambahkan -qp 0 atau -crf 0, seperti yang disebutkan di halaman wiki FFMpeg: trac.ffmpeg.org/wiki/Encode/H.264
SuperSluether
2
@SuperSluether Lossless membuat file besar. Dengan "lossless", saya percaya lacton berarti "remuxing".
Logan
File sampel yang saya berikan memang terpotong. File aktual yang ingin saya remux terlalu besar untuk memudahkan berbagi.
lacton
1
@lacton Coba muxing ke Matroska: ffmpeg -i 10MB.ts -c copy output.mkv. Anda akan mendapatkan error: Error parsing AAC extradata, unable to determine samplerate. Itu sebabnya contoh MKV saya mengkodekan ulang audio. Juga lihat # 4472: Salinan AAC dari aliran tanpa penyandian gagal dan lavf / mkv: Perbaiki remuxing AAC . Namun, semua ini mungkin tidak berlaku untuk file input besar Anda yang tidak dikunci dan dapat berfungsi seperti yang diharapkan.
Logan
1
@ LordNeckbeard ffmpeg -i input -c:v copy -c:a aac output.mkvbekerja dengan sempurna. Video remuxed, dan audio terdengar sebagus aslinya, tanpa sedikit korupsi yang saya dapatkan ketika mengkonversi dengan VLC.
lacton
3

VideoLAN (VLC - http://www.videolan.org/vlc/index.html ) akan dengan mudah mengubah apa saja menjadi apa saja.

Cobalah. Ini berjalan di Linux, Windows, dan Mac OS X, dan memiliki antarmuka yang sangat user-friendly.

Daniel
sumber
Sekarang saya telah menggunakan VLC untuk konversi video, saya akan merekomendasikannya. Terima kasih atas saran ini. Untuk file .ts saya, hampir berhasil. Video itu terlihat sempurna, tetapi audionya agak rusak. Mungkin disebabkan oleh sesuatu yang sangat eksotis di aliran audio video saya. Saya mengedit pertanyaan asli untuk memasukkan ini.
lacton
Ya, itu mungkin bekerja lebih baik jika Anda menggunakan subkontraktor yang berbeda untuk audio di dalam mp4. Mungkin RAW.
Daniel
0

Sebagai pelengkap jawaban lain oleh @llogan - sebagai salinan aliran lebih disukai:

Saya sudah lama menggunakan beberapa perintah untuk mengekstrak audio tanpa mengubah nama file, yang dapat disesuaikan dengan yang disajikan di sini, agar terintegrasi dalam menu konteks manajer file.

Jadi, untuk "demuxing dan muxing" tanpa mengubah nama file yang digunakan:

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

Saya telah menambahkan itu ke tindakan khusus Thunar dan ke alat Konfigurasi Tindakan FileManager (Nautilus, Nemo, Caja, PCManFM), seperti:

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

sambil membatasi ke "* .ts" di Thunar dan video/mp2tdi FileManager Actions.

Cipricus
sumber