unanswered Idee FFmpeg fuer Video Konvertierung

  • rwhome
  • rwhomes Avatar Autor
  • Offline
  • Moderator
  • Moderator
  • ur welcome
Mehr
10 Jan 2015 18:11 - 13 Jan 2015 20:12 #66297 von rwhome
FFmpeg fuer Video Konvertierung wurde erstellt von rwhome
FFmpeg ist ein Kommandozeilentool und sehr nützlich um Videos/Streams zu konvertieren/aufzuzeichnen.
Ich habe mich kurz damit befasst und möchte einige meiner Erfahrungen hier posten.

Zuerst mal ein paar Links:

Spezielle FFmpeg Builds für Windows
ffmpeg.zeranoe.com/builds/
Allgemeine FFmpeg Doku
ffmpeg.org/ffmpeg.html
trac.ffmpeg.org/wiki/TitleIndex
FFmpeg and H.265 Encoding Guide
trac.ffmpeg.org/wiki/Encode/H.265
CRF Guide
slhck.info/articles/crf

Allgemeines:

FFmpeg hat sehr viele Parameter. Ich gehe nur auf einige ein.
ffmpeg -i [input file name] -s [output resolution] -b [bit rate] -ar [audio bit rate] [output file name]

Wenn wir also ein Video wollen mit einer Auflösung von 640x480 und einer maximalen Bandbreite von 1000kbps und einer Audio Bit Rate von 44100Hz
ffmpeg -i inputfile.avi -s 640x480 -b 1000k -ar 44100 myoutputfile.flv
Das AVI Video wird als FLV Video konvertiert/gespeichert.
Man kann den Parameter -f flv setzen aber es reicht wenn man das Ausgabefile so benennt.
Man kann bzw. muss eventuell auch den Audiocodec bestimmen.
z.B. -acodec libmp3lame -ab 128k für MP3 Stereo

Anwendungsbeispiele:

FFmpeg und H.265 Encoding:
ffmpeg -i input.mkv -codec:v libx265 -x265-params crf=23 -codec:a copy output.mkv

Batchbeispiele:
ffmpeg -v quiet -i "%1" -acodec copy -threads 10 -preset veryfast -x265-params crf=23 -pix_fmt yuv420p -vcodec libx265 "%1".mkv
ffmpeg -v quiet -i "%1" -threads 10 -preset veryfast -x265-params crf=23 -acodec libmp3lame -ab 128k -pix_fmt yuv420p -vcodec libx265 "%1".mkv

Zeranoe Build's (siehe Link oben) sind Voraussetzung!
H.265 ist ein relativ neuer (noch experimenteller) Codec mit sehr guter Kompression.
Vergleicht man mit H.264 sind die Dateien bei gleichbleibender Qualität ca. halb so groß.
VLC oder Kodi (v14) können z.B. dieses Format abspielen.

Videocut:
ffmpeg -i input_file -ss hh:mm:ss[.xxx] -to hh:mm:ss[.xxx] output_file
Wenn man z.B. den Anfang eines Videos rausschneiden will:
ffmpeg -ss 00:02:17.0 -i inputfile.avi -acodec copy -vcodec copy -async 1 outputfile.avi

3D Video (HSBS auf Anaglyph):
ffmpeg -i inputfile_3D.HSBS.mp4 -vf stereo3d=sbs2l:arcc,scale=in_w*2:in_h -acodec copy -threads 10 -b:v 5000k -crf 22 -preset veryfast -pix_fmt yuv420p -vcodec libx264 outputfile_Anaglyph.mkv
Wenn man ein 3D Video (Half Side by Side) ins Anaglyph Format konvertieren will.
Weil man z.B. keinen 3D Fernseher hat und mit einer einfachen Anaglyph Brille mal 3D sehen will.

PAL (25fps) auf NTSC (23.976fps):
ffmpeg -v quiet -i "%1" -filter:v setpts=25025/24000*PTS -acodec libmp3lame -ab 224k -filter:a atempo=0.959040959040959 -threads 10 -b:v 5000k -crf 22 -preset veryfast -pix_fmt yuv420p -vcodec libx264 -r 24000/1001 "%1".mkv
Wenn Untertitel dauernd async. werden.
PAL und NTSC Videos unterscheiden sich ja in der Länge.
Man kann natürlich auch die Untertiteldatei selbst konvertieren (via Online Tools)

A1TV Stream aufzeichnen und gleichzeitig konvertieren:
ffmpeg -i rtp://@239.2.16.1:8208 -acodec libmp3lame -ab 128k -pix_fmt yuv420p -vcodec libx264 orf1video.mp4
Wer nicht konvertieren will ... -acodec copy bzw. -vcodec copy ...
ffmpeg -i rtp://@239.2.16.1:8208 -map 0 -codec copy -f mpegts stream.ts
Mit -t HH:MM:SS kann man die Aufzeichnungsdauer bestimmen.
Mit AT oder SCHTASKS kann man über die Kommandozeile den Windows Sceduler steuern.
Beispiel1 > at 23:30 c:\recording\stream.cmd
Beispiel2 > schtasks /create /tn "orf1_recording" /tr c:\recording\stream.cmd /sc once /st 20:15:00 /sd 25/01/2015
Und schon hat man einen programmierbaren Videorecorder .. naja ;)

Radio Stream aufzeichnen und abspielen:
ffmpeg -i “http://mp3.webradio.rockantenne.de:80″ -acodec copy myradio.mp3
ffplay “http://mp3.webradio.rockantenne.de:80″


Anbei ein Batch welcher alle Videos in einem Verzeichnis konvertiert:
@echo off
REM keep a counter for files converted
set /A nfile=0
REM convert each file in quiet mode
for %%v in (*.mp4, *.wmv, *.mov, *.avi) do (
    echo converting "%%~nxv" ...
    ffmpeg -v quiet -i "%%v" -acodec copy -threads 10 -b:v 5000k -crf 22 -preset veryfast -pix_fmt yuv420p -vcodec libx264 "%%v".mkv
    set /A nfile+=1
)
echo Done! Converted %nfile% file(s)
Alle *.mp4, *.wmv, *.mov, *.avi Videos werden in ein MKV Container Format konvertiert.
Der Audio Stream wird einfach nur kopiert.
Bitte in der For-Schleife nicht *.mkv angeben sonst hat man eine Infinite Loop!

Geht auch mit Audio (Umwandlung in MP3):
@ECHO OFF

SET bitrate=192

FOR %%A IN (*) DO (
 IF NOT EXIST "%%~nA.mp3" "%~dp0\ffmpeg.exe" -i "%%A" -vn -c:a libmp3lame -b:a %bitrate%k "%%~nA.mp3"
)
Wobei hier auch aus Videos die Audio Spur extrahiert wird und als MP3 gespeichert wird.

Noch ein paar Links für Anwendungsbeispiele:
trac.ffmpeg.org/wiki/HowToBurnSubtitlesIntoVideo
trac.ffmpeg.org/wiki/Concatenate
trac.ffmpeg.org/wiki/Capture/Desktop
trac.ffmpeg.org/wiki/Capture/Webcam

LG RWHome//Wer glaubt, etwas zu sein, hat aufgehört, etwas zu werden
Letzte Änderung: 13 Jan 2015 20:12 von rwhome.

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

Moderatoren: andifrm1912enjoyherby68benderrwhomegeko
Ladezeit der Seite: 0.135 Sekunden
Powered by Kunena Forum