Fórum Ubuntu CZ/SK
Ubuntu pro osobní počítače => Multimédia => Téma založeno: Tomtom 31 Října 2012, 20:12:30
-
Zdravím.
Snažím se přijít na to, jak nahrát časový úsek videa do souboru pomocí mplayeru (nebo jinak).
Mám poškozené video - první vteřiny končí chybou, takže nejde přehrát v žádném přehrávači, co mám - neotevřu ho ani v avidemuxu...
Přehrát se mi to nakonec povedlo s mplayer -ss 10 video.mkv (přeskočení vadné části), ale rád bych to bez těch deseti vteřin i uložil. Pokud možno bez ztráty kvality.
Víte někdo, jak na to? Děkujeme.
-
Co nějakou střižnu? OpenShot, PiTiVi, Avidemux.
-
Co by se stalo, kdybys udělal toto:
mplayer -ss 10 video.mkv > video2.mkv
-
nebo třeba:
avconv -ss 10 -i video.mkv video2.mkv?
-
Co nějakou střižnu? OpenShot, PiTiVi, Avidemux.
To bohužel neprojde - chyba je hned na začátku, takže avidemux padne, pitivi nadává na špatný formát, openshot video zdánlivě načte, ale odmítá ho i jen přehrát.
Co by se stalo, kdybys udělal toto:
mplayer -ss 10 video.mkv > video2.mkv
Tohle ukládá jenom textový výstup terminálu.
A/
nebo třeba:
avconv -ss 10 -i video.mkv video2.mkv?
avconv: příkaz neexistuje. Předpokládám, že by to měla být obdoba
ffmpeg -ss 10 -i video.mkv video2.mkvTo funguje, bohužel to podstatně sníží kvalitu (mozaika). Jestli má avconv lepší výsledek, jakým balíkem ho nainstaluju? Pochopil jsem, že je to součást libav. Ten bych ale měl mít předinstalovaný v distribuci - ovšem avconv mi nefunguje/neexistuje.
Existuje možnost nějakým způsobem zlepšit výsledek ffmpeg? Pro info výpis:
$ ffmpeg -ss 11 -i video.mkv video2.mkv
ffmpeg version 0.7.12, Copyright (c) 2000-2011 the FFmpeg developers
built on Apr 11 2012 07:30:33 with gcc 4.4.5
configuration: --enable-libdc1394 --prefix=/usr --extra-cflags='-Wall -g ' --cc='ccache cc' --enable-shared --enable-libmp3lame --enable-gpl --enable-libvorbis --enable-pthreads --enable-libfaac --enable-libxvid --enable-postproc --enable-x11grab --enable-libgsm --enable-libtheora --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libx264 --enable-libspeex --enable-nonfree --disable-stripping --enable-avfilter --enable-libdirac --disable-decoder=libdirac --enable-libfreetype --enable-libschroedinger --disable-encoder=libschroedinger --enable-version3 --enable-libopenjpeg --enable-libvpx --enable-librtmp --extra-libs=-lgcrypt --disable-altivec --disable-armv5te --disable-armv6 --disable-vis
libavutil 50. 43. 0 / 50. 43. 0
libavcodec 52.123. 0 / 52.123. 0
libavformat 52.111. 0 / 52.111. 0
libavdevice 52. 5. 0 / 52. 5. 0
libavfilter 1. 80. 0 / 1. 80. 0
libswscale 0. 14. 1 / 0. 14. 1
libpostproc 51. 2. 0 / 51. 2. 0
[matroska,webm @ 0x9c3f5e0] Read error at pos. 43351 (0xa957)
[matroska,webm @ 0x9c3f5e0] Estimating duration from bitrate, this may be inaccurate
Input #0, matroska,webm, from 'video.mkv':
Duration: 00:25:02.25, start: 0.000000, bitrate: N/A
Stream #0.0(jpn): Audio: aac, 48000 Hz, stereo, s16 (default)
Stream #0.1: Video: mpeg4, yuv420p, 1280x720 [PAR 1:1 DAR 16:9], 29.97 fps, 29.97 tbr, 1k tbn, 29.97 tbc (default)
File 'video2.mkv' already exists. Overwrite ? [y/N] y
[buffer @ 0x9c61180] w:1280 h:720 pixfmt:yuv420p tb:1/1000000 sar:1/1 sws_param:
Output #0, matroska, to 'video2.mkv':
Metadata:
encoder : Lavf52.111.0
Stream #0.0: Video: mpeg4, yuv420p, 1280x720 [PAR 1:1 DAR 16:9], q=2-31, 200 kb/s, 1k tbn, 29.97 tbc (default)
Stream #0.1(jpn): Audio: mp2, 48000 Hz, stereo, s16, 64 kb/s (default)
Stream mapping:
Stream #0.1 -> #0.0
Stream #0.0 -> #0.1
Press [q] to stop, [?] for help
frame= 30 fps= 0 q=31.0 size= 336kB time=00:00:01.03 bitrate=2659.2kbits/
frame= 62 fps= 61 q=31.0 size= 481kB time=00:00:02.10 bitrate=1873.3kbits/
frame= 90 fps= 59 q=31.0 size= 638kB time=00:00:03.03 bitrate=1721.1kbits/
frame= 122 fps= 60 q=31.0 size= 793kB time=00:00:04.10 bitrate=1582.4kbits/
frame= 145 fps= 59 q=24.8 Lsize= 956kB time=00:00:04.90 bitrate=1595.9kbits
...
B/
Co mě zaujalo je
mplayer -ss 10 video.mkv -dumpstream -dumpfile video2.mkvTo ale bohužel ignoruje -ss , takže nevím, jestli by se to dalo nějak použít, nebo je to slepá ulička.
C/
Zkouším ještě jedno:
mplayer -ss 11 -vo yuv4mpeg video.mkv
cat stream.yuv | yuv2lav -o video.aviale ten dočasný soubor je nechutně velký, pár sekund zabere stovky MB, a místo na hodinu videa nevidím reálně. Tak nevím...
-
ad A/
Tohle jednoduše vyřešil parametr -sameq
ffmpeg -ss 11 -sameq -i video.mkv video2.mkvSice se mi o 30% zvýší velikost souboru, ale kvalita k nerozeznání.
Takže víceméně problém vyřešen. :)
-
Možná by ti více pomohlo
Splitting without re-encoding:
ffmpeg -ss [start-time] -t [length-time] -i [in-file-path] \
-vcodec copy -acodec copy [out-file-path]
Example:
ffmpeg -ss 00:00:00.00 -t 00:10:00.00 -i "/some/path/to/file.mp4" \
-vcodec copy -acodec copy "/some/path/to/new file.mp4"
Zkopíroval jsem to z http://unix.stackexchange.com, sám jsem to nezkoušel.
-
A vítězem se stává... jadd. To je přesně ono - řešení tak jednoduchý, že ani hledat ho v manuálu člověka nenapadne - copy ;D Díky.
-
Já taky, je dobré, když to za mě někdo otestuje.
-
ffmpeg není podporované, bylo nahrazeno právě avconv, určitě jsem ho instaloval kdysi přes synaptic. V ffmpegu byla právě hláška, aby se nepoužíval a používal se již avconv. apt-get install avconv avconv nenainstaluje? Jinak použítí avconv a ffmpeg je zdá se prakticky totožné. Používal jsem ho na konverzi amr souborů (http://forum.ubuntu.cz/index.php?topic=64112.0).
-
ffmpeg není podporované, bylo nahrazeno právě avconv, určitě jsem ho instaloval kdysi přes synaptic. V ffmpegu byla právě hláška, aby se nepoužíval a používal se již avconv. apt-get install avconv avconv nenainstaluje? Jinak použítí avconv a ffmpeg je zdá se prakticky totožné. Používal jsem ho na konverzi amr souborů (http://forum.ubuntu.cz/index.php?topic=64112.0).
Jasně, jasně. Už jsem doma, uniklo mi, že mám zakomentovaný příslušný backport repozitář ::) nemám Ubuntu, ale stabilní Debian, moje chyba. Každopádně - avconv a další nástroje jsou v libav-tools. Poznatek: je třeba odinstalovat ffmpeg (což s sebou vezme i nějaké programy, které lze ale následně zase doinstalovat) - tak snad to pošlape jak má.