web-dev-qa-db-fra.com

Comment copier une piste audio sur une vidéo que je suis en train de créer avec avconv?

Donc, pour commencer, j'ai découvert comment animer un certain nombre d'images fixes dans une vidéo, comme ceci:

avconv -f image2 -i %06d.png -r 24 -qscale 1 aniron.avi

J'ai un tas de fichiers dans le répertoire nommé 000000.png, 000001.png, 000002.png. Je suis capable de faire une vidéo de qualité suffisamment élevée de cette façon. Cependant, les efforts pour ajouter une piste audio en mettant "-i aniron.mp3" et quelques autres options ont échoué jusqu'à présent. Je reçois toujours ceci:

avconv version 0.8.5-4:0.8.5-0ubuntu0.12.04.1, Copyright (c) 2000-2012 the Libav 
developers
  built on Jan 24 2013 18:03:14 with gcc 4.6.3
[mp3 @ 0x8623aa0] max_analyze_duration reached
[mp3 @ 0x8623aa0] Estimating duration from bitrate, this may be inaccurate
Input #0, mp3, from 'aniron.mp3':
  Metadata:
    encoder         : Lavf52.64.2
    TDTG            : 2012-07-28T18:05:36
  Duration: 00:07:11.46, start: 0.000000, bitrate: 191 kb/s
    Stream #0.0: Audio: mp3, 44100 Hz, stereo, s16, 192 kb/s
Input #1, image2, from '%06d.png':
  Duration: 00:07:09.88, start: 0.000000, bitrate: N/A
    Stream #1.0: Video: png, rgb24, 1920x1080, 25 fps, 25 tbr, 25 tbn, 25 tbc
File 'aniron.avi' already exists. Overwrite ? [y/N] y
Incompatible pixel format 'rgb24' for codec 'mpeg4', auto-selecting format 'yuv420p'
[buffer @ 0x8629500] w:1920 h:1080 pixfmt:rgb24
[avsink @ 0x8657d60] auto-inserting filter 'auto-inserted scaler 0' between the
filter 'src' and the filter 'out'
[scale @ 0x8634940] w:1920 h:1080 fmt:rgb24 -> w:1920 h:1080 fmt:yuv420p flags:0x4
Incompatible sample format 's16' for codec 'ac3', auto-selecting format 'flt'
[ac3 @ 0x86438e0] invalid bit rate
Output #0, avi, to 'aniron.avi':
  Metadata:
    encoder         : Lavf52.64.2
    TDTG            : 2012-07-28T18:05:36
    Stream #0.0: Video: mpeg4, yuv420p, 1920x1080, q=2-31, 200 kb/s, 90k tbn, 24 tbc
    Stream #0.1: Audio: ac3, 44100 Hz, stereo, flt, 200 kb/s
Stream mapping:
  Stream #1:0 -> #0:0 (png -> mpeg4)
  Stream #0:0 -> #0:1 (mp3 -> ac3)
Error while opening encoder for output stream #0:1 - maybe incorrect parameters such
as bit_rate, rate, width or height

Je finis peut-être par faire cela à Kdenvlive mais cela me dérange.

2
readyready15728
avconv -f image2 -i %06d.png -r 24 -qscale 1 -i audiofile.mp3 -c:a copy aniron.avi

Choses à noter:

  • -c:a détermine le codec audio de sortie - il suffit de copier celui du fichier d'entrée ici
  • Le conteneur avi fait défaut, par exemple, vous pourriez avoir des problèmes de synchronisation si votre fichier mp3 est VBR. Une meilleure alternative serait MP4 ou MKV.
  • Vous pouvez spécifier le codec vidéo de sortie (-c:v) si vous n'aimez pas celui par défaut.
  • En ce qui concerne ffmpeg vs. avconv: ffmpeg est loin d’être déconseillé - c’est délibérément trompeur. Si cela vous intéresse lisez ceci
3
phoibos

Que diriez-vous d'utiliser ffmpeg sur le avi que vous avez créé? La syntaxe serait quelque chose comme:

ffmpeg -i sound.wav -i input.avi output.mpg

Je ne sais pas si cela prendra mp comme import audio, vous devrez donc peut-être convertir votre fichier son.

Dieu chance

1
matv1

Cela a fonctionné en ce que tous les arguments ont été respectés; la sortie était ce que je voulais, de grande qualité:

avconv -f image2 -i %06d.png -i aniron.mp3 -c:a copy -r 24 -qscale 1 test.avi

L'ordre des arguments est une gêne subtile dans avconv et ffmpeg.

0
readyready15728