This is a lightweight audio-video player built in Rust using FFmpeg libraries. It demonstrates the usage of FFmpeg with Rust to play back video files.

Overview

FFmpeg Rust Video Player

This is a lightweight audio-video player built in Rust using FFmpeg libraries. It demonstrates the usage of FFmpeg with Rust to play back video files.

Supported Builds -

  • Android
  • Windows
  • Linux
  • Mac
  • (wasm32)

Necessary Libraries

This example application requires the following libraries:

Linux

  • On Linux, you need to install FFmpeg and ALSA. For example, on Debian-based systems:
sudo apt-get install clang libavcodec-dev libavformat-dev libavutil-dev libavfilter-dev libavdevice-dev libasound2-dev pkg-config
  • macOS On macOS, you can use Homebrew:
brew install pkg-config ffmpeg
  • Windows For Windows:
Install vcpkg.
Run vcpkg install ffmpeg --triplet x64-windows.
Make sure VCPKG_ROOT is set to where vcpkg is installed.
Make sure %VCPKG_ROOT%\installed\x64-windows\bin is in your PATH.

Building the Application

To build the application, follow these steps:

  • Ensure you have installed the necessary libraries as mentioned above.
  • Navigate to the root directory of the project.
  • Run the following command:
cargo bundle --release

This command bundles the application along with its dependencies into a single distributable directory.

Project Structure

└── ffmpeg
    ├── Cargo.toml
    ├── README.md
    ├── api
    │   └── rs
    │       ├── build
    │       │   ├── Cargo.toml
    │       │   ├── LICENSES
    │       │   │   ├── GPL-3.0-only.txt -> ../../../../LICENSES/GPL-3.0-only.txt
    │       │   │   ├── LicenseRef-Slint-Royalty-free-1.1.md -> ../../../../LICENSES/LicenseRef-Slint-Royalty-free-1.1.md
    │       │   │   └── LicenseRef-Slint-commercial.md -> ../../../../LICENSES/LicenseRef-Slint-commercial.md
    │       │   └── lib.rs
    │       ├── macros
    │       │   ├── Cargo.toml
    │       │   ├── LICENSES
    │       │   │   ├── GPL-3.0-only.txt -> ../../../../LICENSES/GPL-3.0-only.txt
    │       │   │   ├── LicenseRef-Slint-Royalty-free-1.1.md -> ../../../../LICENSES/LicenseRef-Slint-Royalty-free-1.1.md
    │       │   │   └── LicenseRef-Slint-commercial.md -> ../../../../LICENSES/LicenseRef-Slint-commercial.md
    │       │   ├── README.md
    │       │   └── lib.rs
    │       └── slint
    │           ├── Cargo.toml
    │           ├── LICENSES
    │           │   ├── GPL-3.0-only.txt -> ../../../../LICENSES/GPL-3.0-only.txt
    │           │   ├── LicenseRef-Slint-Royalty-free-1.1.md -> ../../../../LICENSES/LicenseRef-Slint-Royalty-free-1.1.md
    │           │   ├── LicenseRef-Slint-commercial.md -> ../../../../LICENSES/LicenseRef-Slint-commercial.md
    │           │   └── MIT.txt -> ../../../../LICENSES/MIT.txt
    │           ├── README.md
    │           ├── android.rs
    │           ├── compile_fail_tests.rs
    │           ├── docs -> ../../../docs
    │           ├── docs.rs
    │           ├── lib.rs
    │           ├── mcu.md
    │           ├── private_unstable_api.rs
    │           ├── tests
    │           │   ├── partial_renderer.rs
    │           │   ├── show_strongref.rs
    │           │   ├── simple_macro.rs
    │           │   └── spawn_local.rs
    │           └── type-mappings.md
    ├── build.rs
    ├── main.rs
    ├── pause.svg
    ├── play.svg
    ├── player
    │   ├── audio.rs
    │   └── video.rs
    ├── player.rs
    └── scene.slint
You might also like...
Public aircraft & flightroute api Built in Rust for Docker, using PostgreSQL & Redis

api.adsbdb.com public aircraft & flightroute api Built in Rust for Docker, using PostgreSQL & Redis See typescript branch for original typescript vers

Rust library for concurrent data access, using memory-mapped files, zero-copy deserialization, and wait-free synchronization.

mmap-sync mmap-sync is a Rust crate designed to manage high-performance, concurrent data access between a single writer process and multiple reader pr

Lightweight parsing for Rust proc macros

Lightweight parsing for Rust proc macros Venial is a WIP parser for Rust proc macros. When writing proc macros that need to parse Rust code (such as a

An AI-native lightweight, reliable, and high performance open-source vector database.
An AI-native lightweight, reliable, and high performance open-source vector database.

What is OasysDB? OasysDB is a vector database that can be used to store and query high-dimensional vectors. Our goal is to make OasysDB fast and easy

Simple daemon built with Rust to track metrics.

Marvin - Metrics Tracker What I cannot create, I do not understand. — Richard Feynman Simple daemon built with Rust to track metrics. The goal is run

Charted's email service built in Rust that can be connected via gRPC

email-service is a small microservice to help transfer emails towards other people without trying to implement it in different languages. This is used in charted-server for member invitations, passwordless authentication, and more.

A traditional web forum built in Rust with modern technology to be fast, secure, scalable, and stable.

Volksforo A traditional web forum built in Rust with modern technology to be fast, secure, scalable, and stable. Stack Rust actix-web askama ScyllaDB

Generic inventory system built in pure rust.

game_inventory A framework for generalizing inventory logic and abstracting it away from item data in your specific game. See more examples and specif

x86-64 Malware Crypter built in Rust for Windows with Anti-VM, powered by memexec

Rust Crypter x86-64 Malware Crypter built in Rust for Windows with Anti-VM, powered by memexec Usage Put your Portable Executable in /crypt/ and renam

Owner
Jenin Sutradhar
Software developer proficient in C++, Rust, Java. Experienced in web development. Completed Network Security and Computer Networks. Exploring In Cybersecurity
Jenin Sutradhar
A tool to deserialize data from an input encoding, transform it and serialize it back into an output encoding.

dts A simple tool to deserialize data from an input encoding, transform it and serialize it back into an output encoding. Requires rust >= 1.56.0. Ins

null 11 Dec 14, 2022
A mixer for jack-audio using rust and druid UI

A simple mixer to allow me to use my midi controller (Novation LaunchControl XL) on linux and also to explore the new druid ui. Features volume faders

Richard Dodd (dodj) 25 Jul 6, 2022
The source code that accompanies Hands-on Rust: Effective Learning through 2D Game Development and Play by Herbert Wolverson

Hands-on Rust Source Code This repository contains the source code for the examples found in Hands-on Rust. These are also available from my publisher

Herbert 261 Dec 14, 2022
Library and proc macro to analyze memory usage of data structures in rust.

Allocative: memory profiler for Rust This crate implements a lightweight memory profiler which allows object traversal and memory size introspection.

Meta Experimental 19 Jan 6, 2023
Rust libraries for Bluesky's AT Protocol services. NOT STABLE (yet)

ATrium ATrium is a collection of Rust libraries designed to work with the AT Protocol, providing a versatile and coherent ecosystem for developers. Th

Yoshihiro Sugi 43 Jun 25, 2023
memchr vs stringzilla - up to 7x throughput difference between two SIMD-accelerated substring search libraries in Rust

memchr vs stringzilla Rust Substring Search Benchmarks Substring search is one of the most common operations in text processing, and one of the slowes

Ash Vardanian 38 Mar 5, 2024
Core libraries, services and CLIs for Monetæ

Core libraries, services and CLIs for Monetæ

monetæ 1 Nov 1, 2021
A Simple Audio Control and Notifications Daemon

SACAND This is sacand, a Simple Audio Control and Notifications Daemon As it name oaths to imply, this is intended to be a simple audio control daemon

null 2 Jan 24, 2022
Bad Apple!! music video on WASM-4

w4-bad-apple Bad Apple!! music video on the WASM-4 fantasy console. Building First, you need to create a frames directory containing an image for each

Mark Carlson 7 Jul 2, 2022
The first compute-centric vector graphic video game

??️ Vong This repository contains source code for the first native use of a compute-centric vector graphics video game, inspired by Pong. ✍️ Authors @

Spencer C. Imbleau 29 Nov 24, 2023