[package]
edition = "2021"
rust-version = "1.80"
name = "ez-ffmpeg"
version = "0.17.2"
authors = ["Yeauty <YeautyYE@gmail.com>"]
build = "build.rs"
autolib = false
autobins = false
autoexamples = false
autotests = false
autobenches = false
description = "A safe and ergonomic Rust interface for FFmpeg integration, designed for ease of use."
homepage = "https://github.com/YeautyYE/ez-ffmpeg"
documentation = "https://docs.rs/ez-ffmpeg"
readme = "README.md"
keywords = [
"ffmpeg",
"multimedia",
"video",
"audio",
"rtmp",
]
categories = ["multimedia"]
license = "MIT OR Apache-2.0 OR MPL-2.0"
repository = "https://github.com/YeautyYE/ez-ffmpeg"
[package.metadata.docs.rs]
features = [
"async",
"opengl",
"rtmp",
"flv",
"subtitle",
"wgpu",
"cli",
]
[features]
async = []
cli = []
default = []
flv = [
"dep:bytes",
"dep:byteorder",
]
opengl = [
"dep:surfman",
"dep:glow",
"dep:bytemuck",
]
rtmp = [
"dep:rml_rtmp",
"dep:slab",
"dep:dashmap",
"flv",
]
static = ["ffmpeg-next/static"]
subtitle = [
"dep:fontdb",
"dep:ttf-parser",
"dep:rustybuzz",
"dep:zeno",
"dep:unicode-bidi",
"dep:unicode-linebreak",
]
wgpu = [
"dep:wgpu",
"dep:pollster",
"dep:bytemuck",
"dep:ash",
]
[lib]
name = "ez_ffmpeg"
path = "src/lib.rs"
[[example]]
name = "ai_media_ingest"
path = "examples/ai_media_ingest/main.rs"
[[example]]
name = "audio_sample_rate_modification"
path = "examples/audio_sample_rate_modification/main.rs"
[[example]]
name = "audio_video_extraction"
path = "examples/audio_video_extraction/main.rs"
[[example]]
name = "bouncing_balls"
path = "examples/bouncing_balls/main.rs"
[[example]]
name = "capture_camera_mic"
path = "examples/capture_camera_mic/main.rs"
[[example]]
name = "cli_emitted_audio_extract"
path = "examples/cli_emitted_audio_extract.rs"
[[example]]
name = "cli_emitted_clip"
path = "examples/cli_emitted_clip.rs"
[[example]]
name = "cli_emitted_hls"
path = "examples/cli_emitted_hls.rs"
[[example]]
name = "cli_emitted_scale"
path = "examples/cli_emitted_scale.rs"
[[example]]
name = "cli_emitted_thumbnail"
path = "examples/cli_emitted_thumbnail.rs"
[[example]]
name = "cli_emitted_transcode"
path = "examples/cli_emitted_transcode.rs"
[[example]]
name = "color_policy_comparison"
path = "examples/color_policy_comparison/main.rs"
[[example]]
name = "custom_input_output"
path = "examples/custom_input_output/main.rs"
[[example]]
name = "custom_tile_filter"
path = "examples/custom_tile_filter/main.rs"
[[example]]
name = "custom_volume_filter"
path = "examples/custom_volume_filter/main.rs"
[[example]]
name = "detect_streaming"
path = "examples/detect_streaming/main.rs"
[[example]]
name = "extract_rgb_frames"
path = "examples/extract_rgb_frames/main.rs"
[[example]]
name = "extract_whisper_pcm"
path = "examples/extract_whisper_pcm/main.rs"
[[example]]
name = "fps_modification"
path = "examples/fps_modification/main.rs"
[[example]]
name = "frame_sampling"
path = "examples/frame_sampling/main.rs"
[[example]]
name = "frames_to_video"
path = "examples/frames_to_video/main.rs"
[[example]]
name = "generate_black_video"
path = "examples/generate_black_video/main.rs"
[[example]]
name = "gif_export"
path = "examples/gif_export/main.rs"
[[example]]
name = "hardware_acceleration"
path = "examples/hardware_acceleration/main.rs"
[[example]]
name = "hdr_to_sdr"
path = "examples/hdr_to_sdr/main.rs"
[[example]]
name = "hls_abr_ladder"
path = "examples/hls_abr_ladder/main.rs"
[[example]]
name = "hls_conversion"
path = "examples/hls_conversion/main.rs"
[[example]]
name = "in_memory_mp4"
path = "examples/in_memory_mp4/main.rs"
[[example]]
name = "keyframe_thumbnails"
path = "examples/keyframe_thumbnails/main.rs"
[[example]]
name = "media_analysis"
path = "examples/media_analysis/main.rs"
[[example]]
name = "metadata"
path = "examples/metadata/main.rs"
[[example]]
name = "packet_scanner"
path = "examples/packet_scanner/main.rs"
[[example]]
name = "packet_sink_aac_channel"
path = "examples/packet_sink_aac_channel/main.rs"
[[example]]
name = "packet_sink_av_transport"
path = "examples/packet_sink_av_transport/main.rs"
[[example]]
name = "packet_sink_avc"
path = "examples/packet_sink_avc/main.rs"
[[example]]
name = "processing_progress"
path = "examples/processing_progress/main.rs"
[[example]]
name = "query_builtin_filters"
path = "examples/query_builtin_filters/main.rs"
[[example]]
name = "query_codecs"
path = "examples/query_codecs/main.rs"
[[example]]
name = "query_devices"
path = "examples/query_devices/main.rs"
[[example]]
name = "query_media_info"
path = "examples/query_media_info/main.rs"
[[example]]
name = "resolution_modification"
path = "examples/resolution_modification/main.rs"
[[example]]
name = "split_video_to_wav"
path = "examples/split_video_to_wav/main.rs"
[[example]]
name = "still_video_from_image"
path = "examples/still_video_from_image/main.rs"
[[example]]
name = "thumbnail_extraction"
path = "examples/thumbnail_extraction/main.rs"
[[example]]
name = "thumbnail_recipe"
path = "examples/thumbnail_recipe/main.rs"
[[example]]
name = "transcoding"
path = "examples/transcoding/main.rs"
[[example]]
name = "uniform_thumbnails"
path = "examples/uniform_thumbnails/main.rs"
[[example]]
name = "video_clipping"
path = "examples/video_clipping/main.rs"
[[example]]
name = "video_merging"
path = "examples/video_merging/main.rs"
[[example]]
name = "watermarking"
path = "examples/watermarking/main.rs"
[[test]]
name = "attachment"
path = "tests/attachment.rs"
[[test]]
name = "avoption_warnings"
path = "tests/avoption_warnings.rs"
[[test]]
name = "bsf"
path = "tests/bsf.rs"
[[test]]
name = "build_probe"
path = "tests/build_probe.rs"
[[test]]
name = "build_side_effects"
path = "tests/build_side_effects.rs"
[[test]]
name = "builder_option_validation"
path = "tests/builder_option_validation.rs"
[[test]]
name = "cli_emit_hardening"
path = "tests/cli_emit_hardening.rs"
[[test]]
name = "cross_graph_binding"
path = "tests/cross_graph_binding.rs"
[[test]]
name = "custom_io_hardening"
path = "tests/custom_io_hardening.rs"
[[test]]
name = "data_stream_passthrough"
path = "tests/data_stream_passthrough.rs"
[[test]]
name = "decode_error_recovery"
path = "tests/decode_error_recovery.rs"
[[test]]
name = "decoder_opts_test"
path = "tests/decoder_opts_test.rs"
[[test]]
name = "enc_open_parity"
path = "tests/enc_open_parity.rs"
[[test]]
name = "filter_hardening"
path = "tests/filter_hardening.rs"
[[test]]
name = "force_key_frames"
path = "tests/force_key_frames.rs"
[[test]]
name = "frame_export_audio_test"
path = "tests/frame_export_audio_test.rs"
[[test]]
name = "frame_export_test"
path = "tests/frame_export_test.rs"
[[test]]
name = "frame_export_uniform_test"
path = "tests/frame_export_uniform_test.rs"
[[test]]
name = "frame_pipeline_hardening"
path = "tests/frame_pipeline_hardening.rs"
[[test]]
name = "hdr_to_sdr_detection"
path = "tests/hdr_to_sdr_detection.rs"
[[test]]
name = "hls_fmp4"
path = "tests/hls_fmp4.rs"
[[test]]
name = "lifecycle"
path = "tests/lifecycle.rs"
[[test]]
name = "log_noise"
path = "tests/log_noise.rs"
[[test]]
name = "logger_reentrancy"
path = "tests/logger_reentrancy.rs"
[[test]]
name = "mux_teardown"
path = "tests/mux_teardown.rs"
[[test]]
name = "packet_sink"
path = "tests/packet_sink.rs"
[[test]]
name = "packet_sink_job_failure"
path = "tests/packet_sink_job_failure.rs"
[[test]]
name = "packet_sink_negative"
path = "tests/packet_sink_negative.rs"
[[test]]
name = "packet_sink_teardown"
path = "tests/packet_sink_teardown.rs"
[[test]]
name = "packet_sink_unwind"
path = "tests/packet_sink_unwind.rs"
[[test]]
name = "per_output_video_filter"
path = "tests/per_output_video_filter.rs"
[[test]]
name = "rawvideo_seek_gating"
path = "tests/rawvideo_seek_gating.rs"
[[test]]
name = "rtmp_loopback"
path = "tests/rtmp_loopback.rs"
[[test]]
name = "scheduler_ports"
path = "tests/scheduler_ports.rs"
[[test]]
name = "shortest"
path = "tests/shortest.rs"
[[test]]
name = "start_failure_join"
path = "tests/start_failure_join.rs"
[[test]]
name = "start_panic_unwind"
path = "tests/start_panic_unwind.rs"
[[test]]
name = "stream_selection"
path = "tests/stream_selection.rs"
[[test]]
name = "streamcopy_deadlock"
path = "tests/streamcopy_deadlock.rs"
[[test]]
name = "subtitle_chain"
path = "tests/subtitle_chain.rs"
[[test]]
name = "sws_swr_tuning"
path = "tests/sws_swr_tuning.rs"
[[test]]
name = "tail_frame_integrity"
path = "tests/tail_frame_integrity.rs"
[[test]]
name = "video_sync"
path = "tests/video_sync.rs"
[[test]]
name = "video_writer"
path = "tests/video_writer.rs"
[[test]]
name = "vsync_auto"
path = "tests/vsync_auto.rs"
[dependencies.ash]
version = "0.38"
optional = true
[dependencies.bytemuck]
version = "1.8"
features = ["derive"]
optional = true
[dependencies.byteorder]
version = "1.5"
optional = true
[dependencies.bytes]
version = "1.11.1"
optional = true
[dependencies.crossbeam]
version = "0.8.4"
[dependencies.crossbeam-channel]
version = "0.5.15"
[dependencies.dashmap]
version = "6"
optional = true
[dependencies.ffmpeg-next]
version = "8.1.0"
[dependencies.ffmpeg-sys-next]
version = "8.1.0"
[dependencies.fontdb]
version = "0.23.0"
optional = true
[dependencies.glow]
version = "0.16"
optional = true
[dependencies.libc]
version = "0.2.159"
[dependencies.log]
version = "0.4"
[dependencies.pollster]
version = "0.4"
optional = true
[dependencies.rml_rtmp]
version = "0.8"
optional = true
[dependencies.rustybuzz]
version = "0.20.1"
optional = true
[dependencies.slab]
version = "0.4"
optional = true
[dependencies.surfman]
version = "0.9"
features = ["chains"]
optional = true
[dependencies.thiserror]
version = "1.0"
[dependencies.ttf-parser]
version = "0.25.1"
optional = true
[dependencies.unicode-bidi]
version = "0.3.18"
optional = true
[dependencies.unicode-linebreak]
version = "0.1.5"
optional = true
[dependencies.wgpu]
version = "26"
optional = true
[dependencies.zeno]
version = "0.3.3"
optional = true
[dev-dependencies.env_logger]
version = "0.10"
[dev-dependencies.ffmpeg-sys-next]
version = "8.1.0"
[dev-dependencies.libc]
version = "0.2.159"
[dev-dependencies.naga]
version = "26"
features = ["wgsl-in"]
[dev-dependencies.tokio]
version = "1"
features = ["full"]
[target.'cfg(target_os = "macos")'.dependencies.core-foundation]
version = "0.10"
[target.'cfg(target_os = "macos")'.dependencies.objc]
version = "0.2"