硬件 解释
DSP(数字信号处理器) 许多嵌入式系统使用专用的DSP进行音视频处理,以提高性能和降低功耗
GPU(图形处理单元) 一些嵌入式平台利用GPU进行视频解码,尤其是在需要高分辨率视频时
VPU(视频处理单元) 专门设计用于视频编解码的硬件,能够显著提高处理效率

音视频基础

视频

协议

  1. H.264 (AVC)
    • 描述:广泛使用的编码标准,提供良好的压缩效率和视频质量。
    • 场景:适用于蓝光光盘、在线视频流(如YouTube、Netflix)、视频会议和监控录像。
  2. H.265 (HEVC)
    • 描述:是H.264的后续标准,提供更高的压缩效率(约50%),在相同质量下文件大小更小。
    • 场景:适用于4K和8K视频流、超高清电视、蓝光光盘,也用于高效视频存储。
  3. VP8 和 VP9
    • 描述:Google开发的开源视频编码格式。VP9是VP8的升级版,提供类似于H.265的压缩效率。
    • 场景:广泛用于YouTube视频流和WebM格式的视频,VP9在高分辨率视频(如4K)中表现良好。

主要区别

压缩效率:不同编码格式在相同视频质量下的文件大小不同。H.265和AV1通常提供更好的压缩效率。
编码复杂度:某些编码格式(如H.265和AV1)的编码和解码过程更复杂,需要更高的计算能力。
兼容性:H.264由于其广泛的支持和兼容性,仍是最常用的编码格式。某些新格式(如AV1)在老旧设备上的支持可能有限。
画质:不同编码格式在相同比特率下的画质可能有所不同,H.265和VP9在高分辨率视频中通常表现更好。

音频

协议

MP3 (MPEG Audio Layer III)
描述:广泛使用的有损音频压缩格式,能够显著减少文件大小,同时在较低比特率下保持合理的音质。
场景:适用于音乐播放、在线流媒体服务和便携式音频设备。
AAC (Advanced Audio Codec)
描述:比MP3具有更高的音质和压缩效率,通常在相同的比特率下提供更好的音质。
场景:用于Apple的iTunes、YouTube、Spotify等流媒体服务,以及移动设备音频播放。
OGG Vorbis
描述:开源的有损音频编码格式,压缩效率和音质接近AAC,且无版权限制。
场景:广泛应用于游戏开发、流媒体和开源项目,适合需要自由使用的场景。
Opus
描述:高度灵活的音频编解码器,支持低延迟和高音质,能够适应不同的比特率和音频类型(语音和音乐)。
场景:广泛用于VoIP(如Skype)、视频会议和实时音频流,尤其适合需要低延迟的应用。
FLAC (Free Lossless Audio Codec)
描述:无损音频压缩格式,能够在压缩过程中保留全部音频信息。
场景:适用于高保真音频存储和播放,比如音频光盘、数字音乐库,特别适合音频爱好者。
PCM (Pulse Code Modulation)
描述:未压缩的音频格式,直接记录音频信号的数字采样,具有最高的音质。
场景:用于音频编辑、专业录音和CD音频格式,因其高音质而受到青睐。

主要区别

压缩类型:音频编码可以是有损(如MP3、AAC、OGG、Opus)或无损(如FLAC、PCM)。有损格式通常文件更小,但可能会影响音质;无损格式保留全部音频信息,但文件较大。
音质和比特率:无损格式通常提供更高的音质,而有损格式在相同比特率下可能会有不同的音质表现(例如,AAC通常优于MP3)。
延迟:某些编码格式(如Opus)设计用于低延迟传输,适合实时应用;而其他编码格式可能不适合这种场景。
兼容性:不同格式在各平台和设备上的支持程度不同,MP3和AAC是最广泛兼容的格式,而FLAC和OGG的支持可能较少。

框架

  1. ==FFmpeg==
    描述:FFmpeg是一个开源的音视频处理库,支持几乎所有常见的音视频格式和编解码器。
    特点:
    强大的命令行工具和API,支持音视频的转码、录制、流媒体处理等。
    支持硬件加速,可以与多种硬件编码器配合使用。
    社区活跃,文档和支持丰富。
    使用场景:广泛用于视频编辑、播放器、流媒体服务和多媒体应用开发。
  2. ==GStreamer==
    描述:GStreamer是一个开源的多媒体框架,提供了丰富的插件系统,支持各种音视频格式和处理功能。
    特点:
    模块化设计,允许用户通过管道(pipeline)连接不同的处理组件。
    支持实时音视频流处理,适合复杂的多媒体应用。
    提供良好的跨平台支持。
    使用场景:适合需要复杂音视频处理的应用,如播放器、流媒体服务器和视频会议系统。
  3. ==OpenMAX==
    描述:OpenMAX是一个开放的多媒体应用编程接口(API),旨在提供音视频编解码的标准化接口。
    特点:
    主要用于嵌入式系统,支持硬件加速的音视频处理。
    提供了一组标准API,可以与多种硬件平台兼容。
    使用场景:多用于需要高效音视频处理的嵌入式设备,如智能手机、平板电脑和车载系统。
  4. LibVLC
    描述:LibVLC是VLC媒体播放器的核心库,提供了音视频播放和处理的功能。
    特点:
    支持几乎所有的音视频格式,具有良好的兼容性。
    提供简单易用的API,可以快速集成到应用中。
    使用场景:适用于需要音视频播放功能的应用,如嵌入式播放器和多媒体应用。
  5. XAudio2 / OpenAL
    描述:这些是用于音频处理的API,虽然主要用于音频,但在一些嵌入式应用中也涉及音视频处理。
    特点:
    提供高效的音频播放和处理功能。
    适合游戏和实时音频应用。
    使用场景:常用于游戏开发、虚拟现实和增强现实应用。
  6. ==WebRTC==
    描述:WebRTC是支持实时音视频通信的开源项目,提供了用于浏览器和移动应用的API。
    特点:
    内置音视频编码、网络传输和媒体流处理功能。
    适合低延迟实时通信。
    使用场景:广泛用于视频会议、实时聊天应用和P2P媒体传输。
  • FFmpeg和GStreamer是最常用的通用框架,而OpenMAX和WebRTC则更适合特定的嵌入式应用场景。

FFmpeg git
webrtc

这个是要做成按通道来下载文件吗? 以前的是按播放窗口来下载的。