Làm cách nào để chuyển đổi tập tin .ts thành định dạng chính thống một cách dễ dàng?


12

Tôi có một tệp kết thúc bằng .ts (ví dụ: đây là 10 MB đầu tiên ). Tôi muốn chuyển đổi nó sang định dạng luồng chính hơn (ví dụ: mp4, MPEG2-PS ...), theo cách không mất mát nếu có thể (nghĩa là làm lại).

Tôi đã đọc Làm thế nào để tôi chuyển đổi tập tin .ts thành một cái gì đó hữu ích? câu hỏi Tôi đã thử avidemuxvới cài đặt "sao chép" cho luồng video và âm thanh và định dạng chứa "PS" cho MPEG. Không thành công với thông báo lỗi "Âm thanh không tương thích / Đối với DVD, âm thanh phải là 48 kHz MP2 (âm thanh nổi), AC3, DTS hoặc LPCM (âm thanh nổi)".

Tôi cũng đã thử lệnh CLI được đề xuất.

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

Tệp đầu ra có video phù hợp, nhưng không có âm thanh, ít nhất là khi được phát bằng VLC. Điều này khá khó hiểu, vì avconvdường như đã phát hiện chính xác luồng âm thanh.

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)

Tôi cũng đã thử lệnh CLI được đề xuất trong các bình luận của một câu hỏi khác .

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

Một lần nữa, không có âm thanh trong tập tin đầu ra.

EDIT: Tôi đã thử VLC theo đề xuất của @Daniel. Nó gần như hoàn hảo. Nó rất nhanh và thân thiện với người dùng. Tôi chỉ cần nhấp vào "Chuyển đổi / Lưu", thêm tệp đầu vào, chọn cấu hình MP4, định cấu hình Bộ giải mã video và Bộ giải mã âm thanh để "Giữ bản nhạc / video gốc", chọn tệp đích và nhấp vào "Bắt đầu". Video trông hoàn hảo, nhưng âm thanh bị lỗi đôi chút, nhưng nó có thể được gây ra bởi một thứ gì đó khá kỳ lạ trong luồng âm thanh của video của tôi.


Bạn đã thử VLC chưa? videolan.org/vlc/index.html
Daniel

Bạn đã đề cập rằng bạn muốn làm lại, không mã hóa lại nếu có thể. Bạn có chắc chắn VLC chỉ được làm lại?
llogan

@LordNeckbeard Điểm tốt! Làm thế nào tôi có thể chắc chắn?
Lacton

Tôi không quen với VLC để chuyển đổi, nhưng tôi đã thêm một câu trả lời bằng cách sử dụng ffmpeg.
llogan

VLC sẽ chuyển đổi bất cứ điều gì thành bất cứ điều gì với sự mất mát nổi bật. Về cơ bản bạn bị giới hạn bởi định dạng bạn đã chọn.
Daniel

Câu trả lời:


20

Matroska (MKV)

Điều này sẽ truyền bản sao (re-mux) tất cả các luồng:

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

Các -map 0tùy chọn được sử dụng để bao gồm tất cả các dòng. Mặt khác, nó sẽ sử dụng hành vi chọn luồng mặc định sẽ chỉ dẫn đến một luồng cho mỗi loại luồng được chọn. Vì Matroska có thể xử lý hầu hết các luồng tùy ý mà tôi đưa vào -map 0.

MP4

Điều này sẽ truyền bản sao (re-mux) tất cả các luồng:

ffmpeg -i input -map 0 -c copy output.mp4
  • Nếu các định dạng đầu vào của bạn không tương thích với MP4, bạn sẽ gặp lỗi.
  • Trình phát / thiết bị của bạn có thể không hỗ trợ tất cả các định dạng tùy ý, ít phổ biến hoặc di sản ngay cả khi chúng được MP4 hỗ trợ.
  • Nếu nghi ngờ, hãy mã hóa lại thành H.264 + AAC như bên dưới.

Điều này sẽ mã hóa lại video thành H.264 và truyền phát bản sao âm thanh:

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

Ví dụ tiếp theo sẽ mã hóa lại cả video và âm thanh:

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

Ví dụ H.264 lossless:

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

Các tập tin lossless sẽ rất lớn.

Xem FFmpeg Wiki: H.264 để biết thêm.


Nếu bạn muốn mã hóa tệp MP4 không mất dữ liệu, hãy thêm -qp 0 hoặc -crf 0, như được đề cập trên trang wiki FFMpeg: trac.ffmpeg.org/wiki/Encode/H.264
SuperSluether

1
@SuperSluether Lossless tạo ra các tệp lớn. Bằng "lossless", tôi tin rằng lacton có nghĩa là "làm lại".
llogan

Các tập tin mẫu tôi cung cấp thực sự bị cắt ngắn. Các tập tin thực tế tôi muốn làm lại quá lớn để chia sẻ dễ dàng.
Lacton

1
@lacton Hãy thử chuyển sang matroska : ffmpeg -i 10MB.ts -c copy output.mkv. Bạn sẽ nhận được lỗi : Error parsing AAC extradata, unable to determine samplerate. Đó là lý do tại sao ví dụ MKV của tôi mã hóa lại âm thanh. Đồng thời xem # 4472: Sao chép AAC từ luồng mà không mã hóa thất bạilavf / mkv: Khắc phục lỗi AAC . Tuy nhiên, không ai trong số này có thể áp dụng cho tệp đầu vào lớn, không bị cắt xén của bạn và nó có thể hoạt động như mong đợi.
llogan

1
@LordNeckbeard ffmpeg -i input -c:v copy -c:a aac output.mkvhoạt động hoàn hảo. Video đã được làm lại và âm thanh nghe tốt như bản gốc, không bị hỏng nhẹ khi tôi chuyển đổi với VLC.
Lacton

3

Videolan (VLC - http://www.videolan.org/vlc/index.html ) sẽ dễ dàng chuyển đổi mọi thứ thành bất cứ thứ gì.

Cho nó một shot. Nó chạy trên Linux, Windows và Mac OS X và có giao diện rất thân thiện với người dùng.


Bây giờ tôi đã sử dụng VLC để chuyển đổi video, tôi sẽ giới thiệu nó. Cảm ơn bạn cho đề nghị này. Đối với tập tin .ts của tôi, nó gần như đã hoạt động. Video trông hoàn hảo, nhưng âm thanh hơi bị hỏng. Nó có thể được gây ra bởi một cái gì đó khá kỳ lạ trong luồng âm thanh của video của tôi. Tôi đã chỉnh sửa câu hỏi ban đầu để bao gồm điều này.
Lacton

Vâng, nó có thể hoạt động tốt hơn nếu bạn sử dụng một nhà cung cấp phụ khác cho âm thanh bên trong mp4. Có lẽ là RAW.
Daniel

0

Như là một bổ sung cho câu trả lời khác của @llogan - vì thế sao chép luồng là thích hợp hơn:

Tôi đã sử dụng trong một thời gian dài một số lệnh để trích xuất âm thanh mà không thay đổi tên của các tệp, có thể được điều chỉnh phù hợp với các tệp được trình bày ở đây, để chúng được tích hợp vào các menu ngữ cảnh của trình quản lý tệp.

Vì vậy, đối với "demuxing và muxing" mà không thay đổi tên của tệp sử dụng:

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

Tôi đã thêm nó vào các hành động tùy chỉnh của Thunar và công cụ Cấu hình hành động của Trình quản lý tệp (Nautilus, Nemo, Caja, PCManFM), như vậy:

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

trong khi giới hạn nó thành "* .ts" trong Thunar và video/mp2ttrong Tác vụ quản lý tệp.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.