#docker #ffmpeg
#docker #ffmpeg
Вопрос:
Уважаемые хакеры всего мира!
Я пытался использовать любимую библиотеку FFmpeg для создания видео из цикла изображения и аудио с использованием знаменитого образа Docker FFmpeg, но это сводило меня с ума, не давая ожидаемых результатов (результатов, которые я получаю, когда запускаю команду ffmpeg с эквивалентной версией на моем Macbook).
Вот команда:
docker run -v $(pwd):$(pwd) -w $(pwd) jrottenberg/ffmpeg:4.3-alpine
-y
-stats
-loop 1 -i files/image.jpg
-i files/a.mp3
-c:v libx265 -pix_fmt yuv420p10
-c:a aac
-movflags faststart
-shortest
-f mp4 test.mp4
Он должен создать test.mp4 с предоставленными аудио и изображением, которые готовы к загрузке на несчастный Youtube.
Когда я делаю это, в видео, похоже, отсутствуют атомы moov (если я попытаюсь его проанализировать). Как ни странно, если я запущу это два раза, используя изображение Docker (переопределяя один и тот же файл), видеофайл волшебным образом начнет работать.
Я также пытался использовать разные образы и версии ОС ffmpeg. Похоже, что документирование ffmpeg и репозиторий кода также могут извлечь выгоду из некоторой заботы и любви.
Что еще я мог сделать, чтобы исправить это?
Вот вывод из консоли:
-y
-stats
-loop 1 -i files/image.jpg
-i files/a.mp3
-c:v libx265 -pix_fmt yuv420p10
-c:a aac
-movflags faststart
-shortest
-f mp4 test30.mp4
ffmpeg version 4.3.1 Copyright (c) 2000-2020 the FFmpeg developers
built with gcc 6.4.0 (Alpine 6.4.0)
configuration: --disable-debug --disable-doc --disable-ffplay --enable-shared --enable-avresample --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-gpl --enable-libass --enable-fontconfig --enable-libfreetype --enable-libvidstab --enable-libmp3lame --enable-libopus --enable-libtheora --enable-libvorbis --enable-libvpx --enable-libwebp --enable-libxcb --enable-libx265 --enable-libxvid --enable-libx264 --enable-nonfree --enable-openssl --enable-libfdk_aac --enable-postproc --enable-small --enable-version3 --enable-libbluray --enable-libzmq --extra-libs=-ldl --prefix=/opt/ffmpeg --enable-libopenjpeg --enable-libkvazaar --enable-libaom --extra-libs=-lpthread --enable-libsrt --enable-libaribb24 --extra-cflags=-I/opt/ffmpeg/include --extra-ldflags=-L/opt/ffmpeg/lib
libavutil 56. 51.100 / 56. 51.100
libavcodec 58. 91.100 / 58. 91.100
libavformat 58. 45.100 / 58. 45.100
libavdevice 58. 10.100 / 58. 10.100
libavfilter 7. 85.100 / 7. 85.100
libavresample 4. 0. 0 / 4. 0. 0
libswscale 5. 7.100 / 5. 7.100
libswresample 3. 7.100 / 3. 7.100
libpostproc 55. 7.100 / 55. 7.100
Input #0, image2, from 'files/image.jpg':
Duration: 00:00:00.04, start: 0.000000, bitrate: 34300 kb/s
Stream #0:0: Video: mjpeg, gray(bt470bg/unknown/unknown), 500x500 [SAR 240:240 DAR 1:1], 25 fps, 25 tbr, 25 tbn, 25 tbc
Input #1, mp3, from 'files/a.mp3':
Metadata:
title : Visions
artist : Hattori Hanzo
album : Visions
encoded_by : Fission
encoder : Lavf58.45.100
TLEN : 16039
track : 1
Duration: 00:00:16.04, start: 0.000000, bitrate: 199 kb/s
Stream #1:0: Audio: mp3, 44100 Hz, stereo, fltp, 191 kb/s
Stream #1:1: Video: mjpeg, yuvj444p(pc, bt470bg/unknown/unknown), 500x500 [SAR 300:300 DAR 1:1], 90k tbr, 90k tbn, 90k tbc (attached pic)
Metadata:
comment : Other
Stream mapping:
Stream #0:0 -> #0:0 (mjpeg (native) -> hevc (libx265))
Stream #1:0 -> #0:1 (mp3 (mp3float) -> aac (native))
Press [q] to stop, [?] for help
x265 [info]: HEVC encoder version 3.1.1 1-04b37fdfd2dc
x265 [info]: build info [Linux][GCC 6.4.0][64 bit] 10bit
x265 [info]: using cpu capabilities: MMX2 SSE2Fast LZCNT SSSE3 SSE4.2 AVX FMA3 BMI2 AVX2
x265 [info]: Main 10 profile, Level-3 (Main tier)
x265 [info]: Thread pool created using 8 threads
x265 [info]: Slices : 1
x265 [info]: frame threads / pool features : 3 / wpp(8 rows)
x265 [warning]: Source height < 720p; disabling lookahead-slices
x265 [info]: Coding QT: max CU size, min CU size : 64 / 8
x265 [info]: Residual QT: max TU size, max depth : 32 / 1 inter / 1 intra
x265 [info]: ME / range / subpel / merge : hex / 57 / 2 / 3
x265 [info]: Keyframe min / max / scenecut / bias: 25 / 250 / 40 / 5.00
x265 [info]: Lookahead / bframes / badapt : 20 / 4 / 2
x265 [info]: b-pyramid / weightp / weightb : 1 / 1 / 0
x265 [info]: References / ref-limit cu / depth : 3 / off / on
x265 [info]: AQ: mode / str / qg-size / cu-tree : 2 / 1.0 / 32 / 1
x265 [info]: Rate Control / qCompress : CRF-28.0 / 0.60
x265 [info]: tools: rd=3 psy-rd=2.00 early-skip rskip signhide tmvp b-intra
x265 [info]: tools: strong-intra-smoothing deblock sao
Output #0, mp4, to 'test30.mp4':
Metadata:
encoder : Lavf58.45.100
Stream #0:0: Video: hevc (libx265) (hev1 / 0x31766568), yuv420p10le(progressive), 500x500 [SAR 1:1 DAR 1:1], q=-1--1, 25 fps, 12800 tbn, 25 tbc
Metadata:
encoder : Lavc58.91.100 libx265
Side data:
cpb: bitrate max/min/avg: 0/0/0 buffer size: 0 vbv_delay: N/A
Stream #0:1: Audio: aac (mp4a / 0x6134706D), 44100 Hz, stereo, fltp, 128 kb/s
Metadata:
encoder : Lavc58.91.100 aac
frame= 52 fps=0.0 q=33.0 size= 0kB time=00:00:00.80 bitrate= 0.4kbits/frame= 120 fps=119 q=33.0 size= 0kB time=00:00:03.52 bitrate= 0.1kbits/frame= 190 fps=125 q=33.0 size= 0kB time=00:00:06.33 bitrate= 0.1kbits/frame= 257 fps=127 q=33.0 size= 0kB time=00:00:09.00 bitrate= 0.0kbits/frame= 303 fps=120 q=35.0 size= 256kB time=00:00:10.86 bitrate= 193.0kbits/frame= 373 fps=123 q=36.0 size= 256kB time=00:00:13.65 bitrate= 153.6kbits/[mp4 @ 0x55d481bc6980] Starting second pass: moving the moov atom to the beginning of the file
frame= 432 fps=121 q=36.0 Lsize= 379kB time=00:00:17.16 bitrate= 180.8kbits/s speed= 4.8x
video:107kB audio:255kB subtitle:0kB other streams:0kB global headers:2kB muxing overhead: 4.667185%
x265 [info]: frame I: 2, Avg QP:23.55 kb/s: 8634.80
x265 [info]: frame P: 147, Avg QP:33.00 kb/s: 13.49
x265 [info]: frame B: 283, Avg QP:35.71 kb/s: 8.06
x265 [info]: Weighted P-Frames: Y:0.0% UV:0.0%
x265 [info]: consecutive B-frames: 34.2% 10.1% 20.8% 1.3% 33.6%
encoded 432 frames in 3.56s (121.32 fps), 49.84 kb/s, Avg QP:34.73
[aac @ 0x55d481b23ac0] Qavg: 563.168```
Комментарии:
1. Показать полный журнал из команды ffmpeg в Docker.
2. @llogan добавил его. Кажется, что преобразование завершено, как будто все в порядке, но видео не может быть открыто. Я надеюсь, что это может помочь!
3. Выглядит нормально, поэтому я предполагаю, что это, вероятно, не проблема с самим ffmpeg.