2013-03-18 33 views
5

Chúng tôi đang tìm cách giảm thời gian thực hiện phân đoạn/mã hóa từ wav sang aac được phân đoạn để phát trực tiếp HTTP bằng cách sử dụng ffmpeg để phân đoạn và tạo danh sách phát m3u8 bằng cách sử dụng tất cả các lõi của máy của chúng tôi .Song song mã hóa các đoạn âm thanh chỉ trong ffmpeg

Trong một thử nghiệm, tôi đã ffmpeg trực tiếp phân đoạn tệp wav vào aac bằng libfdk_aac, tuy nhiên mất khá nhiều thời gian để hoàn thành. Trong thử nghiệm thứ hai, tôi đã phân đoạn ffmpeg một tệp wav là (wav) khá nhanh (< 1 giây trên máy của chúng tôi), sau đó sử dụng GNU song song để thực thi ffmpeg một lần nữa để mã hóa các đoạn wav thành aac và đã thay đổi tệp .m3u8 theo cách thủ công mà không thay đổi thời lượng của chúng. Điều này được thực hiện nhanh hơn nhiều tuy nhiên những khoảng trống "im lặng" có thể được nghe thấy khi phát âm thanh đầu ra.

Tôi đã thử kịch bản thứ hai bằng cách sử dụng mp3 và kết quả vẫn khá giống nhau. Mặc dù tôi đã đọc rằng lame thêm đệm trong quá trình mã hóa (http://scruss.com/blog/2012/02/21/generational-loss-in-mp3-re-encoding/), điều này có nghĩa là libfdk_aac cũng thêm đệm trong khi mã hóa?

Có lẽ cái này có liên quan đến câu hỏi này: How can I encode and segment audio files without having gaps (or audio pops) between segments when I reconstruct it?

+0

để hiểu chính xác: bạn phân đoạn wav và sau đó mã hóa từng phân đoạn một cách riêng biệt? theo quy tắc đóng dấu thời gian - tức là dấu thời gian đầu tiên của mỗi phân khúc = dấu thời gian cuối cùng của phân khúc trước đó + khoảng thời gian khung? – NiRR

+0

@NiRR ngay tại chỗ ** sigh ** – NeverFall

Trả lời

3

Theo section 4 of HLS Specification, chúng tôi có điều này:

A Stream Giao thông vận tải hoặc phân khúc dòng tiểu audio PHẢI là tiếp nối của các phương tiện truyền thông được mã hóa ở phần cuối của đoạn có số thứ tự trước đó là , trong đó các giá trị trong một chuỗi liên tục, chẳng hạn như dấu thời gian và bộ đếm liên tục, tiếp tục không bị gián đoạn

Khoảng trống "Im lặng" là 99,99% số lần liên quan đến bộ đếm sai/gián đoạn. Bởi vì bạn đã viết rằng bạn đã thay đổi tệp .m3u8 theo cách thủ công mà không thay đổi thời lượng của chúng Tôi suy ra rằng bạn đã cố tự cắt âm thanh. Nó không thể được thực hiện.

Luồng HLS không thể tạo song song do các bộ đếm này. Họ phải tuân theo một trình tự [MPEG2-TS :-(]. Bạn nên có bộ xử lý nhanh hơn

+0

Đó chính xác là những gì tôi đã làm ... giống như nhận được một bộ xử lý nhanh hơn là giải pháp duy nhất kể từ bây giờ đến nay: - /. Bây giờ chúng tôi đã chuyển sang một cách tiếp cận khác. – NeverFall