Wie kann ich MP4-Dateien mit ffmpeg in .3gp konvertieren?

7

Ich möchte ein paar Videos von YouTube herunterladen und in 3gp konvertieren, damit ich sie auf meinem Handy abspielen kann. Ich würde gerne wissen, wie das mit ffmpeg gemacht werden kann.

Ich habe die verschiedenen Ergebnisse im Internet nur ausprobiert, um die folgenden Fehler zu erhalten.

  1. Ich benutzte:

    ffmpeg -i dil.mp4 -sameq -ab 64k -ar 44100 dilenada.3gp
    

Ich habe:

Unsupported codec for output stream #0.1

Die Codec-Framerate von Stream 0 unterscheidet sich anscheinend von der Framerate des Containers: 2000.00 (2000/1) -> 29.92 (359/12)

  1. Ich benutzte:

    ffmpeg -y -i dil.mp4 -r 20 -s 352x288 -b 400k -acodec libfaac -ac 1 -ar 2000 -ab 24k dilenada.3gp
    

Ich habe:

Seems stream 0 codec frame rate differs from container frame rate: 2000.00 (2000/1) -> 29.92 (359/12)

Unknown encoder 'libfaac'

Was mache ich falsch?

harisibrahimkv
quelle
Am besten verlieren Sie die Option -sameq, die selten das erreicht, was Sie denken ...
andrew.46

Antworten:

8

Verwenden Sie den folgenden Befehl:

ffmpeg  -y -i movie.mp4 \
        -r 20 -s 352x288 -vb 400k \
        -acodec aac -strict experimental -ac 1 -ar 8000 -ab 24k \
        movie.3gp
Amin
quelle
Wäre schön gewesen, wenn du es erklären könntest. Vielen Dank
Igaurav
1

Sie müssen wahrscheinlich nur die nicht freien / eingeschränkten Pakete von ffmpeg like libavcodec-extra-53 libavformat-extra-53 libavutil-extra-51und dergleichen installieren .

Wenn Sie ffmpeg mit aufrufen, --list-encoderswerden die verfügbaren Encoder angezeigt.

LiveWireBT
quelle
Ich habe versucht, sie zu installieren, aber die in der Frage genannten Befehle funktionierten immer noch nicht.
Harisibrahimkv
Immer noch die gleichen Fehlermeldungen?
LiveWireBT
1

Du machst alles richtig :). Sie müssen installieren, damit die Konvertierung funktioniert.

Ubuntu Restricted Extras, dh libavcodec-extra-53

Sie können es vom Software-Center erhalten oder den folgenden Befehl verwenden

sudo apt-get install ffmpeg libavcodec-unstripped-52

b-ak
quelle
1

Ich hatte auch Probleme mit ffmpeg

Anscheinend verwendet Ubuntu nicht mehr ffmpeg, sondern eine Gabel namens avconv. Dies macht einige (viele?) Befehle, die auf Websites gefunden wurden, unter Ubuntu unbrauchbar.

Ich habe nur das Original-ffmpeg bekommen:

sudo add-apt-repository ppa:jon-severinsson/ffmpeg
sudo apt-get update
sudo apt-get install ffmpeg

Ich bin mir jedoch nicht sicher, wie sehr Ihnen dies helfen würde

Josinalvo
quelle
Ihre Leitung funktioniert hier nicht, aber zumindest gibt sie nicht den Fehler "Unbekannter Codec" aus, sondern einen über die Auflösung
Josinalvo
0

Um dieses Problem zu umgehen, kann die einzige Option sein build from source. Das hat alle Probleme für mich gelöst. Ich habe eines der ffmpegPakete deinstalliert, die sich derzeit auf dem System befinden, das ich zu verwenden versucht hatte, und dieses hervorragende Ubuntu-Kompilierungshandbuch verwendet . Nur so konnte ich in proprietäre Formate wie mp4 und mp3 codieren.

Darüber hinaus kann das folgende Skript, das ich geändert habe (Gutschrift an den ursprünglichen Ersteller), erneut geändert und zum Konvertieren mp4 to 3gpoder mp4 to mp3(zum Extrahieren des Audios) oder für irgendetwas anderes verwendet werden. Außerdem wird der ursprüngliche Name der Datei in der neu konvertierten Datei beibehalten: Es ist jedoch wichtig, die Optionen korrekt auszufüllen.

Sie können verschiedene Optionen für 3gp verwenden; Beispielsweise möchten Sie möglicherweise eine andere Auflösung als qcif(176 x 144), aber ich habe festgestellt, dass diese Einstellungen bei meiner compiledVersion von ursprünglich für mich funktionierten ffmpeg. (Die Konvertierung kann eine Weile dauern, abhängig davon, wie leistungsfähig Ihre CPU ist, da die Konvertierung in 3gp die Dateigröße erheblich reduziert: 314 MB auf 13 MB für eine meiner Konvertierungen!)

Speichern Sie dieses Skript unten in einem neuen Dokument und machen Sie es ausführbar ( chmod +x), legen Sie es im gewünschten Ordner ab und führen Sie es aus. oder verwenden Sie das Terminal, um den Ordner auszuwählen, in dem sich das Skript befindet, und den Zielordner, der die Dateien enthält; z.B~/Scripts/script ~/Downloads

#!/bin/bash
for f in *.mp4
do
    name="${f/.mp4/.3gp}"
    ffmpeg -i "$f" -vcodec h263 -s qcif -r 15 -b 100k -acodec libfaac -ac 1 -ar 32000 -ab 64k -f 3gp "$name"
done
Gemeinschaft
quelle