# Wie Videokomprimierung Batchen und welcher Codec geeignet?

## STiGMaTa_ch

Hallo zusammen

Ich habe ein Problem mit meinem Windows XP Rechner  :Surprised:  (Keine Panik, ich BIN im richtigen Forum! einfach weiterlesen...).

Meine 170GB Partition ist bis oben hin voll mit Serienmitschnitten welche ich mit meiner Hauppage PVR-350 durchgeführt habe.

Wenn ich bei den Mitschnitten die Werbung entfernt habe und einen Vorspann/Abspann hinzugefügt habe sind die Files ca. 2.5GB gross (ja sind gross, aber ich hab einfach "hohe qualität" eingestellt und fertig). Nun habe ich letzthin versuchshalber einen solchen Mitschnitt mittels divx auf 700MB komprimiert und war begeistert.

Dann habe ich letzte Woche die Trial von divx 6.0 converter heruntergeladen und bin fast aus den latschen gekippt. Die Serien wurden mittels der "High Definition" Option auf ca. 350MB gestampft, bei fast gleichbleibender Qualität.

Da ich nun ca. 50 solcher Mitschnitte habe, dachte ich mir, einfach alles im converter hinzufügen, über Nacht laufen lassen und gut ist...

Leider war dem nicht so. Das Ding stürzte jeweils einfach ohne eine Meldung ab. Ich habe das auf verschiedenste Wege getestet (div. Rechner, blitzblankes XP etc.) dieser divx Converter funktioniert einfach nicht (oder liegts ev. an der Trial Version?).

Von Hand alle die 50 Files umzuwandeln ist auch eher mühsam.

Daher suche ich nun nach einer alternative unter Linux. Da ich das jedoch noch nie gemacht habe, bin ich auf Erfahrungsberichte oder Tipps von euch angewiesen  :Wink: 

Also...

- Welche LINUX Software würdet Ihr mir empfehlen, damit ich die 50 Files unbeaufsichtigt konvertieren lassen kann?

- Kann man für den Codec einfach das divx4linux emergen?

- Oder gibt es eine alternative zu divx, welche die Files in ähnlicher Qualität und grösse eindampfen kann? Und wenn ja, kann man die Files dann auch auf Windows wieder anschauen (Keine Grundsatzdiskussion jetzt. Muss einfach so sein!  :Wink:  ).

- Ideal wäre es auch, wenn das ganze so simpel wie "converter" ist. Also Filme Auswählen, "High definition" auswählen, schlafen, 50 komprimierte Files entgegennehmen  :Laughing: 

- Oder soll ich das ganze prinzipiell unter Linux vergessen?

Würde mich auf Feedback freuen...

Lieber Gruss

STiGMaTa

----------

## Mr_Maniac

Nun... Als Codec würde ich dir XviD empfehlen...

Läuft auf Windows und Linux, ist Open Source und ist, soviel ich weiß, gleichwertig zu DivX...

Und zum umwandeln... Hmm... Da würde ich ein Shell-Script schreiben, dass dies erledigt...

Zum konvertieren selbst würde ich Transcode empfehlen...

----------

## STiGMaTa_ch

@Mr_Maniac

Danke vielmals. XviD kannte ich gar nicht, hört sich aber vielversprechend an. Gleich mal testen heute Abend...

@all

Da tut sich mir grad ne andere Frage auf...

Da ich unter Windows nur einen OGG Decoder installiert hatte (Weiss gar nicht ob es einen nativen Encoder für Win gibt) musste ich jeweils mp3 für die Musik Kompression verwenden.

Kann ich unter Linux den Sound der Serien mit Ogg Vorbis codieren? Wenn ja, reicht es da einfach libogg emerged zu haben oder braucht es da was anderes dafür?

Lieber Gruss

STiGMaTa

----------

## TheCurse

Leider hat transcode etwa 3mio. Schalter, die man verwenden kann... Ich bin da jedenfalls noch nicht durchgestiegen, da ich auch keine Ahnung von Videos etc. hab...

----------

## Fauli

Du kannst das in etwa so machen:

```
transcode -i input.mpeg -y xvid4,ogg -o video.xvid4 -m audio.ogg

ogmmerge -o complete.ogg video.xvid4 audio.ogg
```

ogmmerge ist im Paket media-sound/ogmtools enthalten. Bei transcode kannst du natürlich noch mittels zahlreicher Optionen Feineinstellungen vornehmen, z. B. die Bitraten usw.

----------

## STiGMaTa_ch

 *Fauli wrote:*   

> Du kannst das in etwa so machen:
> 
> ```
> transcode -i input.mpeg -y xvid4,ogg -o video.xvid4 -m audio.ogg
> 
> ...

 

Cool, danke vielmals! Das erleichtert doch schon eine Menge! Meine ersten transcode Versuche scheiterten kläglich. Aber mit deinem Befehl klappt das Wunderbar  :Smile: 

Tja, dann muss ich mir jetzt nur noch das Wissen aneignen, wass all die Optionen bedeuten *sigh*

Hat mir vielleicht jemand einen Link zu ner allgemeinen (also nicht transcode spezifisch) und guten Erklärung? Ich habe vieles gefunden, aber das meiste war nur sowas im Stil von "Und jetzt encodieren wir zusammen was. Mach mir alles nach und frag nicht was die Optionen bewirken... (ich weiss es selber nicht  :Laughing:  )"

Mich würde jedoch mehr das Knowhow interessieren. Also z.B. ein Artikel/Howto/was auch immer, der nicht im speziellen auf transcode oder sowas eingeht sondern eher erklärt was sich hinter AC3, VOB, YUV2, demuxer etc. verbirgt, wie man relativ einfach gute Ergebnisse erziehlen kann, was man Grundlegend für Tools benötigt um Filme inkl. Sound von einem Format in ein anderes umzuwandeln, wie man Sound Synchron hält etc.

Schon mal danke im Vorraus!

@Edit

Tja, kaum fragt man mal nach, da findet man dann auch schon selber etwas  :Smile:  Für alle interessierten: Hier ist ein Link zu einem gezipten PDF, welches einige Grundlagen sowie auch den Mathematischne Hintergrund im Umgang mit xvid liefert (Gut, die Screenshots sind für Windows, aber wenn man kapiert hat um was es geht, findet man auch die entsprechenden Optionen unter Linux!).

Lieber Gruss

STiGMaTa

----------

## qeldroma

Also, auch wenn ich mich jetzt einigen Angriffen aussetze:

Unter Linux ist das Codieren immer noch ziemlich schlecht. Zwar erreicht man dank der gleichen Codecs natürlich die Qualität, aber ein transcode/mencode ist um den Faktor zwei langsamer als das gleiche unter WindowsXP.

Außerdem fehlt einfache ein RICHTIG gutes Frontend, um alles in einem Rutsch auch mit ausführlicher Doku hinzubekommen.

Einerseits hat man DVD::RIP, jedoch taugt das nur wenn man eine DVD eingelegt hat(Images erkennt es nicht an, obwohl man diese anwählen kann) und bietet leider einige Codierungsoptionen nicht....

Dann noch avidemux. Natürlich nur für fertige AVI's. Leider verhäxelt dieses manchmal den Ton, oder die Bildreihenfolge biem Zusammenschneiden, so daß das Ergebnis nicht zu gebrauchen ist.

Ich würde mal sagen, das Codieren unter Linux noch im Anfangszustand ist(wenn auch sehr vielversprechend, wie die beiden erwähnten Programme eindrucksvoll demonstrieren), auch wenn man per console erstmal prinzipiell alles hinbekommt, abgesehen von der Geschwindigkeit.

Wer jedoch keine Zeit hat sich durch zig Seiten erstmal durchzuwühlen um zu verstehen, wie man z.B. mit transcode oder mencoder einen DVD-Film rippt im 2-pass-Verfahren, sollte eher vorerst bei XP bleiben.

Wie gesagt, das ist jetzt KEINE Feststellung GEGEN Linux  :Confused:  Bleibt ruhig Leute  :Rolling Eyes:   :Wink: 

Grüße, Qeldroma

----------

## STiGMaTa_ch

 *qeldroma wrote:*   

> Unter Linux ist das Codieren immer noch ziemlich schlecht. Zwar erreicht man dank der gleichen Codecs natürlich die Qualität, aber ein transcode/mencode ist um den Faktor zwei langsamer als das gleiche unter WindowsXP.

 

Hmm.. also davon habe ich nichts gemerkt. Ich hatte eher das Gefühl, dass es sogar schneller ist...

Zum Vergleich:

"Wenn coverter unter XP denn einmal durchgelaufen ist" hat es mir den 2.5GB Schinken in ca. 30-35min auf 350MB runter konvertiert. Mein XP Rechner ist ein 3.4GHz P4.

Wenn ich das Video auf meinem Linux Laptop "1.6GHz Centrino Mobile" mittels der Befehle von Fauli konvertiere dauert das runterkonvertieren auf 500MB exakt 44Minuten.

Gut, die DIVx Version ist um 150MB kleiner geworden, dafür ist mein Laptop auch nur halb so schnell wie der grosse Bruder. Aber 10Minuten unterschied sind doch gar nicht mal so schlecht oder?

Lieber Gruss

STiGMaTa

----------

## schachti

 *qeldroma wrote:*   

> 
> 
> Unter Linux ist das Codieren immer noch ziemlich schlecht. Zwar erreicht man dank der gleichen Codecs natürlich die Qualität, aber ein transcode/mencode ist um den Faktor zwei langsamer als das gleiche unter WindowsXP.
> 
> 

 

Das hört sich doch sehr nach Hörensagen an...

Welches Programm hast Du unter Windows benutzt, welches unter Linux? Welche Codecs jeweils, welche Einstellungen? Gleiches Videomaterial?

----------

## Mr_Maniac

Ich merke übrigens auch keinen Unterschied in der Zeit...

Zu XviD:

Unter /usr/lib/transcode sind verschiedene Config-Dateien abgelegt.

Ich empfehle, die xvid4.cfg nach ~/.transcode zu kopieren und anzupassen...

So erreicht man die bestmögliche Qualität und Kompression...

Ich z.B. transcode gerne mit VHQ auf höchster Stufe, Quarterpel an, quant_type = mpeg, gmc an und trellis an

So werden manche Videos sogar noch kleiner, als ich will... Ich habe so zwei Videos (In Spielfilmlänge) auf eine DVD gepackt und hatte, obwohl ich die Bitrate genau berechnet hatte, noch einen GB frei  :Shocked: 

Ich habe übrigens ein kleines Script, dass mir AVI-Dateien aus dem RAW-Format in zwei Pässen zu XviD4 umwandelt...

Allerdings kann ich mit transcode irgendwie den Ton nicht direkt in MP3 umwandeln lassen... 

Also lasse ich eine wav-Datei extrahieren und wandle diese dann um.

Das Script:

```

#!/bin/bash

transcode -i $1 -x raw,null -y xvid4,null -z -w 10000 -o /dev/null -R 1 --use_rgb

transcode -i $1 -x raw,null -y xvid4,null -z -w 10000 -o $2 -R 2 --use_rgb

transcode -i $1 -x null,raw -y null,wav -o $2.wav

lame -b 128 -m j -h $2.wav $2.mp3 && rm $2.wav

```

($1 ist die Input-Datei und $2 die Output-Datei.)

----------

## STiGMaTa_ch

 *Mr_Maniac wrote:*   

> Unter /usr/lib/transcode sind verschiedene Config-Dateien abgelegt.

 

Jetzt machst du mir aber langsam Angst Mr_Maniac.  :Shocked: 

Seit wann werdem in diesem Forum die Antworten zu meinen Fragen gepostet, bevor ich die Frage Stelle?  :Laughing: 

Die Frage brannte mir seit gestern auf der Zunge, ich wollte aber zuerst selber versuchen die Lösung zu finden.

Also, Wer diesen Artikel über xvid4 Einstellungen unter Windows gelesen hat, kann einfach die Otpionen entweder in './xvid4.cfg' oder '~/.transcode/xvid4.cfg' eintragen.

Liebe Grüsse

STiGMaTa

----------

## qeldroma

hmmm.... meint ihr? Das letzte Mal, das ich codiert hatte war vor ca. nem dreiviertel-Jahr.. Ob sich seither so viel getan hat?

Ich habe damals DivX4, 2-pass unter Win(Ich glaube TmpgENC??) und Linux (transcode) verglichen und da kam Linux sehr deutlich nicht hinterher.

Beidesmal eine Zielgröße angegeben, gleiches Rohmaterial.... Dafür schmierte mir XP zweimal ab, bevor es einmal durchlief  :Rolling Eyes: 

Aber wenn das inzwischen so fix ist, dann sollte ich das wohl zurücknehmen  :Wink:  Würde mich ja freuen....

Grüße, Qeldroma

----------

## fangorn

Also ich verwende ständig transcode, bin einfach zu faul, ständig zu warten bis die Jobs fertig sind

speichert dies in einem script, bei mir ~/bin/transcode-en-de

```

#!/bin/sh

transcode -i $1 -a0 -w $3 -F mpeg4 -b 128,0,5,1  -y ffmpeg -o $2 -J preview=xv -V

transcode -i $1 -a1 -g 0x0 -u 50 -y raw -b 128,0,5,1 -o $2.mp3

avimerge -i $2 -p "$2.mp3" -a 1 -o "$2.avi.merged" && mv "$2.avi.merged" $2 && rm "$2.mp3"

```

Es handelt sich um one pass encoding, mit einer Video Datenrate von 1000 ergeben sich Dateien mit ca. 350 MB bei einer Tonspur und 400 MB bei zwei Tonspuren. Die Queli dieser One Pass Encodierung mit FFMpeg reicht mir bei Fernsehaufnahmen ewig! Wichtig ist sowieso eher das verbessern der Rohdaten, als eine effiziente Codierung des Flächenrauschens  :Laughing: 

Das ganze ist ausgelegt auf zweisprachiges Ausgangsmaterial, das dann in AVI mit zwei MP3 Tonspuren umgewandelt wird. Für Videos mit einer Tonspur einfach die beiden letzten Zeilen weglassen.

aufgerufen wird das ganze dann mit 

```

transcode-en-de <Pfad_zur_eingabedatei> <Pfad_zur_ausgabedatei> <Datenrate_fuer_Video>

```

Diese Kommandozeile kann man natürlich auch in ein script packen, das den Rechner dann für die nächsten Wochen beschäftigt. Nur für genügend Platz auf der Platte sollte man vorher sorgen  :Twisted Evil: 

Da es sich um Fernsehaufzeichnungen handelt solltest du noch die Filter 

-J smartdeinter=threshold=10:Blend=0:diffmode=2:highq=1:cubic=1

-J dnr

ausprobieren. Mit dem Filter -J preview=xv bekommst du eine onlineanzeige, was die Filter bewirken. dnr steht für dynamic noise reduction und reduziert das böse Flächenrauschen. Bei meiner Aufnahmekette passen die Grundeinstellungen ganz gut, wenn bei dir die Auswirkungen auf die Kantenschärfe zu groß sind, musst du dich wohl oder übel mit den Optionen des Filters beschäftigen. SmartDeinterlace tut genau das. was der Name sagt, es macht aus einem Fernsehbild mit Kammstruckturen an jeder bewegten Kante ein mehr oder weniger glattes Bild.

An alle Benchmarker hier:

smartdeinterlace und dnr sind SEHR rechenintensiv und ich kenne - mit Ausnahme von Virtualdub - kein Windows Programm, das auch nur ähnliche Filter bietet. Also könnt ihr die Rechenzeiten mit diesen Filtern auf gar keinen Fall mit Ergebnissen unter Windows vergleichen  :Cool: 

@Queldroma

Und hast du auch die Quali verglichen? Außerdem ist DIVX4 auch nicht unbedingt der repräsentativste Codec (seit wievielen Jahren wird der nicht mehr weiterentwickelt?) Vergleich mal die Erstellung eines MPEG4 kompatiblen Videostreams. Unter Windows mit DIVX 5.x oder XVID oder FFMPEG und unter Linux mit XVID oder FFMPEG.

----------

## STiGMaTa_ch

@fangorn

Danke vielmals! Ich werde heute Abend mal ein wenig damit rumspielen und die Ergebnisse vergleichen.

@all

Ich habe noch ein kleines Problem festgestellt  :Sad: 

Sobald ich anstelle von xvid4 und ogg einen anderen Video codec verwende crasht transcode bei mir. Selbst wenn ich nur VIDEO verarbeite (also z.B. -y xvid4,null) crasht es mit einem anderen encoder. Hat mir jemand vielleicht einen Tipp woran das liegen könnte?

Emerged hatte ich das ganze mittels 

```
emerge transcode ogmtools
```

. Als abhängigkeiten wurden mir dann diverse Codecs mit installiert.

Mache ich z.B. einen:

```
transcode -i testmovie.mpg -y xvid4,null -o testmovie.xvid4
```

funktioniert alles:

```
pcs@labrador ~/video/test $ transcode -i testmovie.mpg -y xvid4,null -o testmovie.xvid4

transcode v0.6.14 (C) 2001-2003 Thomas Oestreich, 2003-2004 T. Bitterberg

[transcode] (probe) suggested AV correction -D 0 (0 ms) | AV 39 ms | 39 ms

[transcode] auto-probing source testmovie.mpg (ok)

[transcode] V: import format    | MPEG    (V=mpeg2|A=mp3)

[transcode] V: AV demux/sync    | (0) sync AV at PTS start - demuxer disabled

[transcode] V: import frame     | 720x576  1.25:1  encoded @ 4:3

[transcode] V: bits/pixel       | 0.174

[transcode] V: decoding fps,frc | 25.000,3

[transcode] V: Y'CbCr           | YV12/I420

[transcode] A: import format    | 0x50    MPEG layer-2 [48000,16,2]  224 kbps

[transcode] A: export           | disabled

[transcode] V: encoding fps,frc | 25.000,3

[transcode] A: bytes per frame  | 7680 (7680.000000)

[transcode] A: adjustment       | 0@1000

[transcode] A: AV shift         | 39 ms [ 0 (A) | 39 ms ]

[transcode] V: IA32 accel mode  | sse2 (sse2 sse mmxext mmx asm C)

tc_memcpy: using libc for memcpy

[transcode] V: video buffer     | 10 @ 720x576

[import_mp3.so] v0.1.4 (2003-08-04) (audio) MPEG

[import_mpeg2.so] v0.4.0 (2003-10-02) (video) MPEG2

[export_null.so] v0.1.2 (2001-08-17) (video) null | (audio) null

[export_xvid4.so] v0.0.5 (2003-12-05) (video) XviD 1.0.x series (aka API 4.0) | (audio) MPEG/AC3/PCM

[import_mp3.so] MP3->PCM

[import_mp3.so] tcextract -a 0 -i "testmovie.mpg" -x mp2 -d 0 | tcdecode -x mp2 -d 0 -z 0

tc_memcpy: using libc for memcpy

[import_mpeg2.so] tcextract -x mpeg2 -i "testmovie.mpg" -d 0 | tcdecode -x mpeg2 -d 0 -y yv12

tc_memcpy: using libc for memcpy

[export_xvid4.so] Reading configuration from './xvid4.cfg'

[export_xvid4.so] Reading config section 'features' from './xvid4.cfg'

[export_xvid4.so] Reading config section 'quantizer' from './xvid4.cfg'

[export_xvid4.so] Reading config section 'cbr' from './xvid4.cfg'

[export_xvid4.so] Reading config section 'vbr' from './xvid4.cfg'

[encoder.c] Delaying audio (0)

[encoder.c] Delaying audio (0)],  35.55 fps, EMT: 0:00:00, ( 0| 0| 0)

encoding frames [000000-000749],   9.73 fps, EMT: 0:00:29, ( 0| 0| 0)

clean up | frame threads | unload modules | cancel signal | internal threads | done

[transcode] encoded 750 frames (0 dropped, 0 cloned), clip length  30.00 s
```

ändere ich nun aber die Zeile ab und nehme stattdessen divx5 (was auch installiert scheint) crasht das ganze mit einem Segmentation Fault:

```
Searching...

[ Results for search key : divx ]

[ Applications found : 1 ]

*  media-libs/divx4linux

      Latest version available: 20030428-r1

      Latest version installed: 20030428-r1

      Size of downloaded files: 405 kB

      Homepage:    http://www.divx.com/

      Description: Binary release of DivX Codec 5.0.5

      License:     DIVX

```

```
transcode -i testmovie.mpg -y divx5,null -o testmovie.xvid4
```

```

pcs@labrador ~/video/test $ transcode -i testmovie.mpg -y divx5,null -o testmovie.divx

transcode v0.6.14 (C) 2001-2003 Thomas Oestreich, 2003-2004 T. Bitterberg

[transcode] (probe) suggested AV correction -D 0 (0 ms) | AV 39 ms | 39 ms

[transcode] auto-probing source testmovie.mpg (ok)

[transcode] V: import format    | MPEG    (V=mpeg2|A=mp3)

[transcode] V: AV demux/sync    | (0) sync AV at PTS start - demuxer disabled

[transcode] V: import frame     | 720x576  1.25:1  encoded @ 4:3

[transcode] V: bits/pixel       | 0.174

[transcode] V: decoding fps,frc | 25.000,3

[transcode] V: Y'CbCr           | YV12/I420

[transcode] A: import format    | 0x50    MPEG layer-2 [48000,16,2]  224 kbps

[transcode] A: export           | disabled

[transcode] V: encoding fps,frc | 25.000,3

[transcode] A: bytes per frame  | 7680 (7680.000000)

[transcode] A: adjustment       | 0@1000

[transcode] A: AV shift         | 39 ms [ 0 (A) | 39 ms ]

[transcode] V: IA32 accel mode  | sse2 (sse2 sse mmxext mmx asm C)

tc_memcpy: using libc for memcpy

[transcode] V: video buffer     | 10 @ 720x576

[import_mp3.so] v0.1.4 (2003-08-04) (audio) MPEG

[import_mpeg2.so] v0.4.0 (2003-10-02) (video) MPEG2

[export_null.so] v0.1.2 (2001-08-17) (video) null | (audio) null

[export_divx5.so] v0.1.8 (2003-07-24) (video) DivX 5.xx | (audio) MPEG/AC3/PCM

[import_mp3.so] MP3->PCM

[import_mp3.so] tcextract -a 0 -i "testmovie.mpg" -x mp2 -d 0 | tcdecode -x mp2 -d 0 -z 0

tc_memcpy: using libc for memcpy

[import_mpeg2.so] tcextract -x mpeg2 -i "testmovie.mpg" -d 0 | tcdecode -x mpeg2 -d 0 -y yv12

tc_memcpy: using libc for memcpy

Segmentation fault

pcs@labrador ~/video/test $ sh: line 1: 11794 Broken pipe             tcextract -a 0 -i "testmovie.mpg" -x mp2 -d 0

     11795                       | tcdecode -x mp2 -d 0 -z 0

sh: line 1: 11797 Broken pipe             tcextract -x mpeg2 -i "testmovie.mpg" -d 0

     11800                       | tcdecode -x mpeg2 -d 0 -y yv12
```

Verwende ich divx4 erhalte ich folgenden (etwas gekürzten) Output:

```
[transcode] V: video buffer     | 10 @ 720x576

[import_mp3.so] v0.1.4 (2003-08-04) (audio) MPEG

[import_mpeg2.so] v0.4.0 (2003-10-02) (video) MPEG2

[export_null.so] v0.1.2 (2001-08-17) (video) null | (audio) null

[export_divx4.so] v0.3.10 (2003-07-24) (video) DivX 4.x/5.x | (audio) MPEG/AC3/PCM

[import_mp3.so] MP3->PCM

[import_mp3.so] tcextract -a 0 -i "testmovie.mpg" -x mp2 -d 0 | tcdecode -x mp2 -d 0 -z 0

[import_mpeg2.so] tcextract -x mpeg2 -i "testmovie.mpg" -d 0 | tcdecode -x mpeg2 -d 0 -y yv12

[export_divx4.so] WARNING: Unrecognized API version ID (20021024) returned by DivX encore library: Making a guess that it's a 5.x-style interface (please report this message and your DivX library version to the transcode developers)

[export_divx4.so] DivX 5.x libraries detected.

[transcode] warning : (encoder.c) video export module error: init failed

codec open error[transcode] critical: failed to init encoder

pcs@labrador ~/video/test $ tc_memcpy: using libc for memcpy

tc_memcpy: using libc for memcpy

sh: line 1: 11854 Broken pipe             tcextract -a 0 -i "testmovie.mpg" -x mp2 -d 0

     11855                       | tcdecode -x mp2 -d 0 -z 0

sh: line 1: 11856 Broken pipe             tcextract -x mpeg2 -i "testmovie.mpg" -d 0

     11857                       | tcdecode -x mpeg2 -d 0 -y yv12
```

Ein sich fragender STiGMaTa  :Question: 

----------

## fangorn

Hast du ffmpeg installiert? ist ein eigenes Paket.

emerge media-video/ffmpeg

Vielleicht musst du transcode neu übersetzen mit dem einschlägigen USE-flags

mp3 ogg theora avi mpeg ffmpeg win32codecs ... (kann micht nicht mehr so genau erinnern  :Rolling Eyes:  )

Hast du mal meine Kommandozeile probiert? Es gibt auch eine Option, um sich die verfügbaren Codecs anzeigen zu lassen, ich kann mich nur nicht mehr daran erinnern. Das ganze verblasst ziemlich schnell. Ich habe nur einmal meine Skripte eingerichtet und seit die das tun was sie sollen habe ich man transcode tunlichst vermieden  :Laughing: 

----------

## STiGMaTa_ch

 *fangorn wrote:*   

> Hast du ffmpeg installiert? ist ein eigenes Paket.

 

Nein, hatte ich nicht. Darum hatte es mit deinen Befehlen wohl auch nicht funktioniert! Danke, jetzt funktioniert zumindest ein kurzer Test. Ob das ganze komplett durchläuft muss ich später testen  :Wink: 

Aber divx bringt bei mir nach wie vor noch ein Segmentation Fault.

Transcode habe ich mit folgendne USE Flags gesetzt:

```
Calculating dependencies ...done!

[ebuild   R   ] media-video/transcode-0.6.14-r2  -3dnow +X -a52 (-altivec) +avi +divx4linux -dv -dvdread +encode -fame +gtk -imagemagick +jpeg -lzo -mjpeg -mmx +mpeg -network +ogg -pvm +quicktime +sdl -sse -sse2 -theora +truetype -v4l +vorbis +xml2 +xvid 0 kB

```

Fehlt da was? Fehlt ein Paket oder ist mein divx einfach buggy???

Lieber Gruss

STiGMaTa

----------

## fangorn

Hier mal ein Kommentar zu deinen Use-flags

-a52   kein AC3 oder DTS Decoding (auch nicht mit ffmpeg, das du vllt auch mit diesem Flag kompiliert hast)

-dv     kein DV, kein Problem, wenn du keine Digitale Videokamera hast

-dvdread  kein einlesen von DVD-Video, da du den Ton nicht lesen kannst auch kein Problem  :Wink: 

-mjpeg     kein Motion JPEG, das in dv Datenströmen verwendet wird um die Einzelbilder zu komprimieren

-theora     keine Videos nach dem freien OGG Theora Standard

Es fehlen noch

+lame  (oder wie das Flag für den LAME MP3 Codec heisst

+ffmpeg (soweit ich weiss, ist das auch ein USE Flag)

+win32codecs (damit kann transcode und der Mplayer und meines Wissens auch xine die meisten der unter Windows gängigen Video und Audioformate lesen, also auch nicht DRM geschützte wma und wmv, DIVX;) Audio (findet man immer noch  :Evil or Very Mad:  ))

Jetzt noch ein paar, von denen ich nicht mehr weiss, ob es sie auch wirklich gibt, aber in der Beispieldatei (Pfad steht im Handbuch, muss ich auch immer nachsehen) findest du vielleicht auch noch ein paar mehr interessante Flags

+flac (nicht verlustbehafteter Audio Codec)

+mpc (verbessertes MP3, leider Proprietär)

Wenn du alle beisammen hast, die du haben willst, mach ein 

```

emerge --newuse world

```

um die Einstellungen für alle Anwendungen zu übernehmen, die etwas davon haben.

----------

## STiGMaTa_ch

 *fangorn wrote:*   

> Hier mal ein Kommentar zu deinen Use-flags
> 
> -a52   kein AC3 oder DTS Decoding (auch nicht mit ffmpeg, das du vllt auch mit diesem Flag kompiliert hast)
> 
> -dv     kein DV, kein Problem, wenn du keine Digitale Videokamera hast
> ...

 

Hmm... also Videokamera habe ich keine, daher denke ich dass ich dv und mjpeg nicht setzen muss. Und DVD's will ich eigentlich nicht rippen (Wozu? Ich habe die DVD ja  :Laughing: ). Das heisst, ich muss nur das theora USE Flag setzen. Gut, mach ich heute Abend.

 *Quote:*   

> Es fehlen noch
> 
> +lame  (oder wie das Flag für den LAME MP3 Codec heisst

 

```
grep mp3 /usr/portage/profiles/use.desc /usr/portage/profiles/use.local.desc

/usr/portage/profiles/use.desc:mad - Adds support for mad (high-quality mp3 decoder library and cli frontend)

/usr/portage/profiles/use.desc:mp3 - Add support for reading mp3 files

/usr/portage/profiles/use.local.desc:media-video/mpeg4ip:lame - Support LAME mp3 encoding in the server/mp4live
```

Okay, mp3 sowie mad sind bei mir schon gesetzt. Die lame USE Flag wird anscheinend nur für das mpeg4ip Paket (das ich ebenfalls nicht installiert habe) benötigt. Sollte ich das Paket mit dem lame USE Flag installieren?

 *Quote:*   

> +ffmpeg (soweit ich weiss, ist das auch ein USE Flag)

 

```
grep ffmpeg /usr/portage/profiles/use.desc

ffmpeg - Enable ffmpeg support
```

Hast recht, so heisst es  :Smile:  Werd ich auch noch setzen.

 *Quote:*   

> +win32codecs (damit kann transcode und der Mplayer und meines Wissens auch xine die meisten der unter Windows gängigen Video und Audioformate lesen, also auch nicht DRM geschützte wma und wmv, DIVX;) Audio (findet man immer noch  ))

 

Okay, den hatte ich auch noch nicht.

 *Quote:*   

> Wenn du alle beisammen hast, die du haben willst, mach ein 
> 
> ```
> 
> emerge --newuse world
> ...

 

Yesses... Tja, dann werde ich wohl gleich zwei Fliegen mit einer Klappe schlagen und auch gleich noch den hinausgeschobenen Kernelupdate und alle Updates seit letztem Weekend einspielen. Ich melde mich dann wieder  :Wink: 

Schon mal im voraus Danke für die Unterstützung!

Lieber Gruss

STiGMaTa

----------

## Aldo

 *fangorn wrote:*   

> +mpc (verbessertes MP3, leider Proprietär)

 

Wie kommst du denn darauf?

MusePack (mpc) steht unter der GPL, ist kostenlos, lizenzzahlungsfrei und der Quellcode ist auch erhältlich.

Siehe http://www.musepack.net

----------

## fangorn

Was ich meinte, ist dass es, zumindest soweit ich weiss, nur die eine referenzimplementierung gibt und keinen weiteren decoder. Du brauchst somit immer ein plugin.

----------

## theche

mjpeg gibt es (als Videoformat) bei diversen Digicams

----------

## STiGMaTa_ch

So, nachdem ich erst einige Probleme beseitigen musste konnte ich nun letzte Nacht endlich eure Inputs verarbeiten.

Ich konvertiere nun meine CSI Folgen mit folgendem Script:

```
for a in `ls -1 CSI*.mpg`;

do

   transcode -i $a -y xvid4,null -w 1250 -Z 640x480 -o /dev/null -R 1;

   transcode -i $a -y xvid4,ogg -b 64,0,5,1 -Z 640x480 -w 1250 -o csi.xvid4 -m csi.ogg -R 2;

   ogmmerge -o `echo $a | cut -d "." -f1`-w1250-640x480-64bit.ogm csi.xvid4 csi.ogg;

   rm csi.xvid4 csi.ogg;

done 
```

Die Original Dateien sind zwischen 1.8GB und 2.3GB gross, die komprimierten Files werden dann zwischen 350MB und 400MB gross. Das konvertieren dauert bei mir ca. 1.25h (Pass1+2 zusammen). Kurz einige Informationen zum vorgehen:

- Im ersten Schritt wird das Original Material analysiert. Da hier kein gescheiter Video Output erzeugt wird, kann man das ganze nach /dev/null leiten. Wichtig ist ja nur die Log Datei, welche für den Pass 2 verwendet wird. Hier ein Überblick der Optionen:

```
-y xvid4,null    # Verarbeite nur den Video Stream

-w 1250    # Setze eine konstante Datenstream von 1250

-Z 640x480    # Wandle das Original (720x576) auf die grösse 640x480 um.

-o /dev/null    # Video Outpur nach /dev/null leiten

-R 1      # Durchgang 1
```

- Im zweiten Schritt wird dann anhand der Analyse der Film konvertiert. Die Optionen müssen gleich sein wie in Schritt 1!

Folgende zusätzlichen Optionen habe ich hinzugefügt:

```
-b 64,0,5,1   # Sound auf 64kbit herunter wandeln (hört sich nur mit Ogg gut an!)

-o csi.xvid4   # Ausgabe Datei für den Video Stream

-m csi.ogg   # Ausgabe Datei für den Audio Stream

-R 2      # Durchgang 2
```

- Im letzten Schritt wird dann das ogm File erzeugt welches Audio und Video enthält.

Zum abspielen der Dateien verwende ich unter Windows und Linux den Video Lan Client.

Danke nochmals an alle für die Unterstützung!

Lieber Gruss

STiGMaTa

----------

## zielscheibe

Hi,

@STiGMaTa_ch

Noch eine Anmerkung zu deinen USE-Flags. Ich würde dir empfehlen bei transcode und den Codecs (xvid,ffmpeg,male,ogg) die "sse" bzw "sse2" Optionen zur Beschleunigung des Encodierens zu verwenden. 

Weiterhin sind diese Programme besonders empfänglich (im Sinne von spürbaren Zeitvorteilen) für weitergehende CFlag Optionen.

Wenn du den xvid-Codec lieber graphisch konfigurieren willst, gibt es dafür das Tool.

```

media-video/xvid4conf

```

tschö

----------

## Fauli

Anstelle von `echo $a | cut -d "." -f1` kannst du auch ${a%%.*} schreiben.  :Smile: 

----------

## Aldo

```
transcode -i $a -y xvid4,ogg -b 64,0,5,1 -Z 640x480 -w 1250 -o csi.xvid4 -m csi.ogg -R 2;
```

Bei mir ergibt das Audiencoden auf dem Mac-Mini (mit Gentoo) in Ogg-Vorbis nur ein Rauschen.

Ist das etwa so ein Endian-Problem von transcode/ffmpeg/whatever?

oggenc als Befehl in der Konsole eingegeben funktioniert prima, nur mit o.a. Befehlszeile nicht.

Bei DVD:Rip übrigens das selbe, aber das nutzt ja auch transcode...

Weiß da jemand etwas mehr zu?

----------

## STiGMaTa_ch

 *Aldo wrote:*   

> 
> 
> ```
> transcode -i $a -y xvid4,ogg -b 64,0,5,1 -Z 640x480 -w 1250 -o csi.xvid4 -m csi.ogg -R 2;
> ```
> ...

 

- Ist das auch so, wenn du nur den Sound aus dem Movie extrahierst?

Also wenn du z.B. 

```
transcode -i mein_movie.mpg -y null,ogg -m mein_movie.ogg
```

eingibst?

- Wenn du anstelle von ogg direkt in wav umwandelst, hast du dann das selbe Problem? 

```
transcode -i mein_movie.mpg -y null,wav -m mein_movie.wav
```

  :Question:   :Question:  Wenn ja, dann ist bereits mit dem decoder für den Audio Input Stream was faul.

@fauli

Man lernt immer wieder was neues. Danke.

Lieber Gruss

STiGMaTa

----------

## Aldo

 *STiGMaTa_ch wrote:*   

> 
> 
> - Ist das auch so, wenn du nur den Sound aus dem Movie extrahierst?
> 
> Also wenn du z.B. 
> ...

 

Hab es gerade probiert.

Auch dann nur Rauschen, ebenso bei extrahieren als wav.  :Sad: 

----------

## STiGMaTa_ch

Hmm...

Ich bin da leider zu wenig bewandert.

Vielleicht kann transcode das Input Format nicht automatisch erkennen. Versuch mal es mit der Option -x null,<Format> selber anzugeben.

z.B.

Input Sound ist nicht komprimiert (pcm wav)

```
transcode -x null,raw -i mein_movie.mpg -y null,ogg -m mein_movie.ogg
```

Input Sound ist im Audio MPEG Format

```
transcode -x null,ac3 -i mein_movie.mpg -y null,ogg -m mein_movie.ogg
```

Input Sound ist im MP3 Format

```
transcode -x null,mp3 -i mein_movie.mpg -y null,ogg -m mein_movie.ogg
```

Mehr sind in der Manpage von transcode aufgeführt.

Lieber Gruss

STiGMaTa

----------

## Mr_Maniac

Bei mir habe ich das Problem mit dem Rauschen nur bei MP3...

WAV und OGG als output funktionieren...

----------

## STiGMaTa_ch

 *zielscheibe wrote:*   

> ...Ich würde dir empfehlen bei transcode und den Codecs (xvid,ffmpeg,male,ogg) die "sse" bzw "sse2" Optionen zur Beschleunigung des Encodierens zu verwenden. 

 

Tja, wie soll ich es sagen  :Twisted Evil:  es wirkt! Der Computer war vom Leistungsschub so überrascht, dass er sich reproduzierbar nach kürzester Zeir aufgehängt hat  :Laughing: 

Ich habe die Option jetzt raus genommen und er werkelt wieder so wie er soll. Was ich jedoch nicht ganz kapiere...

Egal ob ich nun MIT oder OHNE USEflag "sse, sse2, mmx" kompiliert habe, stets zeigt mir transcode folgende Zeile an:

```
IA32 accel mode | sse3 (sse3 sse2 sse mmxext mmx asm C)
```

verwendet er nun also doch sse trotz nicht aktiviertem USE Flag?

Lieber Gruss

STiGMaTa

----------

## zielscheibe

Hi,

 *STiGMaTa_ch wrote:*   

>  *zielscheibe wrote:*   ...Ich würde dir empfehlen bei transcode und den Codecs (xvid,ffmpeg,male,ogg) die "sse" bzw "sse2" Optionen zur Beschleunigung des Encodierens zu verwenden.  
> 
> Tja, wie soll ich es sagen  es wirkt! Der Computer war vom Leistungsschub so überrascht, dass er sich reproduzierbar nach kürzester Zeir aufgehängt hat 
> 
> Ich habe die Option jetzt raus genommen und er werkelt wieder so wie er soll. Was ich jedoch nicht ganz kapiere...
> ...

 

Es gibt IMHO 2 "Anwendungsgebiete" in transcode für die SIMD-Extensions 1. die FFT des Codecs --> "IA32 accel mode" und 2., die "memcpy" Methode von tc (transcodecat). Erstere ist bei transcode ohne die USE-Flags zugänglich, default ist autodetect, auswählen kann man sie mit dem Parameter 

```

transcode --accel [sse,sse2,mmx ..usw]

```

Die "memcpy" Einstellung wird IMHO über die USE-Flags geteuert, dh. bei dir wurde die glibc-Methode verwendet

```

[transcode] A: AV shift         | 39 ms [ 0 (A) | 39 ms ] 

[transcode] V: IA32 accel mode  | sse2 (sse2 sse mmxext mmx asm C) 

tc_memcpy: using libc for memcpy 

[transcode] V: video buffer     | 10 @ 720x576

```

Meiner Erfahrung nach verbessern halt die die SIMD-memcpy Routinen die Performance. Wenn es bei dir abstürzt, ist der Gewinn natürlich nur virtuell.  :Evil or Very Mad: 

----------

## STiGMaTa_ch

 *zielscheibe wrote:*   

> Meiner Erfahrung nach verbessern halt die die SIMD-memcpy Routinen die Performance. Wenn es bei dir abstürzt, ist der Gewinn natürlich nur virtuell. 

 

Hmm... Kann der Absturz vielleicht damit zusammenhängen, dass ich als USE Flag sse, sse2 und mmx ausgewählt habe? Oder sollte das keinen Einfluss haben? Wenn ich nur einen auswählen sollte, welcher würde dann einen Performance Schub versprechen? sse2 ?

Lieber Gruss

STiGMaTa

----------

## zielscheibe

 *STiGMaTa_ch wrote:*   

>  *zielscheibe wrote:*   Meiner Erfahrung nach verbessern halt die die SIMD-memcpy Routinen die Performance. Wenn es bei dir abstürzt, ist der Gewinn natürlich nur virtuell.  
> 
> Hmm... Kann der Absturz vielleicht damit zusammenhängen, dass ich als USE Flag sse, sse2 und mmx ausgewählt habe? Oder sollte das keinen Einfluss haben? Wenn ich nur einen auswählen sollte, welcher würde dann einen Performance Schub versprechen? sse2 ?
> 
> Lieber Gruss
> ...

 

Da ich einen Athlon-XP benutze, habe ich in der "make.conf" generisch aller von der CPU unterstützen Extensions (3dnow,mmx,sse) als USE-Flags, trotzdem läuft transcode ohne Probleme. 

Wenn ich die glibc-Methode für "tc" verwende habe ich ca. 15% weniger Durchsatz in "tc", als mit der "memcpy"-Methode "mmxext". Je nach verwendeten Ausgangsmaterial würde ich ich die Gesamtperformancesteigerung so zwischen 5-10% ansiedeln wollen. 

Du müßtest selbst entscheiden ob diese Aussicht rechtfertigt, verschiedene Kombinationen von transcode-/versionen und USE-Flags auszuprobieren.

----------

