6

Tôi có một số AVQueuePlayer được cho là phát liên tiếp một mảng AVURLAsset đại diện cho các đoạn liên tiếp của một video liên tục.Độ trễ gây phiền nhiễu khi AVQueuePlayer nhảy từ nội dung sang

Bất cứ khi nào một đoạn kết thúc và bắt đầu khác, có một trục trặc nhỏ mà có thể cũng chú ý (khung giữ cho khoảng 0.2sec và âm thanh bị tắt tiếng)

tôi đã cố gắng nghiên cứu làm thế nào để có được xung quanh vấn đề đó, nhưng không tìm thấy gì cả. Tôi đã cố gắng giải quyết nó bằng cách có 2 AVQueuePlayer 's và chuyển đổi giữa cả hai khoảng 0.2sec trước khi kết thúc của mỗi mảnh. Sự cố chưa được giải quyết.

Bất kỳ ý tưởng nào về cách giải quyết điều đó?

Lưu ý: Khi nối các đoạn mp4 lại với nhau bằng phần mềm joiner mp4, đầu ra là một video mượt mà không bị trục trặc.

+0

câu trả lời này có giúp ích cho bạn không? http://stackoverflow.com/questions/28659404/avfoundation-play-consecutive-video-fragments – digitalHound

Trả lời

3

Được thông qua chính xác điều này. Bạn sẽ gặp trục trặc đó bất kể bạn làm gì. Lý do là cách hoạt động của AVQueuePlayer. Nó tải mục tiếp theo khi kết thúc trước đó. Vì vậy, nếu video của bạn lớn, bạn cũng có thể thấy màn hình trống đó trong 2-3 giây. Một giải pháp là những gì bạn đã đề cập, tức là sử dụng hai số AVQueuePlayer. Nhưng như bạn nói nó không làm việc cho bạn, và thậm chí nếu bạn làm cho nó hoạt động, nó sẽ vụng về.

Giải pháp tốt hơn và sạch sẽ là AVMutableComposition. Nó có thể trông phức tạp lúc đầu nhưng nhiệm vụ nhanh chóng và một lần của nó. Bạn tạo một thành phần của tất cả các video của bạn và chơi nó trong một đơn giản AVPlayer. Và trong trường hợp của bạn, tôi cho rằng bạn chỉ cần chơi nó, vì vậy bạn thậm chí không phải xuất nó.

Để biết cách sử dụng AVMutableComposition, hãy xem qua số link này. Nó sẽ giải thích với mã chính xác mà bạn cần.

-1

Như bạn đã nói, cách "2 AVQueuePlayers" vẫn gặp sự cố (một số trục trặc âm thanh). Tôi gặp phải sự cố tương tự và đã giải quyết vấn đề bằng cách sử dụng HLS.

Bạn có thể phát tệp TS cục bộ.

Lúc đầu, hãy tạo các tệp m3u8 và TS từ tệp phim gốc.

ví dụ:

mediafilesegmenter -t 10 sample.mp4 

Sau đó, thêm tệp tài nguyên vào thiết bị iOS. Bạn có thể thêm tệp từ iTunes, thêm dưới dạng tài nguyên hoặc thực hiện chức năng tải xuống và tải xuống từ ứng dụng của bạn.

Chạy máy chủ http, sau đó chuyển URL cục bộ tới AVPlayerController. Tôi đã sử dụng cocoaHttpServer.

Tôi đặt ví dụ đơn giản tại đây.

https://github.com/satoshi0212/samples/tree/master/TSPlaySample

Các vấn đề liên quan