web-dev-qa-db-fra.com

avconv crée un fichier zéro octet tout en essayant de sous-échantillonner la vidéo mp4

J'ai une vidéo en accéléré créée à l'aide de mon téléphone que j'essaie de sous-échantillonner de 1080p à 640x480.

Selon cette réponse , j'utilise la commande avconv

avconv -i input.mp4 -s 640x480 output.mp4

mais il crée un fichier de 0 octet qui ne contient évidemment rien.

La sortie de la commande est la suivante

a@b:~$avconv  -i ./Videos/CivilStudy.mp4 -s 640x480 ./abc.mp4
avconv version     9.16-6:9.16-0ubuntu0.14.04.1, Copyright (c) 2000-2014 the Libav developers
  built on Aug 10 2014 18:19:26 with gcc 4.8 (Ubuntu 4.8.2-19ubuntu1)
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from './Videos/CivilStudy.mp4':
  Metadata:
    major_brand     : isom
    minor_version   : 512
    compatible_brands: isomiso2mp41
    creation_time   : 1970-01-01 00:00:00
    encoder         : Lavf52.64.2
  Duration: 00:00:43.58, start: 0.000000, bitrate: 10159 kb/s
    Stream #0.0(und): Video: mpeg4 (Simple Profile), yuv420p, 1920x1080 [PAR 1:1 DAR 16:9], 10025 kb/s, 24 fps, 24 tbr, 24 tbn, 24 tbc
    Metadata:
      creation_time   : 1970-01-01 00:00:00
    Stream #0.1(und): Audio: aac, 44100 Hz, mono, fltp, 129 kb/s
    Metadata:
      creation_time   : 1970-01-01 00:00:00
[libx264 @ 0x843bde0] using SAR=4/3
[libx264 @ 0x843bde0] using cpu capabilities: MMX2 SSE2Fast SSSE3 SSE4.1 Cache64
[libx264 @ 0x843bde0] profile High, level 3.0
[libx264 @ 0x843bde0] 264 - core 142 r2389 956c8d8 - H.264/MPEG-4 AVC codec -     Copyleft 2003-2014 - 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=3 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=24 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.25 aq=1:1.00
encoder 'aac' is experimental and might produce bad results.
Add '-strict experimental' if you want to use it

Qu'est-ce que je fais maintenant?

2
Registered User

Pendant cette conversion, la vidéo et l'audio doivent être décodés à partir du fichier d'origine, puis encodés dans le fichier cible. Dans ce cas, le fichier d'origine se trouve avoir l'audio encodé avec 'aac' (Advanced Audio Coding). Le décodage de l'audio n'est pas un problème, seul l'encodage en audio encodé "aac" semble poser problème.

Voir les deux dernières lignes de la sortie ci-dessus:

encoder 'aac' is experimental and might produce bad results.
Add '-strict experimental' if you want to use it

Comme indiqué dans le message, l'encodeur "aac" est expérimental. Pour l'utiliser quand même, ajoutez '-strict experimental' comme ceci:

avconv -i input.mp4 -s 640x480 -strict experimental output.mp4

Celui-ci utilisera l'encodeur expérimental pour produire une vidéo avec un audio intégré qui est encodé avec 'aac'. Si le paramètre est omis, aucune sortie n'est créée (uniquement un fichier de zéro octet). Donc, aucun encodeur n'est utilisé dans ce cas. J'ai pu convertir une vidéo comme ça sans problème. Si le codec ne fonctionne pas pour vous, vous pouvez spécifier un autre codec pour l'audio comme ça (en utilisant mp3 comme exemple):

avconv -i input.mp4 -acodec mp3 -s 640x480 output.mp4

S'il n'y a aucune bande sonore audible dans cet enregistrement - puisque vous convertissez un laps de temps - vous ne voudrez peut-être pas du tout incorporer l'audio. Pour ce faire, utilisez le paramètre -an:

avconv -i input.mp4 -an -s 640x480 output.mp4
3
Michael