slc 发表于 2019-12-23 09:57:16

ffmpeg怎样象mkvextract那样提取IDX+SUB?

有一个MKV内有dvd字幕文件, 怎样用FFMPEG提取出来?

因为我不想用mkvextract GUI。

孙悟空 发表于 2019-12-23 11:18:46

是否方便ffmpeg -i input.mkv 把输出的全部内容贴出来看一下?

slc 发表于 2019-12-23 12:18:18

Input #0, matroska,webm, from '05ss.mkv':
Metadata:
    ENCODER         : Lavf58.25.100
Duration: 00:03:20.16, start: 0.000000, bitrate: 1023 kb/s
    Stream #0:0: Video: hevc (Main), yuv420p(tv), 1280x720, SAR 1:1 DAR 16:9, 25 fps, 25 tbr, 1k tbn, 25 tbc (default)
    Metadata:
      BPS             : 1117624
      BPS-eng         : 1117624
      DURATION-eng    : 00:20:51.560000000
      NUMBER_OF_FRAMES: 31289
      NUMBER_OF_FRAMES-eng: 31289
      NUMBER_OF_BYTES : 174846720
      NUMBER_OF_BYTES-eng: 174846720
      _STATISTICS_WRITING_APP: mkvmerge v10.0.0 ('To Drown In You') 64bit
      _STATISTICS_WRITING_APP-eng: mkvmerge v10.0.0 ('To Drown In You') 64bit
      _STATISTICS_WRITING_DATE_UTC: 2017-04-23 13:40:44
      _STATISTICS_WRITING_DATE_UTC-eng: 2017-04-23 13:40:44
      _STATISTICS_TAGS: BPS DURATION NUMBER_OF_FRAMES NUMBER_OF_BYTES
      _STATISTICS_TAGS-eng: BPS DURATION NUMBER_OF_FRAMES NUMBER_OF_BYTES
      DURATION      : 00:03:20.160000000
    Stream #0:1(chi): Audio: ac3, 48000 Hz, stereo, fltp, 192 kb/s (default)
    Metadata:
      BPS             : 192000
      BPS-eng         : 192000
      DURATION-eng    : 00:20:51.520000000
      NUMBER_OF_FRAMES: 39110
      NUMBER_OF_FRAMES-eng: 39110
      NUMBER_OF_BYTES : 30036480
      NUMBER_OF_BYTES-eng: 30036480
      _STATISTICS_WRITING_APP: mkvmerge v10.0.0 ('To Drown In You') 64bit
      _STATISTICS_WRITING_APP-eng: mkvmerge v10.0.0 ('To Drown In You') 64bit
      _STATISTICS_WRITING_DATE_UTC: 2017-04-23 13:40:44
      _STATISTICS_WRITING_DATE_UTC-eng: 2017-04-23 13:40:44
      _STATISTICS_TAGS: BPS DURATION NUMBER_OF_FRAMES NUMBER_OF_BYTES
      _STATISTICS_TAGS-eng: BPS DURATION NUMBER_OF_FRAMES NUMBER_OF_BYTES
      DURATION      : 00:03:20.000000000
    Stream #0:2(chi): Subtitle: dvd_subtitle (default)
    Metadata:
      BPS             : 6004
      BPS-eng         : 6004
      DURATION-eng    : 00:20:43.506000000
      NUMBER_OF_FRAMES: 825
      NUMBER_OF_FRAMES-eng: 825
      NUMBER_OF_BYTES : 933285
      NUMBER_OF_BYTES-eng: 933285
      _STATISTICS_WRITING_APP: mkvmerge v10.0.0 ('To Drown In You') 64bit
      _STATISTICS_WRITING_APP-eng: mkvmerge v10.0.0 ('To Drown In You') 64bit
      _STATISTICS_WRITING_DATE_UTC: 2017-04-23 13:40:44
      _STATISTICS_WRITING_DATE_UTC-eng: 2017-04-23 13:40:44
      _STATISTICS_TAGS: BPS DURATION NUMBER_OF_FRAMES NUMBER_OF_BYTES
      _STATISTICS_TAGS-eng: BPS DURATION NUMBER_OF_FRAMES NUMBER_OF_BYTES
      ENCODER         : Lavc58.42.104 dvdsub
      DURATION      : 00:03:19.821000000
At least one output file must be specified

slc 发表于 2019-12-23 12:35:07

   Stream #0:3(chi): Subtitle: dvb_subtitle (default)
   Metadata:
   BPS             : 6004
   BPS-eng         : 6004
   DURATION-eng    : 00:20:43.506000000
   NUMBER_OF_FRAMES: 825
   NUMBER_OF_FRAMES-eng: 825
   NUMBER_OF_BYTES : 933285
   NUMBER_OF_BYTES-eng: 933285
   _STATISTICS_WRITING_APP: mkvmerge v10.0.0 ('To Drown In You') 64bit
   _STATISTICS_WRITING_APP-eng: mkvmerge v10.0.0 ('To Drown In You') 64
   _STATISTICS_WRITING_DATE_UTC: 2017-04-23 13:40:44
   _STATISTICS_WRITING_DATE_UTC-eng: 2017-04-23 13:40:44
   _STATISTICS_TAGS: BPS DURATION NUMBER_OF_FRAMES NUMBER_OF_BYTES
   _STATISTICS_TAGS-eng: BPS DURATION NUMBER_OF_FRAMES NUMBER_OF_BYTES
   DURATION      : 00:03:20.386000000
t least one output file must be specified

这是最原始的文件,我把DVB转为dvd字幕. 才能用IDXOCR。

不好意思,这帖子无意发错区,应该在命令使用区.

孙悟空 发表于 2019-12-23 23:26:32

ffmpeg -i input.mkv -vn -an -scodec copy -map 0:2 -f microdvd out.sub

slc 发表于 2019-12-24 11:01:45

孙悟空 发表于 2019-12-23 23:26
ffmpeg -i input.mkv -vn -an -scodec copy -map 0:2 -f microdvd out.sub



      ENCODER         : Lavc58.42.104 dvdsub
      DURATION      : 00:03:19.821000000
Exactly one MicroDVD stream is needed.
Could not write header for output file #0 (incorrect codec parameters ?): Operation not permitted
Stream mapping:
Stream #0:2 -> #0:0 (copy)
    Last message repeated 1 times

C:\Users\Administrator\Downloads>






我把字幕也放在附件上,请试.



孙悟空 发表于 2019-12-24 15:06:36

./ffmpeg -i ~/Downloads/05onlysub.mkv -c copy -map 0:0 -f data outpu.dvdsub

slc 发表于 2019-12-25 08:46:28

孙悟空 发表于 2019-12-24 15:06
./ffmpeg -i ~/Downloads/05onlysub.mkv -c copy -map 0:0 -f data outpu.dvdsub

谢谢了,不过真心不行。 提取IDX+VOB目前唯一是MKVEXTRACT。

如果仍坚持FFMPEG

此贴可结.

孙悟空 发表于 2019-12-25 11:51:43

slc 发表于 2019-12-25 08:46
谢谢了,不过真心不行。 提取IDX+VOB目前唯一是MKVEXTRACT。

如果仍坚持FFMPEG


那就应该是不支持了,用mkvextract吧,我没这种应用场景,其他人有的话可以用这个

孙悟空 发表于 2019-12-25 13:27:03

liuqideMacBook-Pro:dash liuqi$ ./ffmpeg -scodec dvdsub -f dsub -i outpu.dvdsub
ffmpeg version N-96016-gbc35cef78d Copyright (c) 2000-2019 the FFmpeg developers
built with Apple LLVM version 10.0.0 (clang-1000.11.45.5)
configuration: --enable-fontconfig --enable-gpl --enable-libass --enable-libbluray --enable-libfreetype --enable-libmp3lame --enable-libspeex --enable-libx264 --enable-libx265 --enable-libfdk-aac --enable-version3 --enable-nonfree --enable-videotoolbox --enable-libxml2 --samples=fate-suite/ --enable-libopencv --enable-libopus
libavutil      56. 36.101 / 56. 36.101
libavcodec   58. 64.101 / 58. 64.101
libavformat    58. 35.101 / 58. 35.101
libavdevice    58.9.101 / 58.9.101
libavfilter   7. 68.100 /7. 68.100
libswscale      5.6.100 /5.6.100
libswresample   3.6.100 /3.6.100
libpostproc    55.6.100 / 55.6.100
Input #0, dsub, from 'outpu.dvdsub':
Duration: N/A, start: 0.000000, bitrate: N/A
    Stream #0:0: Subtitle: dvd_subtitle
At least one output file must be specified
liuqideMacBook-Pro:dash liuqi$
liuqideMacBook-Pro:dash liuqi$ vim ./libavformat/rawdec.c
liuqideMacBook-Pro:dash liuqi$ ./ffmpeg -i ~/Downloads/05
0525胶片更新.key05onlysub.mkv
liuqideMacBook-Pro:dash liuqi$ ./ffmpeg -i ~/Downloads/05onlysub.mkv
ffmpeg version N-96016-gbc35cef78d Copyright (c) 2000-2019 the FFmpeg developers
built with Apple LLVM version 10.0.0 (clang-1000.11.45.5)
configuration: --enable-fontconfig --enable-gpl --enable-libass --enable-libbluray --enable-libfreetype --enable-libmp3lame --enable-libspeex --enable-libx264 --enable-libx265 --enable-libfdk-aac --enable-version3 --enable-nonfree --enable-videotoolbox --enable-libxml2 --samples=fate-suite/ --enable-libopencv --enable-libopus
libavutil      56. 36.101 / 56. 36.101
libavcodec   58. 64.101 / 58. 64.101
libavformat    58. 35.101 / 58. 35.101
libavdevice    58.9.101 / 58.9.101
libavfilter   7. 68.100 /7. 68.100
libswscale      5.6.100 /5.6.100
libswresample   3.6.100 /3.6.100
libpostproc    55.6.100 / 55.6.100
Input #0, matroska,webm, from '/Users/liuqi/Downloads/05onlysub.mkv':
Metadata:
    ENCODER         : Lavf58.25.100
Duration: 00:03:19.82, bitrate: 5 kb/s
    Stream #0:0(chi): Subtitle: dvd_subtitle (default)
    Metadata:
      BPS             : 6004
      BPS-eng         : 6004
      DURATION-eng    : 00:20:43.506000000
      NUMBER_OF_FRAMES: 825
      NUMBER_OF_FRAMES-eng: 825
      NUMBER_OF_BYTES : 933285
      NUMBER_OF_BYTES-eng: 933285
      _STATISTICS_WRITING_APP: mkvmerge v10.0.0 ('To Drown In You') 64bit
      _STATISTICS_WRITING_APP-eng: mkvmerge v10.0.0 ('To Drown In You') 64bit
      _STATISTICS_WRITING_DATE_UTC: 2017-04-23 13:40:44
      _STATISTICS_WRITING_DATE_UTC-eng: 2017-04-23 13:40:44
      _STATISTICS_TAGS: BPS DURATION NUMBER_OF_FRAMES NUMBER_OF_BYTES
      _STATISTICS_TAGS-eng: BPS DURATION NUMBER_OF_FRAMES NUMBER_OF_BYTES
      ENCODER         : Lavc58.42.104 dvdsub
      DURATION      : 00:03:19.821000000
At least one output file must be specified
liuqideMacBook-Pro:dash liuqi$

要支持dvdsub的话,得稍微改改代码才可以。
页: [1] 2
查看完整版本: ffmpeg怎样象mkvextract那样提取IDX+SUB?