riduci le dimensioni di mp4 usando avconv


5

Sto guardando questa domanda

Ridurre le dimensioni di MP4

e voglio farlo usando avconv, tuttavia, mi piacerebbe anche ridurre le dimensioni del frame di circa la metà. Il mio problema è quando lo faccio

avconv -i "$file" -s 640x480 -strict experimental "mp4/$file.mp4"

L'output è incredibilmente pixelato e degrada troppo la qualità del video. Sto cercando di convertire file video di dimensioni inferiori per il mio palmare. Fondamentalmente, sto cercando di ottenere questo:

Video
ID                                       : 1
Format                                   : AVC
Format/Info                              : Advanced Video Codec
Format profile                           : Main@L3.1
Format settings, CABAC                   : No
Format settings, ReFrames                : 4 frames
Format settings, GOP                     : M=2, N=48
Codec ID                                 : V_MPEG4/ISO/AVC
Duration                                 : 21mn 31s
Bit rate mode                            : Variable
Maximum bit rate                         : 1 101 Kbps
Width                                    : 1 280 pixels
Height                                   : 720 pixels
Display aspect ratio                     : 16:9
Frame rate mode                          : Variable
Frame rate                               : 23.976 fps
Standard                                 : Component
Color space                              : YUV
Chroma subsampling                       : 4:2:0
Bit depth                                : 8 bits
Scan type                                : Progressive
Default                                  : Yes
Forced                                   : No

Assomigliare a questo

Video
ID                                       : 1
Format                                   : AVC
Format/Info                              : Advanced Video Codec
Format profile                           : High@L3.0
Format settings, CABAC                   : Yes
Format settings, ReFrames                : 4 frames
Codec ID                                 : avc1
Codec ID/Info                            : Advanced Video Coding
Duration                                 : 21mn 45s
Bit rate                                 : 218 Kbps
Width                                    : 624 pixels
Height                                   : 352 pixels
Display aspect ratio                     : 16:9
Frame rate mode                          : Constant
Frame rate                               : 23.976 fps
Color space                              : YUV
Chroma subsampling                       : 4:2:0
Bit depth                                : 8 bits
Scan type                                : Progressive
Bits/(Pixel*Frame)                       : 0.041
Stream size                              : 33.9 MiB (60%)
Writing library                          : x264 core 138 r2 9e941d1
Encoding settings                        : 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=23 / 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

Domanda: Come si riduce la velocità in bit e le dimensioni del frame usando avconv? Se non può essere fatto in avconv, posso farlo in ffmpeg? Video nella parte superiore ~ ​​= 200mb, video nella parte inferiore ~ ​​= 50mb, voglio ottenere 50mb con il minor numero di pixel possibile.

Risposte:


4

Per favore, ogni volta che chiedi aiuto con avconv, allega l'intero output. Altrimenti chi risponde deve ricorrere all'ipotesi.

La mia ipotesi in questa situazione sarebbe che il tuo avconv (o più precisamente libavcodec) non sia compilato con libx264, quindi viene usato l'encoder ASP mpeg4 interno (con impostazioni predefinite atroci). Quindi la soluzione è ottenere libavcodec con il supporto di libx264 - su Ubuntu dovresti installare libavcodec-extra-53, altrimenti potresti dover compilare da solo.


penso che sia giusto, ho compilato ffmpeg usando questa guida ffmpeg.org/trac/ffmpeg/wiki/UbuntuCompilationGuide , ma avconv non sta usando le librerie corrette, fammi provare ffmpeg quando torno a casa e non approvo la tua risposta se funziona
iloveretards

5

Non conosco avconv, ma in ogni caso dovresti dimezzare la risoluzione originale. Visto che la risoluzione originale è 1280x720, dovresti usare 640x360. In questo modo l'encoder deve ridimensionare esattamente 4 pixel in uno anziché 4.52826734 (inventato) come con la risoluzione scelta. Questo almeno evita problemi quando l'encoder non dispone di algoritmi di ridimensionamento disponibili.


1
anche questo è un buon punto,
peccato che
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.