AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Projekte Acinerella [Ver. 1.4] FFMpeg Wrapper
Thema durchsuchen
Ansicht
Themen-Optionen

Acinerella [Ver. 1.4] FFMpeg Wrapper

Ein Thema von igel457 · begonnen am 18. Jul 2008 · letzter Beitrag vom 23. Jan 2016
Antwort Antwort
tferl

Registriert seit: 5. Okt 2006
Ort: SBK
5 Beiträge
 
Delphi 7 Professional
 
#1

AW: Acinerella [Ver. 1.4] FFMpeg Wrapper

  Alt 13. Aug 2010, 13:57
Hallo Zusammen,

zunächst einmal Vielen Dank für dieses geniale Projekt.

Mit der Thematik selbst habe ich mich bislang noch nie beschäftigt und konnte Dank der schlanken übersichtlichen Bibliothek dennoch in kürzester Zeit ein Programm basteln, welches mir eine Thumbnail-Übersicht des gewählten Video-Clips erstellt.
Es funktioniert prima, jedoch möchte ich im nächsten Schritt den ganzen Prozess beschleunigen, indem ich mich "springend" durch den Stream bewege.

Dazu müsste ich die Funktion ac_seek() verwenden.

<ZITAT>
{Seeks to the given target position in the file. The seek funtion is not able to seek a single audio/video stream
but seeks the whole file forward. The deocder parameter is only used as an timecode reference.
The parameter "dir" specifies the seek direction: 0 for forward, -1 for backward.
The target_pos paremeter is in milliseconds. Returns 1 if the functions succeded.}
function ac_seek(pDecoder: PAc_decoder; dir: integer; target_pos: int64): integer; cdecl; external ac_dll;
</ZITAT>

Offen gestanden verstehe ich die Erklärung nicht.

Bedeutet der Aufruf ac_seek(Ac_decoder, 0 , 1000 ) , dass ich mich um 1000ms vorwärts bewege ?

Vielen Dank
thomas
  Mit Zitat antworten Zitat
Benutzerbild von igel457
igel457

Registriert seit: 31. Aug 2005
1.622 Beiträge
 
FreePascal / Lazarus
 
#2

AW: Acinerella [Ver. 1.4] FFMpeg Wrapper

  Alt 14. Aug 2010, 16:14
Die Funktion arbeitet nur mit absoluten Werten (wäre er relativ hätte ich ihn vermutlich timecode_offs genannt). Der DIR Parameter wird von FFMpeg benötigt, da FFMpeg unter Umständen nicht weiß, wo sich der Stream aktuell befindet und somit wissen muss, ob es nun vorwärts oder rückwärts suchen soll.

Mit dem Kommentar am Anfang meine ich nur, dass nicht getrennt in Audio-/Video-Streams gesucht werden kann, sondern nur jeweils in einem einzelnen, obwohl man einen einzelnen Dekoder für einen Teilstream angibt. Zum Suchen wird jedoch der Timecode, der im angegebenen Teilstream steckt, verwendet.

Ich hoffe, ich habe alle Klarheiten nun beseitigt
Andreas
"Sollen sich auch alle schämen, die gedankenlos sich der Wunder der Wissenschaft und Technik bedienen, und nicht mehr davon geistig erfasst haben als die Kuh von der Botanik der Pflanzen, die sie mit Wohlbehagen frisst." - Albert Einstein
  Mit Zitat antworten Zitat
tferl

Registriert seit: 5. Okt 2006
Ort: SBK
5 Beiträge
 
Delphi 7 Professional
 
#3

AW: Acinerella [Ver. 1.4] FFMpeg Wrapper

  Alt 16. Aug 2010, 12:26
Hallo Andreas,

vielen Dank für Deine schnelle Antwort.

Stimmt - hätte ich mit etwas überlegen selbst herausfinden können.
Das man im Audio- und Videostream nicht getrennt "navigieren" kann sehe ich
für meinen Zweck nicht als Nachteil.

Zusammegefasst bedeutet dies, dass ich beim Funktionsaufruf ac_seek(ACDecoder, 0 , 10000);
an die Position 10 Sekunden ab Clipbeginn springe ???

Wenn ich das so probiere, liefert mir der folgende Aufruf
ac_read_package(AC_instance) ein NIL zurück.
(Der Clip ist natürlich länger als 10 Sekunden)


Ich bitte um Nachsicht für meine Unbeholfenheit, aber wie schon gesagt
das Thema ist absolut neu für mich....

Viele Grüße
thomas
  Mit Zitat antworten Zitat
Benutzerbild von igel457
igel457

Registriert seit: 31. Aug 2005
1.622 Beiträge
 
FreePascal / Lazarus
 
#4

AW: Acinerella [Ver. 1.4] FFMpeg Wrapper

  Alt 16. Aug 2010, 12:42
Ja, die Annahme ist korrekt Nur wenn du bereits 10 Sekunden abgespielt hast, musst du -1 als zweiten Parameter übergeben.

Leider ist das springen in Videos eine kniffelige Angelegenheit und ob und wie gut es funktioniert hängt vor allem vom Containerformat ab - und auch FFMpeg ist leider nicht perfekt.

Um das Springen im Video zu ermöglichen musst du auf jeden Fall eine "Seek"-Callback-Prozedur an die ac_open Routine übergeben.

Beim Abspielen von Audio, wofür ich Acinerella persönlich am meisten einsetze funktioniert das Suchen jedoch meistens einwandfrei (außer für FLAC Dateien ohne OGG-Container).

Andreas
Andreas
"Sollen sich auch alle schämen, die gedankenlos sich der Wunder der Wissenschaft und Technik bedienen, und nicht mehr davon geistig erfasst haben als die Kuh von der Botanik der Pflanzen, die sie mit Wohlbehagen frisst." - Albert Einstein
  Mit Zitat antworten Zitat
tferl

Registriert seit: 5. Okt 2006
Ort: SBK
5 Beiträge
 
Delphi 7 Professional
 
#5

AW: Acinerella [Ver. 1.4] FFMpeg Wrapper

  Alt 16. Aug 2010, 23:18
...dadurch dass ich nur die Keyframes weiter auswerte "rennt" das Programm recht schnell durch den Film und liefert mir die gewünschte Vorschau. Da die CPU ja zu 100% bezahlt ist, kann sie auch mal in der Mittagspause was tun und so komme ich auch ohne "Sprünge" zum Ziel.

nochmals Vielen Dank
  Mit Zitat antworten Zitat
mimi

Registriert seit: 1. Dez 2002
Ort: Oldenburg(Oldenburg)
2.008 Beiträge
 
FreePascal / Lazarus
 
#6

AW: Acinerella [Ver. 1.4] FFMpeg Wrapper

  Alt 9. Jan 2011, 17:45
Ich habe Acinerella Erfolgreich unter Linux Kompilieren können und kann sie in Lazarus nutzen. Nur habe ich eine Frage:
Im ersten Beitrag von diesem Thread steht drin, dass man mit Acinerella ein Multiemdiaplayer schreiben könnte. Aber wie? Ich finde keine Passenden Funktion/Proceduren dafür. Das Demo Programm hilft mir auch nicht wirklich weiter. Denn, es spielt keine Datei wirklich ab, die ich hören könnte oder verstehe ich hier etwas Falsch? Ich dachte folgendes müsste gehen: Ich öffne eine Audio Datei und kann sie dann Abspielen und Anhören.
Michael Springwald
MFG
Michael Springwald,
Bitte nur Deutsche Links angeben Danke (benutzte überwiegend Lazarus)
  Mit Zitat antworten Zitat
Benutzerbild von igel457
igel457

Registriert seit: 31. Aug 2005
1.622 Beiträge
 
FreePascal / Lazarus
 
#7

AW: Acinerella [Ver. 1.4] FFMpeg Wrapper

  Alt 9. Jan 2011, 22:22
Hi,

Acinerella kümmert sich um das Dekodieren von Audio- und Videoströmen. Es werden also sehr komplex komprimierte Daten in einfach zu verwendete Rohdaten "zurückverwandelt". Audiodaten in "PCM-Wave" und Videodaten in einfache "RGB-Bitmaps". Auf dem Weg zur Multimediawiedergabe ist dieser Schritt der schwierigste.

Um die Daten wiederzugeben, müssen sie "nur noch" an eine entsprechende Ausgabebibliothek gestreamt werden - wenn man sich mit Threads und Pointern auskennt ist das auch kein Problem. Für alle anderen gibt es zum Beispiel Audorra mit welches unter Zuhilfenahme von Acinerella fast jedes existierende Audioformat Plattformübergreifend wiedergibt oder das Video-Modul von Andorra 2D.

Hoffe das hilft dir,
Andreas
Andreas
"Sollen sich auch alle schämen, die gedankenlos sich der Wunder der Wissenschaft und Technik bedienen, und nicht mehr davon geistig erfasst haben als die Kuh von der Botanik der Pflanzen, die sie mit Wohlbehagen frisst." - Albert Einstein
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:59 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz