FFmpeg: кодирование/декодирование H264

Разные проблемы звука, видео, обсуждение разных устройств и т.д.

Модератор: Модераторы разделов

Аватара пользователя
Rodegast
Сообщения: 337
ОС: Linux
Контактная информация:

Re: FFmpeg: кодирование/декодирование H264

Сообщение Rodegast »

>я получаю из 13М файла 200М с изменёнными цветами

Пресет называется lossless_ultrafast. Это значит что используется сжатие без потерь т.е. квантователь=0.

>Оно вообще, возможно перекодировать h26 в h264?

Конечно возможно. Если бы вы прислушались ко мне и в самом начале использовали mencoder, то всё бы давно получилось.
Спасибо сказали:
IMB
Сообщения: 2561
ОС: Debian

Re: FFmpeg: кодирование/декодирование H264

Сообщение IMB »

Да мне всё равно чем провести тест - ffmpeg-ом или mencoder-ом. Одно но, сперва всё надо собрать под ARM-архитектуру, попробую завтра заняться mencoder-ом.
Пресет называется lossless_ultrafast. Это значит что используется сжатие без потерь т.е. квантователь=0.

Я пробовал использовать max, normal и default - "подопытный" не тянет.
Спасибо сказали:
Аватара пользователя
sspphheerraa
Сообщения: 1375
ОС: Gentoo

Re: FFmpeg: кодирование/декодирование H264

Сообщение sspphheerraa »

см. пост №6

upd: Rodegast уже ответил, что losseless - это quantizer=0. В твоем случае исходный файл уже сжат и с перекодированием в losseless происходит его разжатие (размер увеличивается, качество не добавляется)

ps Добавь в пресет опцию "crf=20" (с цифрой можешь поиграться). Не надо менкодера, все получится здесь :)
И я бы рекомендовал использовать на выходе mp4 вместо avi.
Sspphheerraa
Спасибо сказали:
IMB
Сообщения: 2561
ОС: Debian

Re: FFmpeg: кодирование/декодирование H264

Сообщение IMB »

Клиент готов. (с)
Не тянет он при добавлении этого параметра, попробую ещё поиграться.
Итак, в наличии имеется:

Код: Выделить всё

# ./ffmpeg -i suspicious_person_stopped_annotated_h264.avi -vcodec libx264 -fpre
 /opt/FFMPEG/share/ffmpeg/libx264-lossless_ultrafast.ffpreset test.mp4
FFmpeg version SVN-r21137, Copyright (c) 2000-2010 Fabrice Bellard, et al.
  built on Jan 19 2010 10:56:06 with gcc 4.2.0 (MontaVista 4.2.0-16.0.32.0801914 2008-08-30)
  configuration: --enable-libx264 --enable-gpl --enable-cross-compile --cross-prefix=arm_v5t_le- --arch=arm-linux --extra-cflags=-I/home/kirill/nfs/IP365/opt/FFMPEG/include --extra-ldflags=-L/home/kirill/nfs/IP3G
  libavutil     50. 7. 0 / 50. 7. 0
  libavcodec    52.47. 0 / 52.47. 0
  libavformat   52.46. 0 / 52.46. 0
  libavdevice   52. 2. 0 / 52. 2. 0
  libswscale     0. 8. 0 /  0. 8. 0
[avi @ 0x9fecb0]max_analyze_duration reached

Seems stream 0 codec frame rate differs from container frame rate: 50.00 (50/1) -> 25.00 (25/1)
Input #0, avi, from 'suspicious_person_stopped_annotated_h264.avi':
  Duration: 00:01:02.84, start: 0.000000, bitrate: 1729 kb/s
    Stream #0.0: Video: h264, yuv420p, 1920x1080 [PAR 1:1 DAR 16:9], 25 fps, 25 tbr, 25 tbn, 50 tbc
[libx264 @ 0xb595e0]using SAR=1/1
[libx264 @ 0xb595e0]using cpu capabilities: none!
[libx264 @ 0xb595e0]profile Baseline, level 4.0
Output #0, mp4, to 'test.mp4':
    Stream #0.0: Video: libx264, yuv420p, 1920x1080 [PAR 1:1 DAR 16:9], q=10-51, 200 kb/s, 25 tbn, 25 tbc
Stream mapping:
  Stream #0.0 -> #0.0
Press [q] to stop encoding
oom-killer: gfp_mask=0x200d2, order=0       0kB time=10000000000.00 bitrate=   0.0kbits/s
Mem-info:
DMA per-cpu:
cpu 0 hot: high 42, batch 7 used:6
cpu 0 cold: high 14, batch 3 used:12
DMA32 per-cpu: empty
Normal per-cpu: empty
HighMem per-cpu: empty
Free pages:        1520kB (0kB HighMem)
Active:19341 inactive:0 dirty:0 writeback:0 unstable:0 free:380 slab:403 mapped:0 pagetables:59
DMA free:1520kB min:1448kB low:1808kB high:2172kB active:77364kB inactive:0kB present:131072kB pages_scanned:19310 all_unreclaimable? no
lowmem_reserve[]: 0 0 0 0
DMA32 free:0kB min:0kB low:0kB high:0kB active:0kB inactive:0kB present:0kB pages_scanned:0 all_unreclaimable? no
lowmem_reserve[]: 0 0 0 0
Normal free:0kB min:0kB low:0kB high:0kB active:0kB inactive:0kB present:0kB pages_scanned:0 all_unreclaimable? no
lowmem_reserve[]: 0 0 0 0
HighMem free:0kB min:128kB low:128kB high:128kB active:0kB inactive:0kB present:0kB pages_scanned:0 all_unreclaimable? no
lowmem_reserve[]: 0 0 0 0
DMA: 18*4kB 3*8kB 1*16kB 0*32kB 0*64kB 1*128kB 1*256kB 0*512kB 1*1024kB 0*2048kB 0*4096kB 0*8192kB 0*16384kB = 1520kB
DMA32: empty
Normal: empty
HighMem: empty
Free swap:            0kB
32768 pages of RAM
439 free pages
12249 reserved pages
403 slab pages
0 pages shared
0 pages swap cached
Out of Memory: Kill process 277 (ffmpeg) score 1910 and children.
Out of memory: Killed process 277 (ffmpeg).
Killed

И полный ступор, не реагирует на команды. Данные по доступной памяти, сразу после перезагрузки:

free

total used free shared buffers Mem: 125684 47880 77804 0 0 Swap: 0 0 0 Total: 125684 47880 77804
Спасибо сказали:
Аватара пользователя
Rodegast
Сообщения: 337
ОС: Linux
Контактная информация:

Re: FFmpeg: кодирование/декодирование H264

Сообщение Rodegast »

Я не сомневаюсь что у вас всё получится с ffmpeg, но с meccoder-ом проблем будет меньше :)

1) Сначала mencoder -ovc help Если в списке кодеков будет x264, то всё нормально. Если не будет то придётся пересобрать mplayer.

2) Кодируем так как тут написано:
http://www.mplayerhq.hu/DOCS/HTML/ru/menc-feat-x264.html
http://www.mplayerhq.hu/DOCS/HTML/ru/encoding-guide.html
Спасибо сказали:
Аватара пользователя
sspphheerraa
Сообщения: 1375
ОС: Gentoo

Re: FFmpeg: кодирование/декодирование H264

Сообщение sspphheerraa »

IMB, swap есть?
Sspphheerraa
Спасибо сказали:
IMB
Сообщения: 2561
ОС: Debian

Re: FFmpeg: кодирование/декодирование H264

Сообщение IMB »

На данный момент swap-а нет, систему плата берёт по nfs.
Спасибо сказали:
Аватара пользователя
sspphheerraa
Сообщения: 1375
ОС: Gentoo

Re: FFmpeg: кодирование/декодирование H264

Сообщение sspphheerraa »

попробуй сделать
вот например так:
# dd if=/dev/zero of=/swap bs=1M count=1024
# mkswap /swap
# swapon /swap
(это на гиг, хотя цифры можешь подобрать свои)
Sspphheerraa
Спасибо сказали:
IMB
Сообщения: 2561
ОС: Debian

Re: FFmpeg: кодирование/декодирование H264

Сообщение IMB »

sspphheerraa писал(а):
20.01.2010 23:52
попробуй сделать
вот например так:
# dd if=/dev/zero of=/swap bs=1M count=1024
# mkswap /swap
# swapon /swap
(это на гиг, хотя цифры можешь подобрать свои)

Спасибо, попробую! Но этот фокус может быть пройдёт при nfs-системе. В идеале, на мой взгляд, тест надо провести на изолированой системе, а на плате установлен флеш 128 MB, что явно недостаточно для создания "объёмного" swap-а.
Спасибо сказали:
kotnaton
Сообщения: 234

Re: FFmpeg: кодирование/декодирование H264

Сообщение kotnaton »

Хотел бы поднять тему. У меня не получается мюкс из ts (AVC) в любой другой контейнер, в основном, конечно - MP4, матрешку делаю по-другому. В общем, стабильно получается что звуковая записывается как надо, а первые фреймы видео-дороги - одними нулями:

Spoiler
time=00:00:00.00 bitrate= 0.0kbits/frame= 0 fps= 0 q=-1.0 size= 0kB
time=00:00:00.00 bitrate= 0.0kbits/frame= 0 fps= 0 q=-1.0 size= 0kB
time=00:00:00.00 bitrate= 0.0kbits/frame= 0 fps= 0 q=-1.0 size= 0kB
time=00:00:00.00 bitrate= 0.0kbits/frame= 0 fps= 0 q=-1.0 size= 0kB
time=00:00:00.00 bitrate= 0.0kbits/frame= 0 fps= 0 q=-1.0 size= 0kB
time=00:00:00.00 bitrate= 0.0kbits/frame= 0 fps= 0 q=-1.0 size= 0kB
time=00:00:00.00 bitrate= 0.0kbits/frame= 0 fps= 0 q=-1.0 size= 0kB
time=00:00:00.00 bitrate= 0.0kbits/frame= 0 fps= 0 q=-1.0 size= 0kB
time=00:00:00.00 bitrate= 0.0kbits/frame= 0 fps= 0 q=-1.0 size= 0kB
time=00:00:00.00 bitrate= 0.0kbits/frame= 6 fps= 1 q=-1.0 size= 127kB
time=00:00:10.82 bitrate= 96.0kbits/frame= 41 fps= 7 q=-1.0 size= 134kB
time=00:00:11.40 bitrate= 96.0kbits/frame= 60 fps= 9 q=-1.0 size= 183kB
time=00:00:11.90 bitrate= 126.0kbits/frame= 96 fps= 13 q=-1.0 size= 279kB
time=00:00:12.38 bitrate= 184.3kbits/frame= 120 fps= 15 q=-1.0 size= 381kB

Так что mplayer, mencoder и сам ffmpeg в дальнейшем, из получившегося файла считают, что перед ними только аудиофайл. Обрезка тоже не помогает: обрезанный файл все равно начинается "с нулей". Сначала грешил на транспортный поток, а потом взял заведомо исправный TS файл (тоже в h264) - та же картина, разница только в количестве обнуленных фреймов. Кто-нибудь знает, можно это победить какими-нибудь опциями ?

UPD: Увы в рассылке разработчиков отсылают к другим кодерам http://ffmpeg.org/pipermail/ffmpeg-user/20...ber/002598.html

:(((((
бывает же такое ???
Спасибо сказали:
Аватара пользователя
sspphheerraa
Сообщения: 1375
ОС: Gentoo

Re: FFmpeg: кодирование/декодирование H264

Сообщение sspphheerraa »

Выложите кусок проблемного ts файла. Попробуем разобраться, что да как.
Sspphheerraa
Спасибо сказали:
kotnaton
Сообщения: 234

Re: FFmpeg: кодирование/декодирование H264

Сообщение kotnaton »

Вот вам 2-секундное отставание старта видео от звука в VLC и потеря этих самых 2 секунд остальными проигрывателями, после ffmpeg -i tunnels.ts -vcodec copy -acodec copy -f mp4 tunnels.mp4. Файл размером ~67Мб
http://narod.ru/disk/43143593001.2c33832a3...unnels.mp4.html

Тут более маленький файлик ~4.5Мб
http://narod.ru/disk/43142452001.b45d3dcce.../primer.ts.html

И то, что из него получилось через ffmpeg -i primer.ts -vcodec copy -acodec copy -f mp4 primer.mp4 - полная утрата видео дорожки
http://narod.ru/disk/43142669001.8c4136cb7...primer.mp4.html

бывает же такое ???
Спасибо сказали:
Аватара пользователя
Rodegast
Сообщения: 337
ОС: Linux
Контактная информация:

Re: FFmpeg: кодирование/декодирование H264

Сообщение Rodegast »

Вот тебе команда которая кодирует "более маленький файлик" :)

Код: Выделить всё

/usr/local/bin/mencoder -ovc x264 -x264encopts bframes=0:qp=26:threads=0:me=hex:me_range=16:subq=5:scenecut=40:frameref=1:deadzone_inter=21:deadzone_intra=11:direct=auto:subme=7:weightp=0:mvrange=-1:merange=16:mvrange-thread=-1:rc-lookahead=40:cqm=flat:noglobal_header:nointerlaced:partitions=p8x8,b8x8,i8x8,i4x4:8x8dct:ip_factor=14.0:keyint=250:keyint_min=50:fast_pskip:dct_decimate:cabac:trellis=0:aq_mode=2:aq_strength=1.0:nodeblock:nopsnr:nossim -vf harddup -oac copy -mc 0 -noautosub -sid 32 -noaspect -noskip -of lavf -lavfopts format=mp4 /home/rodegast/primer.ts -sid 32  -sb 100000  -field-dominance -1 -o /home/rodegast/primer.mp4
Спасибо сказали:
Аватара пользователя
sspphheerraa
Сообщения: 1375
ОС: Gentoo

Re: FFmpeg: кодирование/декодирование H264

Сообщение sspphheerraa »

kotnaton писал(а):
09.03.2012 02:41
Тут более маленький файлик ~4.5Мб
http://narod.ru/disk/43142452001.b45d3dcce.../primer.ts.html

Какой-то кривоватый файл. MPlayer, VLC, ffplay, Avidemux - все его играют по разному.
Как правильно? с чего должен начинаться звук? со слов "свежие напитки" / "перспективный поезд" / "средства наблюдения" .... :crazy:
Sspphheerraa
Спасибо сказали:
Ответить