LINUX.ORG.RU

mkextract плохо достает трек


0

0

Есть mkv видео, воспроизводится нормально, но содержит «неинтересные» дорожки, хочу их убрать
Для начала вытаскиваю видео с помощью mkvextract и получаю файл, который не воспроизводится:

MPlayer dev-SVN-r30099-4.5-openSUSE Linux 11.3 (x86_64)-Packman (C) 2000-2009 MPlayer TeamCan't open joystick device /dev/input/js0: No such file or directory
Can't init input joystick
mplayer: could not connect to socket
mplayer: No such file or directory
Failed to open LIRC support. You will not be able to use your remote control.

Playing movie.mkv.
Cache fill: 0.00% (0 bytes)
libavformat file format detected.
[h264 @ 0x1530c50]max_analyze_duration reached
[h264 @ 0x1530c50]Estimating duration from bitrate, this may be inaccurate
[lavf] Video stream found, -vid 0
VIDEO: [H264] 1920x800 0bpp 23.976 fps 0.0 kbps ( 0.0 kbyte/s)
==========================================================================
Forced video codec: ffh264vdpau
Opening video decoder: [ffmpeg] FFmpeg's libavcodec codec family
Unsupported PixelFormat -1
Selected video codec: [ffh264vdpau] vfm: ffmpeg (FFmpeg H.264 (VDPAU))
==========================================================================
Audio: no sound
Starting playback...
[VD_FFMPEG] Trying pixfmt=0.
Unsupported PixelFormat -1
Movie-Aspect is 2.40:1 - prescaling to correct movie aspect.
VO: [vdpau] 1920x800 => 1920x800 H.264 VDPAU acceleration
[VD_FFMPEG] XVMC-accelerated MPEG-2.
No pts value from demuxer to use for frame!
pts after filters MISSING
No pts value from demuxer to use for frame!,?% 0 0 79%
...
[далее последние 2 строки повторяются]

что сделал не так?

vlc также не желает воспроизводить
(number of reference frames exceeds max (probably corrupt input), discarding one)

★★★★★

No pts value from demuxer to use for frame!

pts after filters MISSING

mkvextract достает elemetary stream, а он, по крайней мере для h.264, не имеет pts (presentation time stamp), так что эти сообщения абсолютно нормальны. Возможно стоит попробовать без VDPAU, у меня mplayer нормально играет raw h.264 через ffh264, но, стоит заметить, плееры редко нормально поддерживают и воспроизводят потоки без контейнера.

содержит «неинтересные» дорожки, хочу их убрать

Для этой задачи не нужно извлекать потоки из контейнера, достаточно просто сделать remux через mkvmerge. Делается это примерно так:

$ mkvmerge --identify-verbose '[Coalgirls]_Strike_Witches_07_(1280x720_Blu-Ray_FLAC)_[1FAF1298].mkv'
File '[Coalgirls]_Strike_Witches_07_(1280x720_Blu-Ray_FLAC)_[1FAF1298].mkv': container: Matroska [duration:1452055000000]
Track ID 1: video (V_MPEG4/ISO/AVC) [language:jpn track_name:07\s-\sNice\s'n\sBreezy display_dimensions:1280x720 default_track:0 forced_track:0 packetizer:mpeg4_p10_video]
Track ID 2: audio (A_FLAC) [language:jpn track_name:Japanese\s2.0 default_track:1 forced_track:0]
Track ID 3: audio (A_FLAC) [language:eng track_name:English\s5.1 default_track:0 forced_track:0]
Track ID 4: subtitles (S_TEXT/ASS) [language:eng default_track:1 forced_track:0]
Attachment ID 1: type 'application/x-truetype-font', size 30416 bytes, file name 'HoboStd.otf'
Attachment ID 2: type 'application/x-truetype-font', size 3645360 bytes, file name 'KozGoPro-Heavy.otf'

$ mkvmerge -o 'Strike_Witches_07_(audio_jpn;subtitles_none).mkv' -a 2 -S -M '[Coalgirls]_Strike_Witches_07_(1280x720_Blu-Ray_FLAC)_[1FAF1298].mkv'
mkvmerge v4.2.0 ('No Talking') built on Aug  1 2010 06:35:04
'[Coalgirls]_Strike_Witches_07_(1280x720_Blu-Ray_FLAC)_[1FAF1298].mkv': Using the Matroska demultiplexer.
'[Coalgirls]_Strike_Witches_07_(1280x720_Blu-Ray_FLAC)_[1FAF1298].mkv' track 1: Using the MPEG-4 part 10 (AVC) video output module.
'[Coalgirls]_Strike_Witches_07_(1280x720_Blu-Ray_FLAC)_[1FAF1298].mkv' track 2: Using the FLAC output module.
The file 'Strike_Witches_07_(audio_jpn;subtitles_none).mkv' has been opened for writing.
Progress: 100%
The cue entries (the index) are being written...
Muxing took 37 seconds.

$ mkvmerge --identify-verbose 'Strike_Witches_07_(audio_jpn;subtitles_none).mkv'
File 'Strike_Witches_07_(audio_jpn;subtitles_none).mkv': container: Matroska [duration:1452055000000]
Track ID 1: video (V_MPEG4/ISO/AVC) [language:jpn track_name:07\s-\sNice\s'n\sBreezy display_dimensions:1280x720 default_track:0 forced_track:0 packetizer:mpeg4_p10_video]
Track ID 2: audio (A_FLAC) [language:jpn track_name:Japanese\s2.0 default_track:1 forced_track:0]

За подробностями man mkvmerge.

Sion ()
Ответ на: комментарий от Sion

не выходит :

$ mkvmerge --identify-verbose ./Oceani.2009.BDRip.1080p.mkv 
File './Oceani.2009.BDRip.1080p.mkv': container: Matroska [duration:6231184000000]
Track ID 1: video (V_MPEG4/ISO/AVC) [language:eng display_dimensions:1920x800 default_track:0 forced_track:0 packetizer:mpeg4_p10_video]
Track ID 2: audio (A_TRUEHD) [language:eng track_name:TrueHD default_track:1 forced_track:0]
Track ID 3: audio (A_AC3) [language:eng track_name:AC3 default_track:0 forced_track:0]
Chapters: 24 entries

$ mkvmerge -o ./Oceani.2009.BDRip.1080p_2.mkv -a 3 -S -M ./Oceani.2009.BDRip.1080p.mkv 
mkvmerge v4.2.0 ('No Talking')
'./Oceani.2009.BDRip.1080p.mkv': Using the Matroska demultiplexer.
'./Oceani.2009.BDRip.1080p.mkv' track 1: Using the MPEG-4 part 10 (AVC) video output module.
'./Oceani.2009.BDRip.1080p.mkv' track 3: Using the AC3 output module.
The file './Oceani.2009.BDRip.1080p_2.mkv' has been opened for writing.
Progress: 100%
The cue entries (the index) are being written...
Muxing took 220 seconds.

$ mkvmerge --identify-verbose ./Oceani.2009.BDRip.1080p_2.mkv 
File './Oceani.2009.BDRip.1080p_2.mkv': container: Matroska [duration:6231168000000]
Track ID 1: video (V_MPEG4/ISO/AVC) [language:eng display_dimensions:1920x800 default_track:0 forced_track:0 packetizer:mpeg4_p10_video]
Track ID 2: audio (A_AC3) [language:eng track_name:AC3 default_track:0 forced_track:0]
Chapters: 24 entries


при воспроизведении через mplayer:
...
[mkv] Track 1 has been compressed with an unknown/unsupported compression
[mkv] algorithm (3). Skipping track.
[mkv] Track 2 has been compressed with an unknown/unsupported compression
[mkv] algorithm (3). Skipping track.
Unsupported PixelFormat -1
Using SSE optimized IMDCT transform
Using MMX optimized resampler
a52: error at resampling
[h264_vdpau @ 0xbef4e0]AVC: nal size 187654
[h264_vdpau @ 0xbef4e0]no frame!
Error while decoding frame!
...

через vlc играет, рывками

x905 ★★★★★ ()
Ответ на: комментарий от x905

>[mkv] Track 1 has been compressed with an unknown/unsupported compression

[mkv] algorithm (3). Skipping track.

[mkv] Track 2 has been compressed with an unknown/unsupported compression

[mkv] algorithm (3). Skipping track.

Ах да, совсем забыл про это, my bad. Это баго-фича в новых версиях mkvtoolnix: http://www.bunkus.org/videotools/mkvtoolnix/faq.html#header_removal_compression

Следует либо использовать '--compression -1:none' перед '-o ./Oceani.2009.BDRip.1080p_2.mkv', что означает не использовать компрессию для всех треков, либо использовать утилиту mkWDclean: http://www.matroska.org/downloads/mkclean.html, либо обновить/пропатчить плееры.

через vlc играет

VLC 1.1.2 и новее должно работать нормально.

Sion ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.