Grundlegende FFmpeg-Lernroute

Einführung in ffmpeg

FFmpeg ist ein kostenloses, plattformübergreifendes Open-Source-Audio- und Videoverarbeitungstool, das eine hochwertige, schnelle Multimedia-Verarbeitung ermöglicht. FFmpeg ist für das Streamen von Audio und Video konzipiert.

FFmpeg hat sich zu einem der leistungsstärksten und umfassendsten in der Branche anerkannten Audio- und Videoverarbeitungstools entwickelt und ist weit verbreitet. Die meisten audio- und videobezogenen Anwendungen und Toolbibliotheken beziehen sich direkt oder indirekt auf FFmpeg.

Die Entwicklung von FFmpeg begann im Jahr 2000, zunächst initiiert vom französischen Programmierer Fabrice Bellard, später beteiligten sich immer mehr Open-Source-Mitwirkende. Derzeit wird FFmpeg von einem Team aus mehreren Entwicklern gepflegt und entwickelt.

Die Audio- und Videoentwicklung erfordert die Beherrschung der Grundlagen von Bildern, Videos und Audio sowie das Erlernen der Sammlung, Wiedergabe, Verarbeitung und Übertragung sowie der Entwicklung und Anwendung.

Die Sammlung löst das Problem, woher die Daten kommen, das Rendern löst das Problem, wie neu die Daten sind, die Verarbeitung löst das Problem, wie die Daten verarbeitet werden, und die Übertragung löst das Problem, wie die Daten geteilt werden. Jede Kategorie hier kann tiefgreifend sein und jedes Thema ist voller technischer Herausforderungen.

1. Grundlegendes Audio und Video

1.1 Audio-Grundlagen

  • So sammeln Sie Ton – das Prinzip der Analog-Digital-Umwandlung

  • Warum hochwertige Audio-Abtastrate >=44,1 kHz

  • Was ist PCM?

  • Wie viele Bits werden zur Darstellung eines Abtastpunkts verwendet?

  • Ob der abgetastete Wert als Ganzzahl oder Gleitkommazahl ausgedrückt wird

  • Die Lautstärke hat einen guten Zusammenhang mit dem Abtastwert

  • Wie viele Abtastpunkte werden als Datenrahmen verwendet?

  • So ordnen Sie die Abtastdaten des linken und rechten Kanals an

  • Was ist PCM (Pulse Code Modulation)?

  • Prinzipien der Audiokodierung

1.2 Video-Grundlagen

  • RGB-Farbprinzip

  • Warum benötigen Sie das YUV-Format?

  • Was ist ein Pixel?

  • Auflösung, Bildrate, Bitrate

  • Unterschiede in den YUV-Datenspeicherformaten

  • Problem mit der Ausrichtung des YUV-Speichers

  • Warum wird auf dem Bildschirm ein grüner Bildschirm angezeigt?

  • H264-Kodierungsprinzip

  • H264 IPB-Frame-Beziehung

1.3 Grundkenntnisse des Demultiplexens

  • Was ist Demultiplexing, z. B. das MP4-Format?

  • Warum benötigen Sie unterschiedliche Multiplexing-Formate MP4/FLV/TS?

  • Gängiges Multiplex-Format MP4/FLV/TS

1.4 Aufbau der FFmpeg6.0-Entwicklungsumgebung

  • Drei Hauptplattformen: Windows, Ubuntu und MAC

  • QT-Installation

  • FFmpeg-Befehlszeilenumgebung

  • FFmpeg-API-Umgebung

  • FFmpeg-Kompilierung

  • vs2019-Installation (Win-Plattform)

1.5 Gängige Tools für die Audio- und Videoentwicklung

  • MediaInfo, Videodateien analysieren

  • VLC-Player, Spieltest

  • EasyICE, TS-Stream analysieren

  • flvAnalyser, FLV analysieren

  • mp4box, mp4 analysieren

  • Audacity, analysieren Sie Audio-PCM

  • Elecard_streamEye, analysieren Sie H264

  • Haikang YUVPlayer, YUV analysieren

2. Der Grundstein von FFmpeg6.0

2.1 FFmpeg-Befehle

  • Extrahieren von Audio-PCM/AAC-Dateien

  • Extraktion von Video-YUV/H264-Dateien

  • Demultiplexen, Multiplexen

  • Audio- und Videoaufzeichnung

  • Zuschneiden und Zusammenführen von Videos

  • Bild-/Videokonvertierung

  • Live-Streaming per Push und Pull

  • Wasserzeichen/PIP/Neun-Quadrat-Filter

Hinweis: Der Zweck der Beherrschung von FFmpeg besteht darin, 1. schnell zu verstehen, was FFmpeg kann; 2. das Verständnis von Audio und Video zu vertiefen.

2.2 Praxis der plattformübergreifenden SDL-Multimedia-Entwicklungsbibliothek

  • Aufbau einer SDL-Umgebung

  • SDL-Ereignisbehandlung

  • SDL-Threading

  • Video-YUV-Bildschirmwiedergabe

  • Audio-PCM-Tonausgabe

Hinweis: SDL ist mit den drei Plattformen Win, Ubuntu und Mac kompatibel und wird hauptsächlich für die Bildschirmdarstellung und Tonausgabe nachfolgender Projekte verwendet

2.3 Der Grundstein von FFmpeg

  • FFmpeg-Framework

  • FFmpeg-Speicherreferenzzählmodell

  • Demultiplexen von AVFormat XXX usw.

  • Codec-bezogener AVCodec XXX usw.

  • Komprimierte Daten AVPacket

  • Unkomprimierte Daten AVFrame

  • FFmpeg objektorientiertes Denken

  • Nullkopie der Paket-/Frame-Daten

Hinweis: Der Zweck besteht darin, sich mit der allgemeinen Struktur und Funktionsschnittstelle von FFmpeg vertraut zu machen

2.4 FFmpeg Audio- und Video-Demultiplexing + Dekodierung

  • Demultiplexing-Prozess

  • Audio-Dekodierungsprozess

  • Video-Dekodierungsprozess

  • Analyse des FLV-Paketformats

  • Analyse des MP4-Kapselungsformats

  • Was ist der Unterschied zwischen FLV- und MP4-Suche?

  • Warum das FLV-Format für Live-Übertragungen verwendet werden kann

  • Warum MP4 nicht für Live-Streaming verwendet werden kann

  • Kann MP4 für VOD verwendet werden?

  • AAC ADTS-Analyse

  • H264 NALU-Analyse

  • AVIO-Speicher-Eingabemodus

  • Audio-Resampling in Aktion

  • Ob die Wiedergabedauer der neu abgetasteten Daten konsistent ist

  • So stellen Sie PTS nach dem Resampling dar

  • Problem bei der YUV-Speicherausrichtung nach der Videodekodierung

  • Problem mit dem PCM-Anordnungsformat nach der Audiodekodierung

  • Hardware-Dekodierung dxva2/nvdec/cuvid/qsv

  • Hardware-GPU-Datenübertragung zur CPU

  • H265-Dekodierung

Hinweis: FFmpeg-API-Lernen: Videodemultiplexierung -> Dekodierung -> Kodierung -> Multiplexierung von Composite-Video

2.5 FFmpeg-Audio- und Videokodierung + Multiplexing synthetischer Videos

  • AAC-Audiokodierung

  • H264-Videokodierung

  • PCM+YUV-Multiplexing MP4/FLV

  • H264-Kodierungsprinzip

  • Der Unterschied zwischen IDR-Frame und I-Frame

  • Ändern Sie die Codierungsbitrate dynamisch

  • Referenzwert des GOP-Intervalls

  • Problem mit der Synchronisierung von MP4-Audio und -Video bei Multiplex-Synthese

  • Codierungs- und Multiplex-Zeitbasisprobleme

  • MP4-Synthese IOS kann das Problem nicht abspielen

  • So stellen Sie PTS nach dem Resampling dar

  • Problem bei der Ausrichtung des YUV-Speichers bei der Videokodierung

  • Hardware-Kodierung dxva2/nvenc/cuvid/qsv

  • H265-Kodierungsprinzip

  • H264-, H265-Codekonvertierung

3. Erweitertes FFmpeg6.0

3.1 FFmpeg-Filter

  • FFmpeg-Filterketten-Framework

  • Audiofilter-Framework

  • Videofilter-Framework

  • Mehrkanal-Audio-Mixing-Amix

  • Video-Wasserzeichen-Wasserzeichen

  • Zuschneiden und Spiegeln des Videobereichs

  • Video-Logo hinzufügen

Hinweis: Filter werden häufig im Bereich der Videobearbeitung verwendet.

3.2 ffplay-Spieler

  • Meistere die Bedeutung von ffplay.c

  • ffplay-Framework-Analyse

  • Demultiplexing-Thread

  • Audio-Dekodierungs-Thread

  • Videodekodierungsthread

  • Rückruf der Tonausgabe

  • Bildschirm-Rendering-Intervall

  • Audio-Resampling

  • Konvertierung des Bildschirmgrößenformats

  • Unterschiede zwischen Audio-, Video- und externer Taktsynchronisation

  • Audio-Resampling-Kompensation beim Referenzieren von Video

  • Die Essenz der Lautstärkestummschaltung und Größenanpassung

  • Größenbeschränkung für Audio- und Videopaket-Warteschlangen

  • Thread-Sicherheit für Audio- und Videopaketwarteschlangen

  • Größenbeschränkung für Audio- und Video-Frame-Warteschlangen

  • Thread-Sicherheit für Audio- und Video-Frame-Warteschlangen

  • Pause, Implementierungsmechanismus abspielen

  • Problem mit hängengebliebenem Bildschirm aufgrund der Suchwiedergabe

  • Suche nach Wiedergabedatenwarteschlange, synchrone Taktverarbeitung

  • Wie man Bild für Bild spielt

  • Kernpunkte des Prozesses des Spielerausstiegs

Hinweis: ffplay.c ist der Quellcode des Befehls ffplay. Die Beherrschung von ffplay wird uns helfen, unseren eigenen Player mit doppeltem Ergebnis und halbem Aufwand zu entwickeln.

4. Tatsächlicher Kampf des FFmpeg6.0-Streaming-Media-Projekts

4.1 FFmpeg+QT-Player

1. Analyse von Open-Source-Playern

  • Selbst entwickelte Framework-Analyse

  • Abteilung für Spielermodule

  • Demultiplex-Modul

  • Audio- und Videodekodierung

  • Spielerkontrolle

  • Audio- und Videosynchronisation

  • Software-Dekodierung + Hardware-Dekodierung

  • Lautstärkeregelung

  • Wiedergabe mit variabler Geschwindigkeit

  • Ziehen Sie, um zum Abspielen zu springen

  • Anpassung der Bildschirmhelligkeit und -sättigung

  • Bildschirm 4:3 16:9 Umschaltung

  • Analyse von Code-Stream-Informationen

  • Bildschirmdrehung, Flip

  • Support-Screenshot

Projektbedeutung: Beherrschen Sie die Entwicklung des Players, einschließlich Kernmechanismen wie Player-Framework-Analyse, Moduldesign, Warteschlangendesign, Audio- und Videosynchronisation, Geschwindigkeitsänderung sowie Drag & Play.

4.2 FFmpeg RTMP-Aufzeichnungs- und Streaming-Projekt

  • Einführung in das RTMP-Protokoll

  • Aufnahme- und Streaming-Framework-Analyse

  • Mikrofon, Systemtonaufnahme

  • Analyse und Auflösung der Tonaufnahmelatenz

  • Webcam, Bildschirmaufnahme

  • Analyse und Auflösung der Bildschirmaufnahmeverzögerung

  • Audio-Resampling

  • Videomaßstab

  • AAC-Encoder-Paket

  • H264-Encoder-Paket

  • Optimierung der Audiokodierungsparameter

  • Videokodierungsqualität/CPU/Bitrate/Verzögerungsoptimierung

  • So legen Sie den Zeitstempel beim Sammeln von Audio und Video fest

  • Erfassung-Kodierung-Push-Stream-Zeitstempelkonvertierung

  • Speichern Sie Audio und Video als MP4-Dateien

  • Konvertierung von MP4-Zeitstempeln zum Erfassen, Kodieren und Speichern

  • Unterstützt die Streaming-Bildschirmvorschau

  • So unterstützen Sie H265-Streaming

  • So unterstützen Sie das Mischen von Mikrofon- und Systemton

  • Realisieren Sie die Audioerfassung und Rauschunterdrückung

  • Verursacht RTMP-Streaming Verzögerungen?

  • So passen Sie die Coderate des RTMP-Streamings dynamisch an

  • So passen Sie die Bildrate des RTMP-Streamings dynamisch an

  • Kann die Webseite RTMP-Streaming abrufen?

Projektbedeutung: Das Streaming-Modul dieses Projekts übernimmt die FFmpeg-API, und Live-Streaming kann auch ohne tiefe Kenntnisse des RTMP-Protokolls erreicht werden. Beherrschen Sie das Streaming-Framework und das Videoaufzeichnungs-Framework, einschließlich Kerntechnologien wie Audio- und Videosammlung, Modulaufteilung, Audio- und Videosynchronisation, Codierungsoptimierung und Streaming-Verzögerung.

4.3 FFmpeg RTMP-Streaming + Videoprojekt

  • Einführung in das RTMP-Protokoll

  • Stream- und Videobildanalyse

  • Pull-Flow-Modulpaket

  • AAC-Dekodierungsmodulpaket

  • H264-Dekodierungsmodulpaket

  • Design der Paketwarteschlange

  • Frame-Queue-Design

  • Realisieren Sie die Audio- und Videosynchronisierung

  • Ist es möglich, auf eine Analyse der Audio- und Videosynchronisation zu verzichten?

  • Kann ohne MetaData gespielt werden

  • Verursacht RTMP-Streaming Verzögerungen?

  • So erkennen Sie RTMP-Streaming-Verzögerungen

  • So beheben Sie die RTMP-Wiedergabeverzögerung

  • Fügen Sie Unterstützung für die Wiedergabe mit variabler Geschwindigkeit hinzu

  • Analyse und Einstellung der Wiedergabestrategie mit variabler Geschwindigkeit

  • Analyse und Umsetzung des Prinzips der zweiten Öffnungsfunktion

  • Können ffplay und vlc zum Testen der Wiedergabeverzögerung verwendet werden?

  • Realisieren Sie Streaming und speichern Sie Videos als MP4

  • Stream ziehen, MP4-Zeitstempelkonvertierung speichern

Hinweis: Master-RTMP-Live-Streaming- und Aufzeichnungs-Framework, einschließlich Kerntechnologien wie Streaming, Warteschlangendesign, Audio- und Videosynchronisierung, geringe Latenz und Speicherung als MP4-Dateien.

4.4 RTSP-Streaming- und Aufnahmeprojekt

  • Einführung in das RTSP-Protokoll

  • Realisieren Sie RTSP-Streaming + -Aufzeichnung basierend auf einem RTMP-Streaming-Projekt

Projektbedeutung: Das Streaming-Modul dieses Projekts übernimmt die FFmpeg-API, und Live-Streaming kann auch ohne tiefe Kenntnisse des RTSP-Protokolls erreicht werden. Beherrschen Sie das Streaming-Framework und das Videoaufzeichnungs-Framework, einschließlich Kerntechnologien wie Audio- und Videosammlung, Modulaufteilung, Audio- und Videosynchronisation, Codierungsoptimierung und Streaming-Verzögerung.

4.5 RTSP-Streaming + Videoprojekt

  • Einführung in das RTSP-Protokoll

  • Realisieren Sie RTSP-Streaming + Video basierend auf einem RTMP-Streaming-Projekt

Hinweis: Master-RTSP-Streaming- und Aufzeichnungs-Framework, einschließlich Kerntechnologien wie Streaming, Warteschlangendesign, Audio- und Videosynchronisierung, geringe Latenz und Speicherung als MP4-Dateien.

5. Projektpraxis

5.1 Selbstentwickelte Projekte und Quellcode-Analyse

  • SDL-Audioplayer

  • SDL-Videowiedergabe

  • Anzahl der FFmpeg-Speicherreferenzen

  • MP4/FLV/TS-Demultiplexing

  • H264 extrahieren

  • AAC extrahieren

  • H264/H265-Dekodierung

  • AAC/MP3-Dekodierung

  • AVIO-Speicher-Eingabemodus

  • Audio-Resampling

  • Konvertierung des Videogrößenformats

  • DXVA2-Dekodierung

  • NVDEC-Dekodierung

  • CUVID-Dekodierung

  • QSV-Dekodierung

  • Optimierung der AAC-Kodierung

  • Optimierung der H264-Kodierung

  • H265-Kodierungsoptimierung

  • AAC zu MP3

  • H264 bis H265

  • DXVA2-Kodierung

  • NVENC-Kodierung

  • CUVID-Kodierung

  • QSV-Kodierung

  • MP4-Synthese

  • FLV-Synthese

  • Multiplex-Audiomischung

  • Wasserzeichen zum Video hinzufügen

  • Zuschneiden des Videobereichs

  • Video-Flip

  • Video-Logo hinzufügen

  • ffplay-Spieler

  • Selbst entwickelter QT-Player

  • RTMP-Streaming

  • RTMP-Streaming

  • RTSP-Streaming

  • RTSP-Streaming

  • HLS-Streaming

6. Lernmethode

  • Lesen Sie zuerst das Dokument und schauen Sie sich dann das Video an

  • Führen Sie zuerst den Kurscode aus und debuggen Sie ihn, ändern Sie ihn dann, debuggen Sie ihn und versuchen Sie schließlich, ihn selbst neu zu schreiben

  • Die Wissenspunkte jeder Lektion werden in einem technischen Blog zusammengefasst (jeden Monat gibt es einen Blog-Wettbewerb mit Bonus-Support).

  • Durch die Kombination von Kursen und Arbeit können Nachfragefunktionen neu überdacht werden

  • Sprechen Sie mit dem Lehrer über die technischen Punkte, die Sie nicht verstehen

  • Teilweise Audio- und Video-Client-Richtung: Serverbezogene Inhalte dienen hauptsächlich dem Verständnis, wie z. B. dem SRS-Streaming-Medienserver, hauptsächlich dem Verständnis des Push-Pull-Streaming-Frameworks und der Protokollkonvertierungslogik, und es ist nicht erforderlich, zu viel Zeit mit dem Lesen des Quellcodes zu verbringen .

  • Richtung des Streaming-Media-Servers: Das Design der Benutzeroberfläche basiert auf Verständnis. Beispielsweise muss sich das Player-Projekt nur auf audio- und videobezogene Inhalte konzentrieren.

[Lernadresse]: Fortgeschrittene Entwicklung von FFmpeg/WebRTC/RTMP/NDK/Android-Audio- und Video-Streaming-Medien
[Vorteile des Artikels]: Erhalten Sie kostenlos weitere Audio- und Video-Lernmaterialpakete, Dachang-Interviewfragen, technische Videos und Lern-Roadmaps, einschließlich ( C/C++, Linux, FFmpeg webRTC rtmp hls rtsp ffplay srs usw.) Wenn Sie es benötigen, können Sie auf 1079654574 klicken , um der Gruppe beizutreten und es zu erhalten~

FFmpeg-Lernbücher

„FFmpeg From Getting Started to Mastering “ ist ein praktischer technischer Leitfaden zur Einführung in FFmpeg. Das Buch besteht aus 10 Kapiteln und ist in zwei Teile gegliedert. Teil (Kapitel 1 bis 7) ist die Befehlszeilenverwendung von FFmpeg, in der die Grundkomponenten von FFmpeg, die Verwendung von FFmpeg-Tools, der Verpackungsvorgang von FFmpeg, der Transcodierungsvorgang von FFmpeg, der Streaming-Media-Vorgang von FFmpeg usw. vorgestellt werden Filterbetrieb von FFmpeg, FFmpeg-Gerätebetrieb.

Der zweite Teil (Kapitel 8 bis 10) ist die API-Nutzung von FFmpeg, in der die API-Nutzungsoperation des FFmpeg-Kapselungsteils, die API-Nutzungsoperation des FFmpeg-Codec-Teils und die API-Nutzungsoperation des FFmpeg-Filterteils vorgestellt werden Alle relevanten Vorgänge basieren auf Beispielen. Die Methode wird beschrieben, einschließlich der Funktionsweise der neuen API und der alten API.

Dieses Buch eignet sich für Ingenieure, die sich mit serverseitiger Multimedia-Entwicklung und eingebetteten Videoverarbeitungsingenieuren befassen. Dieses Buch eignet sich auch für Informatik-Fachleute im Bachelor- und Masterstudium, insbesondere für die Richtung Multimedia-Forschung als Nachschlagewerk.

Es gibt auch eine PDF-Version von <<ffmpeg Source Code Analysis>> im Internet, und ich habe bisher keine anderen Bücher über ffmpeg gesehen; hier ist noch etwas: Verschiedene Versionen von ffmpeg können unterschiedliche APIs haben. Für Einzelheiten: Jeder kann auf die offizielle Website von ffmpeg gehen, um die manuellen Anweisungen anzuzeigen!

Supongo que te gusta

Origin blog.csdn.net/irainsa/article/details/130609379
Recomendado
Clasificación