Vista-User
25-08-2020, 04:08
Оказывается, у VideoLAN есть MPEG2 кодировщик с детектором сцен
https://www.videolan.org/developers/x262.html
Очень забавно выполнен, в виде x264 кодера, который может сохранять и MPEG2, если задать специальный ключ. В MediaInfo это отображается так:
Writing library : x264 - core 142 r2633 bb887aa - H.264/MPEG-4 AVC codec - Copyleft 2003-2014 - videolan.org/x264.html - options: cabac=0 ref=1 mpeg2=1 deblock=0:0:0 analyse=0:0 me=hex subme=7 psy=1 psy_rd=1.00:0.00 mixed_ref=0 me_range=16 chroma_me=1 trellis=0 8x8dct=0 cqm=0 deadzone=21,11 fast_pskip=1 chroma_qp_offset=-2 threads=3 lookahead_threads=1 sliced_threads=0 nr=0 decimate=0 interlaced=0 bluray_compat=0 constrained_intra=0 bframes=0 weightp=0 keyint=12 keyint_min=1 scenecut=40 intra_refresh=0 rc_lookahead=12 rc=crf mbtree=1 crf=1.0 qcomp=0.60 qpmin=1 qpmax=31 qpstep=4 vbv_maxrate=9500 vbv_bufsize=1835 crf_max=0.0 nal_hrd=none filler=0 ip_ratio=1.40 aq=1:1.00
Установка:
sudo apt install build-essential git yasm
git clone http://git.videolan.org/git/x262.git
cd x262
./configure --help
./configure --enable-static --disable-opencl --bit-depth=8 --chroma-format=all --enable-strip
make
sudo make install
cd /usr/local/bin
sudo mv x264 x262
Использование:
x262 --fullhelp
x262 --crf 1.0 --vbv-maxrate 9500 --vbv-bufsize 1835 --keyint 12 --sar 16:9 --fps 25 --bframes 0 --dc 10 --mpeg2 -o out.m2v in.y4m
По моему, все MPEG2 кодеры добавляют шум.
Update:
Импорт из ffmpeg:
ffmpeg -i input.mkv -f yuv4mpegpipe - | x262 --demuxer y4m --crf 2.0 --vbv-maxrate 9500 --vbv-bufsize 1835 --keyint 12 --sar 16:9 --bframes 0 --dc 10 --threads 3 --no-progress --mpeg2 -o output.mkv -
Выходной формат определяется по расширению, хотя, можно и указать --muxer mkv. Для mkv используется Haali Matroska Muxer (как и в x264). Независимо от указания m2v или mpg всегда выводится в Elementary stream (но MediaInfo знает продолжительность). --sar указывать нужно, несмотря на то, что формат yuv4mpegpipe содержит эту информацию. Вообще, я так понял, что там накосячено. --dar значения (привычные человеку) понимаются под --sar. Если не указать --sar и в y4m подать 720x576 4:3, то в выходном файле будет
aspect ratio 1:1
original aspect ratio 5:4
То есть, Haali муксер еще и путает квадратные пиксели (1:1) с квадратным соотношением сторон.
Если x262 собран с поддержкой ffms, lavf или lsmash, то он сам может декодировать многие форматы, но соответственно, возможность обработки ограничена.
Для это перед сборкой нужно установить:
sudo apt install libavcodec-dev libavformat-dev libavdevice-dev libavfilter-dev libffms2-dev
https://www.videolan.org/developers/x262.html
Очень забавно выполнен, в виде x264 кодера, который может сохранять и MPEG2, если задать специальный ключ. В MediaInfo это отображается так:
Writing library : x264 - core 142 r2633 bb887aa - H.264/MPEG-4 AVC codec - Copyleft 2003-2014 - videolan.org/x264.html - options: cabac=0 ref=1 mpeg2=1 deblock=0:0:0 analyse=0:0 me=hex subme=7 psy=1 psy_rd=1.00:0.00 mixed_ref=0 me_range=16 chroma_me=1 trellis=0 8x8dct=0 cqm=0 deadzone=21,11 fast_pskip=1 chroma_qp_offset=-2 threads=3 lookahead_threads=1 sliced_threads=0 nr=0 decimate=0 interlaced=0 bluray_compat=0 constrained_intra=0 bframes=0 weightp=0 keyint=12 keyint_min=1 scenecut=40 intra_refresh=0 rc_lookahead=12 rc=crf mbtree=1 crf=1.0 qcomp=0.60 qpmin=1 qpmax=31 qpstep=4 vbv_maxrate=9500 vbv_bufsize=1835 crf_max=0.0 nal_hrd=none filler=0 ip_ratio=1.40 aq=1:1.00
Установка:
sudo apt install build-essential git yasm
git clone http://git.videolan.org/git/x262.git
cd x262
./configure --help
./configure --enable-static --disable-opencl --bit-depth=8 --chroma-format=all --enable-strip
make
sudo make install
cd /usr/local/bin
sudo mv x264 x262
Использование:
x262 --fullhelp
x262 --crf 1.0 --vbv-maxrate 9500 --vbv-bufsize 1835 --keyint 12 --sar 16:9 --fps 25 --bframes 0 --dc 10 --mpeg2 -o out.m2v in.y4m
По моему, все MPEG2 кодеры добавляют шум.
Update:
Импорт из ffmpeg:
ffmpeg -i input.mkv -f yuv4mpegpipe - | x262 --demuxer y4m --crf 2.0 --vbv-maxrate 9500 --vbv-bufsize 1835 --keyint 12 --sar 16:9 --bframes 0 --dc 10 --threads 3 --no-progress --mpeg2 -o output.mkv -
Выходной формат определяется по расширению, хотя, можно и указать --muxer mkv. Для mkv используется Haali Matroska Muxer (как и в x264). Независимо от указания m2v или mpg всегда выводится в Elementary stream (но MediaInfo знает продолжительность). --sar указывать нужно, несмотря на то, что формат yuv4mpegpipe содержит эту информацию. Вообще, я так понял, что там накосячено. --dar значения (привычные человеку) понимаются под --sar. Если не указать --sar и в y4m подать 720x576 4:3, то в выходном файле будет
aspect ratio 1:1
original aspect ratio 5:4
То есть, Haali муксер еще и путает квадратные пиксели (1:1) с квадратным соотношением сторон.
Если x262 собран с поддержкой ffms, lavf или lsmash, то он сам может декодировать многие форматы, но соответственно, возможность обработки ограничена.
Для это перед сборкой нужно установить:
sudo apt install libavcodec-dev libavformat-dev libavdevice-dev libavfilter-dev libffms2-dev