Portál AbcLinuxu, 2. května 2025 05:47
libavformat
(ten se musí nahodit přes -demuxer lavf
). Za normálních okolnosti se chovají podobně (i když ten druhý děla jakési brikule s PID jednotlivých streamů), ale dost se liší reakcí na různá poškození. Několikrát se mi stalo, že zarušený stream, který jeden parser neskousl, druhý (většinou za mohutného kostičkování) přehrál a naopak.
Také je dobré povolit vkládání snímků, jaký to má důvod přesně nevím, ale alespoň u mně to funguje, používám na to tyto volby (jen ty důležité, zbyek jsou zhruba ještě tři řádky):.
-vf softskip,harddup -demuxer lavf -lavfdopts probesize=128
Na MPEG Transport Stream jsou v MPlayeru dva parsery - jeden interní a jeden z libavformat (ten se musí nahodit přes -demuxer lavf). Za normálních okolnosti se chovají podobně (i když ten druhý děla jakési brikule s PID jednotlivých streamů), ale dost se liší reakcí na různá poškození.Fíha, věděl jsem, že různé frameworky mají víc různých prsesrů a kodeků (jmenovitě myslím gstreamer má jakou default na mms starý polofunkční křáp) a jako default cpou ten starší, ale že i Mplayer?
jaký to má důvod přesně nevímAsi tento:
$mplayer -demuxer lavf … … VO: [xv] 1440x1080 => 1920x1080 Planar YV12 pts value < previousV: -0.039 ct: -0.006 0/ 0 ??% ??% ??,?% 10 0 pts value < previousV: -0.035 ct: -0.012 0/ 0 ??% ??% ??,?% 10 0 pts value < previousV: 0.025 ct: -0.006 0/ 0 79% 7% 3.3% 10 0 pts value < previousV: 0.082 ct: 0.000 0/ 0 81% 6% 3.2% 11 0 pts value < previousV: 0.139 ct: 0.006 0/ 0 73% 5% 2.8% 11 0 pts value < previousV: 0.233 ct: 0.012 0/ 0 78% 5% 3.1% 13 0 pts value < previousV: 0.246 ct: 0.018 0/ 0 73% 4% 2.8% 13 0 pts value < previousV: 0.301 ct: 0.024 0/ 0 69% 4% 2.6% 13 0 pts value < previousV: 0.360 ct: 0.030 0/ 0 71% 4% 3.1% 15 0
bohužel nedáTo se mi fakt nezdá. Co manuál? Už spatřil světlo světa?
navíc současnej formát je tak blbe podporovanej že to prostě z pohodlnosti chci v nečem jiném...Stačí bez překódování prostě převést do rozumnějšího kontejneru. MPEG4 kontejner, H.264 a AAC jsou dnes standard. Takže až na ten zvuk by s tím neměl být problém.
Kamera má 5 možností úrovně komprese, vždy to je HD 24mbps, 18mbps.. atd, režimy p a i... vždy ale standard 1080.Aha. No tak to je super.
Jak se to dá hodit do rozumnějšího kontejneru?
ffmpeg -r 50 -i VIDEO001.MTS -acodec copy -vcodec copy VIDEO001.mp4
ffmpeg -r 50 -i VIDEO001.MTS -r 25 -acodec copy -vcodec copy VIDEO001.mp4video mi ale následně nehraje jak bych si představoval - mplayer háže tisíce tohoto
pts value < previous [h264 @ 0x7f280af5e8e0]Missing reference picture 19% 45% 0.6% 36 0 [h264 @ 0x7f280af5e8e0]Missing reference picture [h264 @ 0x7f280af5e8e0]QP 53 out of range [h264 @ 0x7f280af5e8e0]decode_slice_header error [h264 @ 0x7f280af5e8e0]Missing reference picture [h264 @ 0x7f280af5e8e0]illegal short term buffer state detected [h264 @ 0x7f280af5e8e0]Missing reference picture 19% 45% 0.6% 36 0 [h264 @ 0x7f280af5e8e0]illegal short term buffer state detected [h264 @ 0x7f280af5e8e0]Missing reference picture [h264 @ 0x7f280af5e8e0]Missing reference picture [h264 @ 0x7f280af5e8e0]QP 54 out of range [h264 @ 0x7f280af5e8e0]decode_slice_header error A: 4.0 V: 2.8 A-V: 1.226 ct: 0.136 0/ 0 18% 44% 0.6% 36 0a video je celé jakoby "reliéf"
ffmpeg -r 50 -i VIDEO001.MTS
-r 25 -acodec copy -vcodec copy VIDEO001.mp4
ffmpeg -i 00000.mts -r 60000/1001 -an -f mp4 -vcodec mpeg4 -r 30000/1001 00000.mp4 ffmpeg -i 00000.mts -vn 00000.wavSpojil dohromady
ffmpeg -i 00000.mp4 -i 00000.wav -sameq -s hd720 -r 30000/1001 00000.mpgVýsledek je sladění zvuku s obrazem, ale mnohem horší kvalita obrazu, asi se to bude muset dotáhnout ..
ale mnohem horší kvalita obrazu
$ ffmpeg -i VIDEO001.MTS -r 60000/1001 -an -f mp4 -vcodec mpeg4 -r 30000/1001 00000.mp4 FFmpeg version SVN-r20372, Copyright (c) 2000-2009 Fabrice Bellard, et al. built on Nov 7 2009 10:57:27 with gcc 4.4.2 20091027 (Red Hat 4.4.2-7) configuration: --prefix=/usr --bindir=/usr/bin --datadir=/usr/share/ffmpeg --incdir=/usr/include/ffmpeg --libdir=/usr/lib64 --mandir=/usr/share/man --arch=x86_64 --extra-cflags='-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic' --extra-version=rpmfusion --enable-bzlib --enable-libdc1394 --enable-libdirac --enable-libfaad --enable-libgsm --enable-libmp3lame --enable-libopenjpeg --enable-libschroedinger --enable-libspeex --enable-libtheora --enable-libvorbis --enable-libx264 --enable-libxvid --enable-x11grab --enable-avfilter --enable-avfilter-lavf --enable-postproc --enable-pthreads --disable-static --enable-shared --enable-gpl --disable-debug --disable-stripping --shlibdir=/usr/lib64 --enable-runtime-cpudetect libavutil 50. 3. 0 / 50. 3. 0 libavcodec 52.37. 1 / 52.37. 1 libavformat 52.39. 2 / 52.39. 2 libavdevice 52. 2. 0 / 52. 2. 0 libavfilter 1. 4. 1 / 1. 4. 1 libswscale 0. 7. 1 / 0. 7. 1 libpostproc 51. 2. 0 / 51. 2. 0 [mpegts @ 0x19ab5e0]max_analyze_duration reached Input #0, mpegts, from 'VIDEO001.MTS': Duration: 00:00:14.88, start: 0.457489, bitrate: 12321 kb/s Program 1 Stream #0.0[0x1011]: Video: h264, yuv420p, 1440x1080 [PAR 4:3 DAR 16:9], 50 tbr, 90k tbn, 50 tbc Stream #0.1[0x1100]: Audio: ac3, 48000 Hz, stereo, s16, 256 kb/s File '00000.mp4' already exists. Overwrite ? [y/N] y Output #0, mp4, to '00000.mp4': Stream #0.0: Video: mpeg4, yuv420p, 1440x1080 [PAR 4:3 DAR 16:9], q=2-31, 200 kb/s, 30k tbn, 29.97 tbc Stream mapping: Stream #0.0 -> #0.0 Press [q] to stop encodingProtože dojde dvakrát k překódování toho videa o stejném rozlišení z formátu MPEG-4 Part 10 do formátu MPEG-4 Part 2(DivX,XviD,…) o přiděleném pásmu tak kolem 1500kb/s. Bacha na to -sameq. Kvalita je jen pojem který znají tak max. nějací markeťácí když to musí prodat a mazat zákazníkovi med kolem huby, ale ve skutečnosti nic takového neexistuje. Už jsem se nad tím nejednou rozčiloval.
ffmpeg -r 50 -i VIDEO001.MTS -r 25 -s 1280x720 -vcodec mpeg2video -b 5000k -acodec mp2 -ab 224k VIDEO001.mpg
Starting playback... Movie-Aspect is 1.78:1 - prescaling to correct movie aspect. VO: [xv] 1280x720 => 1280x720 Planar YV12 [mpeg2video @ 0xad7840]Warning MVs not available [mpeg2video @ 0xad7840]concealing 80 DC, 80 AC, 80 MV errors [mpeg2video @ 0xad7840]Warning MVs not available ??% ??% ??,?% 0 0 [mpeg2video @ 0xad7840]concealing 80 DC, 80 AC, 80 MV errors [mpeg2video @ 0xad7840]concealing 80 DC, 80 AC, 80 MV errors?% 0 0 [mpeg2video @ 0xad7840]concealing 80 DC, 80 AC, 80 MV errors?% 0 0 [mpeg2video @ 0xad7840]concealing 80 DC, 80 AC, 80 MV errors?% 0 0 [mpeg2video @ 0xad7840]concealing 80 DC, 80 AC, 80 MV errors?% 0 0 [mpeg2video @ 0xad7840]concealing 80 DC, 80 AC, 80 MV errors?% 0 0 [mpeg2video @ 0xad7840]concealing 80 DC, 80 AC, 80 MV errors?% 0 0 [mpeg2video @ 0xad7840]concealing 80 DC, 80 AC, 80 MV errors?% 0 0 [mpeg2video @ 0xad7840]concealing 80 DC, 80 AC, 80 MV errors?% 0 0 [mpeg2video @ 0xad7840]concealing 80 DC, 80 AC, 80 MV errors?% 0 0 [mpeg2video @ 0xad7840]concealing 80 DC, 80 AC, 80 MV errors5% 0 0 [mpeg2video @ 0xad7840]concealing 80 DC, 80 AC, 80 MV errors5% 0 0 [mpeg2video @ 0xad7840]concealing 80 DC, 80 AC, 80 MV errors5% 0 0 [mpeg2video @ 0xad7840]concealing 80 DC, 80 AC, 80 MV errors4% 0 0 [mpeg2video @ 0xad7840]concealing 80 DC, 80 AC, 80 MV errors4% 0 0 [mpeg2video @ 0xad7840]concealing 80 DC, 80 AC, 80 MV errors3% 0 0 [mpeg2video @ 0xad7840]concealing 80 DC, 80 AC, 80 MV errors3% 0 0Takže ještě jednou pro ty nedoslýchavé: Videa nesereme do AVI kontejneru pokud to není nevyhnutelně nutné!
[mpeg2video @ 0xad7840]Varování, pohybové vektory nejsou dostupné [mpeg2video @ 0xad7840]Kamufluji 80 chyb DC koeficientů, 80 chyb AC koeficientů, 80 chyb pohybových vektorů …Normálně se to stává, když je stream poškozen a prostě nějaká data chybí a nebo na jejich místech jsou nějaké nesmysly. Mplayer si potom prostě nějaké hodnoty domyslí. Normálně by to moc nevadilo, protože se v nějakém snímku objeví prostě nějaké hnusy, rozhodí se synchronizace, ale ta se zase v průběhu dožene a je to. Jenomže pokud je poškozen řekněme každý druhý snímek? Sice jsem si žádného viditelného poškození obrazu nevšiml, ale kdo ví. Neznamená to že tam nemůže být. Není to teda ovšem tím, že by byl stream poškozen ale právě tím, že v místech kde mplayer něco očekával něco nebylo a třeba to bylo jinde. Nechci z toho přímo obviňovat AVI, ale je to pravděpodobná příčina. AVI je totiž strašně starý formát, a vychází ještě z RIFFu, který byl v průběhu času všelijak rozšiřován přes všelijaké nestandardní rozšíření a upravován všelijakými hacky a ještě v tom vznik strašný bordel, protože není AVI jako AVI. Dokonce nevím jestli je nějak standardizován a nebo prostě jaké si to kdo udělá takové to má. Standardní AVI kupř. neumí B-Frames a to se tam přidalo až hackem, což klidně může být v tomto případě ta hlavní příčina. Že očekává B-Frame a ten nikde. Takže ještě jednou: Vyvarovat se AVI co to jde.
co mohu udělat proto aby to bylo dobře?Bohužel, to neporadím. Na mencoder jsem ještě moc velká lama, takže jednu z možností jsem nabídl níže.
Standardní AVI kupř. neumí B-Frames a to se tam přidalo až hackem, což klidně může být v tomto případě ta hlavní příčina.A také možná důvod proč to jelo kamarádovi ve Windows normálně. Proprietární rozšíření/hack.
si u tebe asi zaplatím školení :))Prosím natočit a zveřejnit
ffmpeg -i 00002.MTS -vcodec libx264 -b 18000k -vpre hq -crf 22 -threads 0 -acodec copy -deinterlace -s 1280x720 002.xxxPonechávám FPS 50 snímků za vteřinu, možná zbytečně... Obraz je velmi dobrý, zabírá na disku asi 25% původní velikosti, zvuk neposunutý (2ch AC3).
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.