konvertieren.h.264 avi-container zu mp4 umwandeln mit ffmpeg

Ich umwandeln möchte mein h.264 avi-container zu einem mp4-container mit ffmpeg. Ich habe festgestellt, dass dies funktioniert:

./ffmpeg -i myfile.avi -vcodec copy myfile.mp4
ffmpeg version N-51169-gcedf276 Copyright (c) 2000-2013 the FFmpeg developers
  built on Mar 21 2013 05:12:00 with gcc 4.6 (Debian 4.6.3-1)
  configuration: --prefix=/root/ffmpeg-static/32bit --arch=x86_32 --extra-cflags='-m32 -I/root/ffmpeg-static/32bit/include -static' --extra-ldflags='-m32 -L/root/ffmpeg-static/32bit/lib -static' --extra-libs='-lxml2 -lexpat -lfreetype' --enable-static --disable-shared --disable-ffserver --disable-doc --enable-bzlib --enable-zlib --enable-postproc --enable-runtime-cpudetect --enable-libx264 --enable-gpl --enable-libtheora --enable-libvorbis --enable-libmp3lame --enable-gray --enable-libass --enable-libfreetype --enable-libopenjpeg --enable-libspeex --enable-libvo-aacenc --enable-libvo-amrwbenc --enable-version3 --enable-libvpx
  libavutil      52. 22.100 /52. 22.100
  libavcodec     55.  1.100 /55.  1.100
  libavformat    55.  0.100 /55.  0.100
  libavdevice    55.  0.100 /55.  0.100
  libavfilter     3. 48.100 / 3. 48.100
  libswscale      2.  2.100 / 2.  2.100
  libswresample   0. 17.102 / 0. 17.102
  libpostproc    52.  2.100 /52.  2.100
[avi @ 0x9fff660] non-interleaved AVI
Guessed Channel Layout for  Input Stream #0.1 : mono
Input #0, avi, from 'myfile.avi':
  Metadata:
    encoder         : Lavf52.64.2
  Duration: 00:00:10.40, start: 0.000000, bitrate: 409 kb/s
    Stream #0:0: Video: h264 (Baseline) (H264 /0x34363248), yuvj420p, 640x480, 10 fps, 10 tbr, 10 tbn, 30 tbc
    Stream #0:1: Audio: pcm_s16le ([1][0][0][0] /0x0001), 8000 Hz, mono, s16, 128 kb/s
Output #0, mp4, to 'myfile.mp4':
  Metadata:
    encoder         : Lavf55.0.100
    Stream #0:0: Video: h264 ([33][0][0][0] /0x0021), yuvj420p, 640x480, q=2-31, 10 fps, 10240 tbn, 10 tbc
    Stream #0:1: Audio: aac ([64][0][0][0] /0x0040), 8000 Hz, mono, s16, 128 kb/s
Stream mapping:
  Stream #0:0 -> #0:0 (copy)
  Stream #0:1 -> #0:1 (pcm_s16le -> libvo_aacenc)
Press [q] to stop, [?] for help
[mp4 @ 0xa006ea0] pts has no value
    Last message repeated 100 times
frame=  101 fps=0.0 q=-1.0 Lsize=     350kB time=00:00:11.06 bitrate= 259.3kbits/s
video:332kB audio:15kB subtitle:0 global headers:0kB muxing overhead 0.926809%

Dieser erzeugt eine Datei, die ich spielen kann mit dem HTML5-video-player aber für ältere Browser würde ich gerne ein flash-player (Flowplayer). Die Datei spielt nicht mit Flowplayer, in der Tat, es verursacht es zum Absturz zu bringen.

Allerdings wenn ich:

./ffmpeg -i myfile.avi myfile2.mp4
ffmpeg version N-51169-gcedf276 Copyright (c) 2000-2013 the FFmpeg developers
  built on Mar 21 2013 05:12:00 with gcc 4.6 (Debian 4.6.3-1)
  configuration: --prefix=/root/ffmpeg-static/32bit --arch=x86_32 --extra-cflags='-m32 -I/root/ffmpeg-static/32bit/include -static' --extra-ldflags='-m32 -L/root/ffmpeg-static/32bit/lib -static' --extra-libs='-lxml2 -lexpat -lfreetype' --enable-static --disable-shared --disable-ffserver --disable-doc --enable-bzlib --enable-zlib --enable-postproc --enable-runtime-cpudetect --enable-libx264 --enable-gpl --enable-libtheora --enable-libvorbis --enable-libmp3lame --enable-gray --enable-libass --enable-libfreetype --enable-libopenjpeg --enable-libspeex --enable-libvo-aacenc --enable-libvo-amrwbenc --enable-version3 --enable-libvpx
  libavutil      52. 22.100 /52. 22.100
  libavcodec     55.  1.100 /55.  1.100
  libavformat    55.  0.100 /55.  0.100
  libavdevice    55.  0.100 /55.  0.100
  libavfilter     3. 48.100 / 3. 48.100
  libswscale      2.  2.100 / 2.  2.100
  libswresample   0. 17.102 / 0. 17.102
  libpostproc    52.  2.100 /52.  2.100
[avi @ 0x9b02660] non-interleaved AVI
Guessed Channel Layout for  Input Stream #0.1 : mono
Input #0, avi, from 'myfile.avi':
  Metadata:
    encoder         : Lavf52.64.2
  Duration: 00:00:10.40, start: 0.000000, bitrate: 409 kb/s
    Stream #0:0: Video: h264 (Baseline) (H264 /0x34363248), yuvj420p, 640x480, 10 fps, 10 tbr, 10 tbn, 30 tbc
    Stream #0:1: Audio: pcm_s16le ([1][0][0][0] /0x0001), 8000 Hz, mono, s16, 128 kb/s
No pixel format specified, yuvj420p for H.264 encoding chosen.
Use -pix_fmt yuv420p for compatibility with outdated media players.
[libx264 @ 0x9b065a0] using cpu capabilities: MMX2 SSE2Fast SSSE3 FastShuffle SSE4.1 Cache64
[libx264 @ 0x9b065a0] profile High, level 2.2
[libx264 @ 0x9b065a0] 264 - core 129 r2230 1cffe9f - H.264/MPEG-4 AVC codec - Copyleft 2003-2012 - http://www.videolan.org/x264.html - options: cabac=1 ref=3 deblock=1:0:0 analyse=0x3:0x113 me=hex subme=7 psy=1 psy_rd=1.00:0.00 mixed_ref=1 me_range=16 chroma_me=1 trellis=1 8x8dct=1 cqm=0 deadzone=21,11 fast_pskip=1 chroma_qp_offset=-2 threads=1 lookahead_threads=1 sliced_threads=0 nr=0 decimate=1 interlaced=0 bluray_compat=0 constrained_intra=0 bframes=3 b_pyramid=2 b_adapt=1 b_bias=0 direct=1 weightb=1 open_gop=0 weightp=2 keyint=250 keyint_min=10 scenecut=40 intra_refresh=0 rc_lookahead=40 rc=crf mbtree=1 crf=23.0 qcomp=0.60 qpmin=0 qpmax=69 qpstep=4 ip_ratio=1.40 aq=1:1.00
Output #0, mp4, to 'myfile2.mp4':
  Metadata:
    encoder         : Lavf55.0.100
    Stream #0:0: Video: h264 ([33][0][0][0] /0x0021), yuvj420p, 640x480, q=-1--1, 10240 tbn, 10 tbc
    Stream #0:1: Audio: aac ([64][0][0][0] /0x0040), 8000 Hz, mono, s16, 128 kb/s
Stream mapping:
  Stream #0:0 -> #0:0 (h264 -> libx264)
  Stream #0:1 -> #0:1 (pcm_s16le -> libvo_aacenc)
Press [q] to stop, [?] for help
frame=   47 fps=0.0 q=25.0 size=      21kB time=00:00:04.40 bitrate=  39.9kbits/s dup=3 dropframe=   59 fps= 56 q=25.0 size=      56kB time=00:00:05.68 bitrate=  80.2kbits/s dup=3 dropframe=   71 fps= 45 q=25.0 size=      89kB time=00:00:06.84 bitrate= 106.9kbits/s dup=3 dropframe=   83 fps= 40 q=25.0 size=     124kB time=00:00:08.12 bitrate= 124.9kbits/s dup=3 dropframe=   94 fps= 36 q=25.0 size=     157kB time=00:00:09.14 bitrate= 140.4kbits/s dup=4 dropframe=  105 fps= 23 q=25.0 Lsize=     309kB time=00:00:11.06 bitrate= 228.8kbits/s dup=4 drop=0
video:291kB audio:15kB subtitle:0 global headers:0kB muxing overhead 1.108651%
[libx264 @ 0x9b065a0] frame I:1     Avg QP:17.65  size: 12772
[libx264 @ 0x9b065a0] frame P:94    Avg QP:19.46  size:  2868
[libx264 @ 0x9b065a0] frame B:10    Avg QP:21.58  size:  1464
[libx264 @ 0x9b065a0] consecutive B-frames: 82.9% 13.3%  0.0%  3.8%
[libx264 @ 0x9b065a0] mb I  I16..4: 16.6% 66.3% 17.1%
[libx264 @ 0x9b065a0] mb P  I16..4:  4.2%  6.3%  0.5%  P16..4: 27.0%  9.5%  5.1%  0.0%  0.0%    skip:47.4%
[libx264 @ 0x9b065a0] mb B  I16..4:  0.8%  1.0%  0.0%  B16..8: 39.1%  4.6%  0.5%  direct: 2.4%  skip:51.7%  L0:39.8% L1:56.4% BI: 3.9%
[libx264 @ 0x9b065a0] 8x8 transform intra:58.0% inter:74.7%
[libx264 @ 0x9b065a0] coded y,uvDC,uvAC intra: 47.3% 0.0% 0.0% inter: 16.6% 0.0% 0.0%
[libx264 @ 0x9b065a0] i16 v,h,dc,p: 29% 19% 10% 42%
[libx264 @ 0x9b065a0] i8 v,h,dc,ddl,ddr,vr,hd,vl,hu: 31% 21% 29%  2%  3%  4%  4%  3%  3%
[libx264 @ 0x9b065a0] i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 39% 28% 18%  2%  3%  3%  3%  2%  2%
[libx264 @ 0x9b065a0] i8c dc,h,v,p: 100%  0%  0%  0%
[libx264 @ 0x9b065a0] Weighted P-Frames: Y:5.3% UV:0.0%
[libx264 @ 0x9b065a0] ref P L0: 67.9% 12.0% 12.6%  6.8%  0.6%
[libx264 @ 0x9b065a0] ref B L0: 76.9% 23.1%
[libx264 @ 0x9b065a0] ref B L1: 99.7%  0.3%
[libx264 @ 0x9b065a0] kb/s:226.31

Diese funktioniert Super. Aber das timing ist ganz anders, nicht zu erwähnen, CPU-Zyklen. Der erste Befehl wird gemessen in milli-Sekunden, während die zweite kann einige Zeit dauern (~5-40secs).

Gibt es eine andere Möglichkeit, kann ich das konvertieren der avi zu einem mp4-container schnell? Idealerweise durch re-muxen im Gegensatz zu re-Encoden.

BEARBEITEN

Ich bin mit diesem jetzt, das finde ich am schnellsten für re-encoding. Aber nochmal würde ich das eher nicht tun. Ich will einfach nur re-mux, code.

ffmpeg -loglevel quiet -i myfile.avi -vcodec libx264 -profile:v baseline -preset ultrafast myfile.mp4

  • Bitte zeigen Sie Ihre vollständigen ffmpeg die Ausgabe der Konsole für jeden Befehl. Dein Erster Befehl ist das kopieren der video-stream und re-Codierung irgendeiner audio-stream. Ihre zweite Befehl re-encoding das video, und jedem audio-stream.
  • Vielen Dank für die Ausgänge. Aktuelle Flowplayer Flash zu spielen scheint yuvj420p gut. Können Sie myfile.avi?
  • datafilehost, mediafire, dropbox?
  • mediafire.com/?kbtua9us9f6u9ws
  • Ich kann duplizieren Sie das Problem, eigentlich ist Flash einfach abstürzt, aber ich weiß nicht, was die Ursache dafür ist... ich bin wahrscheinlich etwas fehlt einfach. Habe ich nicht getestet, einer alten ffmpeg-version zu sehen, ist dies eine regression, aber ich bin geneigt, die Schuld den Eingang. Wenn Sie müssen neu Kodieren, dann finden Sie in der FFmpeg-und x264-Codierung Guide und der FFmpeg-und AAC-Encoding-Guide.
  • Genau, es stürzt auch bei mir. Dank für das schauen. Viele verschiedene Optionen, aber ich will, dass die Datei das gleiche, außer ändern Sie den container. Ich denke: ffmpeg -i myfile.avi myfile2.mp4 genau das tut. Oder empfehlen Sie etwas anderes?
  • Wenn das funktioniert, sicher, aber denken Sie daran, dass Sie re-encoding zusätzlich zu einfach neu muxen.

InformationsquelleAutor Tom | 2013-04-02
Schreibe einen Kommentar