back

eXport-it FFmpeg

Thư viện FFmpeg là gì?

FFmpeg (https://www.ffmpeg.org/) là một giải pháp đa nền tảng, hoàn chỉnh để ghi, chuyển đổi và phát trực tuyến âm thanh và video. FFmpeg là khung công tác đa phương tiện hàng đầu, có thể giải mã, mã hóa, chuyển mã, mux, demux, truyền phát, lọc và chơi khá nhiều thứ mà con người và máy móc đã tạo ra. Nó hỗ trợ các định dạng cổ xưa khó hiểu nhất cho đến thời điểm hiện tại. Cho dù chúng được thiết kế bởi một số ủy ban tiêu chuẩn, cộng đồng hay một công ty.

Nó cũng có tính di động cao: FFmpeg biên dịch, chạy và vượt qua cơ sở hạ tầng thử nghiệm của chúng tôi FATE trên Linux, Mac OS X, Microsoft Windows, BSDs, Solaris, v.v. trong nhiều môi trường xây dựng, kiến ​​trúc máy, và cấu hình.

Bản thân thư viện FFmpeg có giấy phép LGPL 2.1 . Việc bật một số thư viện bên ngoài (như libx264) sẽ thay đổi giấy phép thành GPL 2 trở lên.

Thư viện này được tích hợp như thế nào trong ứng dụng Android

Tôi đã sử dụng tập lệnh ffmpeg-android-maker (cộng tác viên: Alexander Berezhnoi Javernaut + codacy-badger Codacy Badger + A2va) để biên dịch thư viện. Tập lệnh này tải xuống mã nguồn của FFmpeg từ https://www.ffmpeg.org và xây dựng thư viện và lắp ráp nó cho Android. Tập lệnh tạo thư viện được chia sẻ (tệp * .so) cũng như tệp tiêu đề (tệp * .h).

Trọng tâm chính của ffmpeg-android-maker là chuẩn bị các thư viện được chia sẻ để tích hợp liền mạch vào một dự án Android. Tập lệnh chuẩn bị thư mục `đầu ra` được sử dụng. Và nó không phải là điều duy nhất mà dự án này làm. Mã nguồn của ffmpeg-android-maker có sẵn theo giấy phép MIT. Xem tệp LICENSE.txt để biết thêm chi tiết trên https://github.com/Javernaut/ffmpeg-android-maker/ Các thư viện eXport-it FFmpeg chỉ được biên dịch với libaom, libdav1d, liblame, libopus và libtwolame ... nhưng không phải tất cả các thư viện liên quan.

Để phát triển hỗ trợ Java cho FFmpeg và chạy nó trên Android 7.1 đến 12, tôi đã bắt đầu từ dự án MobileFFmpeg được ghi lại trên https://github.com/tanersener/mobile-ffmpeg/ bởi Taner Sener, dự án này không được duy trì nữa ... và được cấp phép theo LGPL 3.0 ...

Cuối cùng, tôi đã chuẩn bị một dự án JNI Android Studio với các thư viện, bao gồm các tệp và mã hỗ trợ Java, đồng thời tạo tệp Thư viện .aar để tích hợp làm thư viện bổ sung vào các dự án hiện có của tôi.


Cách bắt đầu một kênh đa hướng

Để bắt đầu một Kênh đa hướng, bạn phải sử dụng một ứng dụng khách, để truy cập vào một máy chủ UPnP trên mạng cục bộ của bạn (Wi-Fi) với sự hỗ trợ của FFmpeg. Máy chủ này sẽ trả lời bằng danh sách các tệp mà nó xuất ra. Nếu máy chủ này có hỗ trợ FFmpeg, một dòng chữ nhỏ "Là một kênh" phải được hiển thị bằng màu đỏ ở cuối dòng trên cùng của trang danh sách. Khi văn bản là "màu đỏ", nhấp vào nút "phát" hoạt động như trước khi sử dụng giao thức UPnP. Nếu bạn nhấp vào văn bản, văn bản sẽ trở thành "màu xanh lá cây" và nhấp vào nút "phát", sau khi chọn tệp video hoặc âm thanh, sẽ bắt đầu "kênh".

Các tệp phương tiện được chọn dường như được phát theo cùng một cách so với thông qua UPnP, ngoại trừ thời gian khởi động lâu hơn do các tác vụ bổ sung. Bạn phải giữ ứng dụng khách này phát các tệp phương tiện để giữ cho đường dẫn hoạt động.

Sử dụng đường dẫn này trên các thiết bị khác

IP multicast không hoạt động qua Internet, nó chỉ hoạt động trên Mạng cục bộ do đó chủ yếu trên Wi-Fi. Một kênh dữ liệu đa hướng có thể được chia sẻ đồng thời bởi nhiều máy khách. Bạn đang gửi luồng dữ liệu đa phương tiện trên mạng Wi-Fi của mình và hiển thị những dữ liệu này trên các thiết bị được kết nối gần như đồng bộ, chỉ là chênh lệch độ trễ thời gian chờ.

Với truyền trực tuyến UPnP hoặc HTTP, mỗi thiết bị yêu cầu băng thông của video được hiển thị và băng thông toàn cầu là tổng của cả hai lưu lượng. Với tính năng phát trực tuyến đa hướng, chúng tôi gửi một luồng dữ liệu trên mạng LAN được chia sẻ giữa nhiều máy khách.

Nếu bạn sử dụng một ứng dụng khách khác trên mạng của mình sau khi bắt đầu một kênh, bạn sẽ thấy một dòng bổ sung trên cửa sổ chính của ứng dụng khách. Chỉ cần nhấp vào dòng này là chương trình sẽ bắt đầu.

Cũng có thể sử dụng các sản phẩm khác như VLC, SMplayer, ... để hiển thị video hoặc nghe nhạc được phân phối qua kênh đa hướng chỉ bằng cách sử dụng URL "UDP" được hiển thị trên ứng dụng eXport-it.

Để dừng kênh đa hướng

Cách tốt nhất để dừng một Kênh đa hướng là dừng nó trên ứng dụng khách mà bạn đã khởi chạy nó vì kênh này được kiểm soát ở đó. Phát đến cuối các tệp phương tiện đã phát trực tuyến cũng sẽ kết thúc chương trình.

Cân nhắc thực tế

Để bắt đầu một kênh đa hướng, yêu cầu một phần ứng dụng khách cụ thể của ứng dụng này, giống như ứng dụng khách eXport-it của các sản phẩm cập nhật khác của tôi. Để sử dụng một kênh đa hướng đang chạy có thể được thực hiện với ứng dụng khách hoặc với các sản phẩm khác như VLC, SMPlayer, ... chạy trên nền tảng khác hoặc trên Android. Khi sử dụng VLC, URL để sử dụng kênh Multicast sẽ khác một cách trơn tru như udp: //@239.255.147.111: 27192 ... chỉ với một "@" bổ sung. Với kênh Đa phương tiện UDP, dữ liệu phương tiện chỉ được gửi một lần để hiển thị trên nhiều máy khách, nhưng không có đồng bộ hóa thực sự và độ trễ có thể là vài giây tùy thuộc vào bộ đệm và đặc tính của thiết bị.

Nghe kênh đa hướng âm thanh có thể được thực hiện trên các sản phẩm khác nhưng ứng dụng khách cụ thể hiển thị hình ảnh cũng được gửi qua kênh đa hướng IP. Nếu bạn muốn gửi những bức ảnh cụ thể kèm theo nhạc, bạn có thể sử dụng tùy chọn menu "Trang 2" trên máy chủ, để chỉ chọn những hình ảnh bạn muốn, bỏ chọn tất cả hình ảnh bằng một cú nhấp chuột, sau đó chọn những hình ảnh bạn muốn ...

Có những ưu điểm và bất tiện với mỗi giao thức. Kênh UPnP và Multicast chỉ có thể được sử dụng trên mạng cục bộ (chủ yếu là Wi-Fi), truyền trực tuyến HTTP hoạt động cục bộ nhưng cũng có thể qua Internet và sử dụng trình duyệt Web làm ứng dụng khách. Kênh UPnP và Multicast không có cách nào an toàn để kiểm soát quyền truy cập và bất kỳ thiết bị nào được kết nối trên mạng Wi-Fi đều có thể sử dụng máy chủ đang chạy. Với giao thức HTTP, bạn có thể xác định tên người dùng và mật khẩu, đồng thời đặt tệp trong danh mục (nhóm) truy cập, giới hạn quyền truy cập vào một số tệp phương tiện cho người dùng cụ thể. Cài đặt của máy chủ cho phép giới hạn tệp nào được phân phối và đặt tên danh mục cho mỗi tệp nếu cần.

back