Portál AbcLinuxu, 14. května 2024 10:08


Dotaz: pipline do ffmpeg

5.10.2018 20:27 lertimir | skóre: 64 | blog: Par_slov
pipline do ffmpeg
Přečteno: 486×
Odpovědět | Admin
pokouším se porozumět jak poslat pipeline do ffmpeg a nějak se mi nedaří.

pokud pošlu vstup přes pipeline tak tomu neporozumí
cat 1.mp4 | ffmpeg -hide_banner  -i -  -c:a aac -strict -2  -c:s copy -c:v libx265 -preset medium  -x265-params crf=24:ref=5:rd=5:rdoq-level=1:psy-rd=3:psy-rdoq=10 -f matroska - | cat > 2.mkv
[mov,mp4,m4a,3gp,3g2,mj2 @ 0x55ad9fe16060] stream 1, offset 0x20: partial file
[mov,mp4,m4a,3gp,3g2,mj2 @ 0x55ad9fe16060] Could not find codec parameters for stream 0 (Video: h264 (avc1 / 0x31637661), none, 1920x1080, 17012 kb/s): unspecified pixel format
Consider increasing the value for the 'analyzeduration' and 'probesize' options
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'pipe:':
  Metadata:
    major_brand     : mp42
    minor_version   : 0
    compatible_brands: isommp42
    creation_time   : 2016-05-01T15:30:57.000000Z
  Duration: 00:00:33.05, bitrate: N/A
    Stream #0:0(eng): Video: h264 (avc1 / 0x31637661), none, 1920x1080, 17012 kb/s, 30.02 fps, 30 tbr, 90k tbn, 180k tbc (default)
    Metadata:
      creation_time   : 2016-05-01T15:30:57.000000Z
      handler_name    : VideoHandle
    Stream #0:1(eng): Audio: aac (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 128 kb/s (default)
    Metadata:
      creation_time   : 2016-05-01T15:30:57.000000Z
      handler_name    : SoundHandle
[buffer @ 0x55ad9fe4fe80] Unable to parse option value "-1" as pixel format
    Last message repeated 1 times
[buffer @ 0x55ad9fe4fe80] Error setting option pix_fmt to value -1.
[graph 0 input from stream 0:0 @ 0x55ad9fe4fd80] Error applying options to the filter.
Error opening filters!
pokud pošlu přímo se specifikací mailu tak pracuje
ffmpeg -hide_banner  -i 1.mp4  -c:a aac -strict -2  -c:s copy -c:v libx265 -preset medium  -x265-params crf=24:ref=5:rd=5:rdoq-level=1:psy-rd=3:psy-rdoq=10 -f matroska - | cat > 2.mkv
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '1.mp4':
  Metadata:
    major_brand     : mp42
    minor_version   : 0
    compatible_brands: isommp42
    creation_time   : 2016-05-01T15:30:57.000000Z
  Duration: 00:00:33.05, start: 0.000000, bitrate: 17058 kb/s
    Stream #0:0(eng): Video: h264 (High) (avc1 / 0x31637661), yuv420p, 1920x1080, 17012 kb/s, 30.02 fps, 30 tbr, 90k tbn, 180k tbc (default)
    Metadata:
      creation_time   : 2016-05-01T15:30:57.000000Z
      handler_name    : VideoHandle
    Stream #0:1(eng): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 128 kb/s (default)
    Metadata:
      creation_time   : 2016-05-01T15:30:57.000000Z
      handler_name    : SoundHandle
x265 [info]: HEVC encoder version 0.0
x265 [info]: build info [Linux][GCC 6.3.0][64 bit] 8bit+10bit+12bit
x265 [info]: using cpu capabilities: MMX2 SSE2Fast SSSE3 SSE4.2 AVX
x265 [info]: Main profile, Level-4 (Main tier)
x265 [info]: Thread pool created using 8 threads
x265 [info]: Slices                              : 1
x265 [info]: frame threads / pool features       : 3 / wpp(17 rows)
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 / 2
x265 [info]: Keyframe min / max / scenecut       : 25 / 250 / 40
x265 [info]: Lookahead / bframes / badapt        : 20 / 4 / 2
x265 [info]: b-pyramid / weightp / weightb       : 1 / 1 / 0
x265 [info]: References / ref-limit  cu / depth  : 5 / on / on
x265 [info]: AQ: mode / str / qg-size / cu-tree  : 1 / 1.0 / 32 / 1
x265 [info]: Rate Control / qCompress            : CRF-24.0 / 0.60
x265 [info]: tools: rd=5 psy-rd=3.00 rdoq=1 psy-rdoq=10.00 rskip signhide tmvp
x265 [info]: tools: strong-intra-smoothing lslices=6 deblock sao
Output #0, matroska, to 'pipe:':
  Metadata:
    major_brand     : mp42
    minor_version   : 0
    compatible_brands: isommp42
    encoder         : Lavf57.56.101
    Stream #0:0(eng): Video: hevc (libx265), yuv420p, 1920x1080, q=2-31, 30 fps, 1k tbn, 30 tbc (default)
    Metadata:
      creation_time   : 2016-05-01T15:30:57.000000Z
      handler_name    : VideoHandle
      encoder         : Lavc57.64.101 libx265
    Stream #0:1(eng): Audio: aac (LC) ([255][0][0][0] / 0x00FF), 48000 Hz, stereo, fltp, 128 kb/s (default)
    Metadata:
      creation_time   : 2016-05-01T15:30:57.000000Z
      handler_name    : SoundHandle
      encoder         : Lavc57.64.101 aac
Stream mapping:
  Stream #0:0 -> #0:0 (h264 (native) -> hevc (libx265))
  Stream #0:1 -> #0:1 (aac (native) -> aac (native))
Press [q] to stop, [?] for help
vástup přes pipeline funguje. pipeline není samoúčelná. finální přikaz bude přes sít
cat zdroj| ssh server "ffmpeg" | cat > cil
ale ted ladím proč nejede input pro pipe lokálně. Distro je Debian a ffmpeg ani analyzeduration ani probesize nemá.

Řešení dotazu:


Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

5.10.2018 20:36 lertimir | skóre: 64 | blog: Par_slov
Rozbalit Rozbalit vše Re: pipline do ffmpeg
Odpovědět | | Sbalit | Link | Blokovat | Admin
tedy specifikaci filu a ne mailu. jsem už trochu utahaný v pátek večer.
6.10.2018 01:19 jejda
Rozbalit Rozbalit vše Re: pipline do ffmpeg
Odpovědět | | Sbalit | Link | Blokovat | Admin
To nejde protože ta vstupní mp4 má metadata až na konci souboru. Zkus je presunout na začátek
ffmpeg -i input.mp4 -movflags +faststart -c copy output.mp4
potom už by to mělo v rouře fungovat.

A ffmpeg si umí tahat vstupní video po síti sám

ffmpeg -i ftp://nekde.com/video.avi 
není potřeba to tunelovat přes ssh.
ffmpeg -protocols

8.10.2018 00:13 lertimir | skóre: 64 | blog: Par_slov
Rozbalit Rozbalit vše Re: pipline do ffmpeg
Ok. Tohle skutečně pomohlo a bash scipt funguje. fragment který to skutečně dělá ve skriptu je
     ffmpeg -i "$i" -movflags +faststart -c copy ~/$prenos
     cat ~/$prenos | ssh server "ffmpeg -hide_banner   -i -  -c:a aac -strict -2 -c:s copy -c:v libx265 -preset faster  -x265-params crf=28:ref=4:rd=5:rdoq=1:psy-rd=3:psy-rdoq=10 -f matroska  -" | cat >  "$name.h265.mkv";
     rm ~/$prenos
nicméně hlavička není zřejmě v pořádku. Ve vlc se video otevře v pořádku s uvedením času záznamu, v mpv se také otevře ale nezobrazí délku videa, která chybí do konce, zobrazuje jakoby do konce v každém okamžiku chyběla vteřina a nejde se posouvat dopředu. QT av zobrazí absurdní hodnotu.

Malé překódované video jsem uložil zde. Přímé stažení z netu není moc provediltelné, protože jsou to moje videa a na druhou stranu mám jich torchu více a server má hodně jader a v noci je zcela nezatížen takže chci do něj pustit vzdálené rekodování. (např tohle video které posílám má kompre
8.10.2018 00:19 lertimir | skóre: 64 | blog: Par_slov
Rozbalit Rozbalit vše Re: pipline do ffmpeg
(tohle video má komprexi asi 90x proti puvodním datům z kamery)
8.10.2018 06:31 jejda
Rozbalit Rozbalit vše Re: pipline do ffmpeg
Ta roura to prostě rozbije :(

Nebyla by možnost nějak nasdílet mountnout ten adresář s videama tak aby si ffmpeg myslel že je to video uloženo na serveru? Třeba přes sshfs nebo nfs?

Nebo použít nějakou takovou pseudo-pipe prasečinu ...
cat "$i" | ssh server "cat > video.tmp1; nice -n15 ffmpeg -i video.tmp1 -c:a aac -strict -2 -c:s copy -c:v libx265 -preset faster -x265-params crf=28:ref=4:rd=5:rdoq=1:psy-rd=3:psy-rdoq=10 -movflags +faststart -f matroska video.tmp2; cat video.tmp2; rm video.tmp*" | cat > "$name.h265.mkv"
Takto by šel ffmpeg obelstít.
14.4.2019 19:02 petr
Rozbalit Rozbalit vše Re: pipline do ffmpeg
vypada to, ze funguje cat file | | ffmpeg -i pipe:0 -f....

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.