Як створити відео із зображень та аудіофайлів?


3

Щоб зробити історію короткою, я просто хочу створити відео з X кількості зображень та mp3-файлів, і отримати однакову якість звуку.

Я перевірив веб-сайт ffmpeg, але ... ось що у мене є:

ffmpeg.exe -y -i img%01d.jpg -i "03 eminem - when I'm Gone.mp3" -c:v libx264 -c:a aac -strict experimental -b:a 192k -shortest shortt.mp4

Де: у тій же папці я img0.jpg img1.jpg і так далі ...

Mp3-файл - це аудіофайл.

Вихід повинен зберігатися у shortt.mp4

Після того, як я запустив цю команду, на виконання було потрібно 2 секунди, і ось такий результат:

C:\Users\icebox\Desktop>ffmpeg.exe -y -i img%01d.jpg -i "03 eminem - when I'm Go
ne.mp3" -c:v libx264 -c:a aac -strict experimental -b:a 192k -shortest shortt.mp
4
ffmpeg version N-57821-g1fb3b49 Copyright (c) 2000-2013 the FFmpeg developers
  built on Nov  2 2013 18:01:35 with gcc 4.8.2 (GCC)
  configuration: --enable-gpl --enable-version3 --disable-w32threads --enable-av
isynth --enable-bzlib --enable-fontconfig --enable-frei0r --enable-gnutls --enab
le-iconv --enable-libass --enable-libbluray --enable-libcaca --enable-libfreetyp
e --enable-libgsm --enable-libilbc --enable-libmodplug --enable-libmp3lame --ena
ble-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-l
ibopus --enable-librtmp --enable-libschroedinger --enable-libsoxr --enable-libsp
eex --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvo-aa
cenc --enable-libvo-amrwbenc --enable-libvorbis --enable-libvpx --enable-libwavp
ack --enable-libx264 --enable-libxavs --enable-libxvid --enable-zlib
  libavutil      52. 49.100 / 52. 49.100
  libavcodec     55. 40.101 / 55. 40.101
  libavformat    55. 21.100 / 55. 21.100
  libavdevice    55.  5.100 / 55.  5.100
  libavfilter     3. 90.100 /  3. 90.100
  libswscale      2.  5.101 /  2.  5.101
  libswresample   0. 17.104 /  0. 17.104
  libpostproc    52.  3.100 / 52.  3.100
Input #0, image2, from 'img%01d.jpg':
  Duration: 00:00:00.16, start: 0.000000, bitrate: N/A
    Stream #0:0: Video: mjpeg, yuvj444p(pc), 126x126 [SAR 29:22 DAR 29:22], 25 f
ps, 25 tbr, 25 tbn, 25 tbc
[mp3 @ 028dca60] Estimating duration from bitrate, this may be inaccurate
Input #1, mp3, from '03 eminem - when I'm Gone.mp3':
  Metadata:
    title           : When I'm Gone
    artist          : Eminem
    genre           : Other
  Duration: 00:04:40.54, start: 0.000000, bitrate: 128 kb/s
    Stream #1:0: Audio: mp3, 44100 Hz, stereo, s16p, 128 kb/s
No pixel format specified, yuvj444p for H.264 encoding chosen.
Use -pix_fmt yuv420p for compatibility with outdated media players.
[libx264 @ 02531860] using SAR=29/22
[libx264 @ 02531860] using cpu capabilities: MMX2 SSE2Fast SSSE3 Cache64
[libx264 @ 02531860] profile High 4:4:4 Predictive, level 1.1, 4:4:4 8-bit
[libx264 @ 02531860] 264 - core 140 r2377 1ca7bb9 - H.264/MPEG-4 AVC codec - Cop
yleft 2003-2013 - http://www.videolan.org/x264.html - options: cabac=1 ref=3 deb
lock=1:0:0 analyse=0x3:0x113 me=hex subme=7 psy=1 psy_rd=1.00:0.00 mixed_ref=1 m
e_range=16 chroma_me=1 trellis=1 8x8dct=1 cqm=0 deadzone=21,11 fast_pskip=1 chro
ma_qp_offset=4 threads=3 lookahead_threads=1 sliced_threads=0 nr=0 decimate=1 in
terlaced=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=25 scenecu
t=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 'shortt.mp4':
  Metadata:
    encoder         : Lavf55.21.100
    Stream #0:0: Video: h264 (libx264) ([33][0][0][0] / 0x0021), yuvj444p, 126x1
26 [SAR 29:22 DAR 29:22], q=-1--1, 12800 tbn, 25 tbc
    Stream #0:1: Audio: aac ([64][0][0][0] / 0x0040), 44100 Hz, stereo, fltp, 19
2 kb/s
Stream mapping:
  Stream #0:0 -> #0:0 (mjpeg -> libx264)
  Stream #1:0 -> #0:1 (mp3 -> aac)
Press [q] to stop, [?] for help
Input stream #0:0 frame changed from size:126x126 fmt:yuvj444p to size:1024x768
fmt:yuvj444p
[swscaler @ 06562000] deprecated pixel format used, make sure you did set range
correctly
Input stream #0:0 frame changed from size:1024x768 fmt:yuvj444p to size:96x96 fm
t:yuvj420p
[swscaler @ 0257f640] deprecated pixel format used, make sure you did set range
correctly
Input stream #0:0 frame changed from size:96x96 fmt:yuvj420p to size:1920x1200 f
mt:yuvj420p
[swscaler @ 06562000] deprecated pixel format used, make sure you did set range
correctly
frame=    4 fps=0.0 q=-1.0 Lsize=       9kB time=00:00:00.16 bitrate= 456.7kbits
/s
video:8kB audio:0kB subtitle:0 global headers:0kB muxing overhead 17.815873%
[libx264 @ 02531860] frame I:1     Avg QP:32.77  size:  2030
[libx264 @ 02531860] frame P:3     Avg QP:31.02  size:  1673
[libx264 @ 02531860] mb I  I16..4:  1.6% 98.4%  0.0%
[libx264 @ 02531860] mb P  I16..4:  9.4% 40.1% 50.5%  P16..4:  0.0%  0.0%  0.0%
 0.0%  0.0%    skip: 0.0%
[libx264 @ 02531860] 8x8 transform intra:54.7%
[libx264 @ 02531860] coded y,u,v intra: 77.0% 31.8% 35.5%
[libx264 @ 02531860] i16 v,h,dc,p:  0% 26% 11% 63%
[libx264 @ 02531860] i8 v,h,dc,ddl,ddr,vr,hd,vl,hu: 17% 22% 18%  9%  5%  6%  7%
 7%  8%
[libx264 @ 02531860] i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 31% 12% 14%  6%  6% 10%  6%
10%  5%
[libx264 @ 02531860] Weighted P-Frames: Y:0.0% UV:0.0%
[libx264 @ 02531860] kb/s:352.45

Файл є, але якщо я відкрию його у VLC, нічого не відбувається.

Я спробував це без найкоротшого аргументу. Я чекав, як закінчується 5 хвилин, все ще не закінчився, тому я зупинив це.

Ось що я отримав:

[swscaler @ 0653e000] використовується застарілий формат пікселів, переконайтесь, що ви правильно встановили діапазон. Будь-які пропозиції?

PS: Мені також вдалося створити відео із зображенням та аудіофайлом, але воно не перекидається через усі зображення.

Відповідь на першу відповідь:

Вихід :

  built on Nov  2 2013 18:01:35 with gcc 4.8.2 (GCC)
  configuration: --enable-gpl --enable-version3 --disable-w32threads --enable-av
isynth --enable-bzlib --enable-fontconfig --enable-frei0r --enable-gnutls --enab
le-iconv --enable-libass --enable-libbluray --enable-libcaca --enable-libfreetyp
e --enable-libgsm --enable-libilbc --enable-libmodplug --enable-libmp3lame --ena
ble-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-l
ibopus --enable-librtmp --enable-libschroedinger --enable-libsoxr --enable-libsp
eex --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvo-aa
cenc --enable-libvo-amrwbenc --enable-libvorbis --enable-libvpx --enable-libwavp
ack --enable-libx264 --enable-libxavs --enable-libxvid --enable-zlib
  libavutil      52. 49.100 / 52. 49.100
  libavcodec     55. 40.101 / 55. 40.101
  libavformat    55. 21.100 / 55. 21.100
  libavdevice    55.  5.100 / 55.  5.100
  libavfilter     3. 90.100 /  3. 90.100
  libswscale      2.  5.101 /  2.  5.101
  libswresample   0. 17.104 /  0. 17.104
  libpostproc    52.  3.100 / 52.  3.100
Input #0, image2, from 'img%01d.jpg':
  Duration: 00:00:00.16, start: 0.000000, bitrate: N/A
    Stream #0:0: Video: mjpeg, yuvj444p(pc), 126x126 [SAR 29:22 DAR 29:22], 25 f
ps, 25 tbr, 25 tbn, 25 tbc
[mp3 @ 0259cac0] Estimating duration from bitrate, this may be inaccurate
Input #1, mp3, from '03 eminem - when I'm Gone.mp3':
  Metadata:
    album_artist    : Lil Wayne
    genre           : Other
    title           : Prom Queen
    album           : Rebirth
    artist          : Lil Wayne
  Duration: 00:03:41.94, start: 0.000000, bitrate: 320 kb/s
    Stream #1:0: Audio: mp3, 48000 Hz, stereo, s16p, 320 kb/s
File 'o.mp4' already exists. Overwrite ? [y/N] y
[swscaler @ 02596ce0] deprecated pixel format used, make sure you did set range
correctly
[libx264 @ 03fd18c0] using SAR=29/22
[libx264 @ 03fd18c0] using cpu capabilities: MMX2 SSE2Fast SSSE3 Cache64
[libx264 @ 03fd18c0] profile High, level 1.1
[libx264 @ 03fd18c0] 264 - core 140 r2377 1ca7bb9 - H.264/MPEG-4 AVC codec - Cop
yleft 2003-2013 - http://www.videolan.org/x264.html - options: cabac=1 ref=3 deb
lock=1:0:0 analyse=0x3:0x113 me=hex subme=7 psy=1 psy_rd=1.00:0.00 mixed_ref=1 m
e_range=16 chroma_me=1 trellis=1 8x8dct=1 cqm=0 deadzone=21,11 fast_pskip=1 chro
ma_qp_offset=-2 threads=3 lookahead_threads=1 sliced_threads=0 nr=0 decimate=1 i
nterlaced=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=25 scenec
ut=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 'o.mp4':
  Metadata:
    encoder         : Lavf55.21.100
    Stream #0:0: Video: h264 (libx264) ([33][0][0][0] / 0x0021), yuv420p, 126x12
6 [SAR 29:22 DAR 29:22], q=-1--1, 12800 tbn, 25 tbc
    Stream #0:1: Audio: mp3 (i[0][0][0] / 0x0069), 48000 Hz, stereo, 320 kb/s
Stream mapping:
  Stream #0:0 -> #0:0 (mjpeg -> libx264)
  Stream #1:0 -> #0:1 (copy)
Press [q] to stop, [?] for help
Input stream #0:0 frame changed from size:126x126 fmt:yuvj444p to size:1024x768
fmt:yuvj444p
[swscaler @ 051b7b20] deprecated pixel format used, make sure you did set range
correctly
Input stream #0:0 frame changed from size:1024x768 fmt:yuvj444p to size:96x96 fm
t:yuvj420p
[swscaler @ 051b7b20] deprecated pixel format used, make sure you did set range
correctly
Input stream #0:0 frame changed from size:96x96 fmt:yuvj420p to size:1920x1200 f
mt:yuvj420p
[swscaler @ 05173fa0] deprecated pixel format used, make sure you did set range
correctly
frame=    4 fps=0.0 q=-1.0 Lsize=      15kB time=00:00:00.16 bitrate= 718.6kbits
/s
video:7kB audio:7kB subtitle:0 global headers:0kB muxing overhead 9.792652%
[libx264 @ 03fd18c0] frame I:1     Avg QP:31.89  size:  1831
[libx264 @ 03fd18c0] frame P:3     Avg QP:30.50  size:  1487
[libx264 @ 03fd18c0] mb I  I16..4:  3.1% 90.6%  6.3%
[libx264 @ 03fd18c0] mb P  I16..4:  7.8% 41.1% 51.0%  P16..4:  0.0%  0.0%  0.0%
 0.0%  0.0%    skip: 0.0%
[libx264 @ 03fd18c0] 8x8 transform intra:53.5%
[libx264 @ 03fd18c0] coded y,uvDC,uvAC intra: 76.2% 66.0% 37.5%
[libx264 @ 03fd18c0] i16 v,h,dc,p: 18% 12%  6% 65%
[libx264 @ 03fd18c0] i8 v,h,dc,ddl,ddr,vr,hd,vl,hu: 13% 21% 22%  9%  6%  8%  6%
 7%  9%
[libx264 @ 03fd18c0] i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 30% 11% 15%  7%  6% 11%  6%
10%  5%
[libx264 @ 03fd18c0] i8c dc,h,v,p: 64% 16% 17%  3%
[libx264 @ 03fd18c0] Weighted P-Frames: Y:0.0% UV:0.0%
[libx264 @ 03fd18c0] kb/s:314.65

Вихідне відео має всього 12 Кб, і коли я відкриваю його за допомогою VLC, нічого не відбувається, ні звуку, ні відео.


Чи можу я запитати, чому б не використовувати Windows Movie Maker або подібне програмне забезпечення?
Doktoro Reichard

Мені потрібен інструмент командного рядка :)
icebox19

Відповіді:


1

Підсистема кольоровості

З виводу консолі:

No pixel format specified, yuvj444p for H.264 encoding chosen.  
Use -pix_fmt yuv420p for compatibility with outdated media players.

Значення потрібно додати -pix_fmt yuv420pяк вихідний варіант. В іншому випадку ffmpeg може (залежно від ваших даних, версії ffmpeg та використовуваного кодера) намагатися уникати підсвічування кольоровості . Технічно це добре, але більшість (усіх?) Гравців, що не базуються на FFmpeg, таких як QuickTime, не розшифрують його належним чином.

Зміна розмірів рами

З виводу консолі:

Input stream #0:0 frame changed from size:126x126 fmt:yuvj444p to
size:1024x768 fmt:yuvj444p

Це говорить про те, що вхідні кадри не всі мають однаковий розмір і можуть спричинити несподівану поведінку.

[swscaler @ 0257f640] застарілий формат пікселів, що використовується, переконайтеся, що ви правильно встановили діапазон

Це попередження (більше для розробників, ніж користувачів), яке ви можете ігнорувати.

Аудіо

Ви перекодуєте звук. Натомість ви можете потоково копіювати аудіо, оскільки ваш вихідний контейнер (mp4) повинен підтримувати MP3-аудіо. Це дозволить уникнути повторного кодування, а отже, збереже якість та також буде працювати набагато швидше.

Приклад

ffmpeg -i img%01d.jpg -i "03 eminem - when I'm Gone.mp3" -c:v libx264 \
-pix_fmt yuv420p -c:a copy -shortest output.mp4

Я відредагував публікацію.
icebox19

@ icebox19 Але ви не включили свою команду ffmpeg і не сказали, що таке проблеми.
llogan

Я знову відредагував публікацію.
icebox19

@ icebox19 Ваші зображення залежать від розміру кадру: 96x96, 126x126, 1024x768 та 1920x1200. Вам потрібно переконатися, що всі вхідні зображення однакового розміру кадру.
llogan
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.