2009-02-23 63 views
5

Tôi muốn hiểu cách hoạt động của giải mã video và âm thanh, đặc biệt là đồng bộ hóa thời gian (cách tải video 30fps, cách ghép nối với âm thanh, v.v.). Tôi không muốn biết TẤT CẢ chi tiết, chỉ là bản chất của nó. Tôi muốn có thể viết đơn giản hóa mức độ cao của bộ giải mã video/âm thanh thực tế.mpeg 2 giải mã

Bạn có thể cung cấp con trỏ cho tôi không? Một mã nguồn C/C++ thực tế của bộ giải mã video/âm thanh MPEG2 sẽ là cách nhanh nhất để hiểu những điều tôi nghĩ.

Trả lời

6

Đọc mã nguồn từ bộ giải mã hoạt động có vẻ đúng cách để đi. Tôi đề nghị như sau:

http://www.mpeg.org/MPEG/video/mssg-free-mpeg-software.html

Cho rằng nó mentionned trên website mpeg.org, tôi muốn nói rằng bạn sẽ tìm thấy những gì bạn cần ở đây.

Trước đây tôi đã có thời gian để giải mã video mpeg (không có âm thanh) và nguyên tắc khá đơn giản. Có một số hình ảnh thuần túy được bao gồm, một số hình ảnh trung gian được mô tả tương đối gần các hình ảnh chính gần nhất và phần còn lại được mô tả bằng hình ảnh trung gian/chính gần nhất.

Một khe thời gian, một hình ảnh. Nhưng các codec gần đây phức tạp hơn nhiều, tôi đoán vậy!

EDIT: đồng bộ hóa

Tôi không có chuyên môn trong việc đồng bộ hóa âm thanh và video, nhưng vấn đề này dường như được giải quyết bằng cách sử dụng một lớp đồng bộ (xem there cho một định nghĩa).

+0

Vâng, tôi biết những nguyên tắc cơ bản của giải mã video, nội bộ trước dct vv Tuy nhiên nó là sự đồng bộ mà tôi quan tâm. Câu trả lời hữu ích btw, cảm ơn. –

1

Tùy thuộc vào số lượng bạn biết về định dạng MPEG-2, bạn có thể muốn có tổng quan rộng bằng cách đọc một bài viết về nó trước tiên. Ý tôi là một cái gì đó như thế này:

A Beginners Guide for MPEG-2 Standard

MPEG-2 VIDEO COMPRESSION

+0

không may, cả hai liên kết đều không hợp lệ nữa. – user1810087

3

Đối với audio/đồng bộ hóa video, về cơ bản, tất cả các video và âm thanh khung nên dấu thời gian. Dấu thời gian thường được gọi là PTS (Presentation Time Stamp). Khi video/âm thanh là bộ giải mã bằng bộ giải mã, trình kết xuất âm thanh/video sẽ lên lịch cho khung được hiển thị vào đúng thời điểm để âm thanh/video được đồng bộ hóa.

Tôi nghĩ bạn có thể tham khảo chương "Timing Model" của MPEG2 Tutorial để biết chi tiết.

+1

chỉ để thêm điều gì đó: Bạn nên lấy thời gian từ âm thanh (ví dụ: mẫu được phát từ đầu) vì đầu ra âm thanh hiếm khi chạy chính xác ở tần suất được chỉ định. Sử dụng âm thanh giúp đảm bảo âm thanh và video luôn được đồng bộ hóa cho đến khi kết thúc phim. –

1

@ Patric and Nils

Vì vậy, bạn nói rằng có dấu thời gian, hein ... Đây chỉ là phần video tôi đoán. Đối với âm thanh, tôi đoán có đủ thông tin trong tiêu đề (như "mẫu trên giây"). Tần suất các dấu thời gian này là cần thiết? Tôi tưởng tượng rằng xen kẽ các gói âm thanh và video đảm bảo rằng dữ liệu video luôn đi trước dữ liệu âm thanh hay gì đó?

EDIT: Tìm thấy những gì tôi cần: http://www.dranger.com/ffmpeg/tutorial01.html

1

Helltone,

Timestamps cho dữ liệu âm thanh vẫn rất cần thiết bởi vì âm thanh và khung video có thể không được sắp xếp ở cùng một vị trí. Ví dụ:

V: 1000 1040 1080 1120 ... A: 990 1013 1036 (mất) 1082

Bạn có thể cần phải bồi thường bù đắp giữa các video/audio khung đầu tiên. Bên cạnh đó, nếu có thể xảy ra mất gói (trong quá trình phát video), bạn cần dấu thời gian của cả video/âm thanh để đồng bộ hóa chính xác.