Hi,

Now that my multiple audio tracks issue is fixed, I face another one : I have one the one hand a video in a mp4 file, and on the other hand subtitles in a .srt file, and I want to mux them into a single file (either .mp4 or .mkv)

The MPEG-4 standard says that the subtitle format retained for .mp4 files is the "mpeg-4 timed text" : it looks very similar to the SRT format, but is it really the same ?
http://en.wikipedia.org/wiki/MPEG-4_Part_17

Here is what happens if I try to mux into a mp4 file, simply copying the subtitles (seems that it can not interpret the .srt file ?)

===================================================================
*****$ ffmpeg -i Good_Bye_Lenin.DVDRIP.HQ.deFR.mp4 -i Good_Bye_Lenin.de.srt -vcodec copy -acodec copy -scodec copy -map 0.0 -map 0.1 -map 1.0 -y toto.mp4
ffmpeg version 0.7.11, Copyright (c) 2000-2011 the FFmpeg developers
built on Mar 17 2012 12:11:52 with gcc 4.2.1 (Apple Inc. build 5666) (dot 3) configuration: --prefix=/opt/local --enable-gpl --enable-postproc --enable-swscale --enable-avfilter --enable-libmp3lame --enable-libvorbis --enable-libtheora --enable-libdirac --enable-libschroedinger --enable-libopenjpeg --enable-libxvid --enable-libx264 --enable-libvpx --enable-libspeex --mandir=/opt/local/share/man --enable-shared --enable-pthreads --cc=/usr/bin/gcc-4.2 --arch=x86_64 --enable-yasm
  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
[mov,mp4,m4a,3gp,3g2,mj2 @ 0x102052000] max_analyze_duration 5000000 reached at 5013333

Seems stream 0 codec frame rate differs from container frame rate: 180000.00 (180000/1) -> 25.00 (25/1)
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'Good_Bye_Lenin.DVDRIP.HQ.deFR.mp4':
  Metadata:
    major_brand     : mp42
    minor_version   : 0
    compatible_brands: mp42isomavc1
    creation_time   : 2012-04-07 09:59:01
    encoder         : HandBrake 0.9.6 2012022800
  Duration: 01:52:41.32, start: 0.000000, bitrate: 1274 kb/s
...
Stream #0.0(und): Video: h264 (High), yuv420p, 704x384, 999 kb/s, 25 fps, 25 tbr, 90k tbn, 180k tbc
    Metadata:
      creation_time   : 2012-04-07 09:59:01
    Stream #0.1(fra): Audio: aac, 48000 Hz, stereo, s16, 131 kb/s
    Metadata:
      creation_time   : 2012-04-07 09:59:01
    Stream #0.2(deu): Audio: aac, 48000 Hz, stereo, s16, 131 kb/s
    Metadata:
      creation_time   : 2012-04-07 09:59:01
    Stream #0.3(fra): Subtitle: dvdsub, 4 kb/s
    Metadata:
      creation_time   : 2012-04-07 09:59:01
    Stream #0.4(und): Subtitle: text / 0x74786574
    Metadata:
      creation_time   : 2012-04-07 09:59:01
[srt @ 0x102053200] Estimating duration from bitrate, this may be inaccurate
Input #1, srt, from 'Good_Bye_Lenin.de.srt':
  Duration: N/A, start: 39.783000, bitrate: N/A
    Stream #1.0: Subtitle: srt
[mp4 @ 0x102056e00] track 2: could not find tag, codec not currently supported in container
Output #0, mp4, to 'toto.mp4':
  Metadata:
    major_brand     : mp42
    minor_version   : 0
    compatible_brands: mp42isomavc1
    creation_time   : 2012-04-07 09:59:01
    encoder         : Lavf52.111.0
...
Stream #0.0(und): Video: libx264, yuv420p, 704x384, q=2-31, 999 kb/s, 90k tbn, 90k tbc
    Metadata:
      creation_time   : 2012-04-07 09:59:01
    Stream #0.1(fra): Audio: aac, 48000 Hz, stereo, 131 kb/s
    Metadata:
      creation_time   : 2012-04-07 09:59:01
    Stream #0.2: Subtitle: srt
Stream mapping:
  Stream #0.0 -> #0.0
  Stream #0.1 -> #0.1
  Stream #1.0 -> #0.2
Could not write header for output file #0 (incorrect codec parameters ?)
===================================================================


Now without telling anything about the subtitle codec (don't understand the error):

===================================================================
*****$ ffmpeg -i Good_Bye_Lenin.DVDRIP.HQ.deFR.mp4 -i Good_Bye_Lenin.de.srt -vcodec copy -acodec copy -map 0.0 -map 0.1 -map 1.0 -y toto.mp4

[SNIP]

[srt @ 0x102053200] Estimating duration from bitrate, this may be inaccurate
Input #1, srt, from 'Good_Bye_Lenin.de.srt':
  Duration: N/A, start: 39.783000, bitrate: N/A
    Stream #1.0: Subtitle: srt
Number of stream maps must match number of output streams
===================================================================


Note that with a .mkv output file, this latter command fails as well with a different error message :

===================================================================
*****$ ffmpeg -i Good_Bye_Lenin.DVDRIP.HQ.deFR.mp4 -i Good_Bye_Lenin.de.srt -vcodec copy -acodec copy -map 0.0 -map 0.1 -map 1.0 -y toto.mkv

[SNIP]

Output #0, matroska, to 'toto.mkv':
Stream #0.0(und): Video: libx264, yuv420p, 704x384, q=2-31, 999 kb/s, 90k tbn, 90k tbc
    Metadata:
      creation_time   : 2012-04-07 09:59:01
    Stream #0.1(fra): Audio: aac, 48000 Hz, stereo, 131 kb/s
    Metadata:
      creation_time   : 2012-04-07 09:59:01
    Stream #0.2: Subtitle: [0][0][0][0] / 0x0000, 64 kb/s
Stream mapping:
  Stream #0.0 -> #0.0
  Stream #0.1 -> #0.1
  Stream #1.0 -> #0.2
Encoder (codec id 94210) not found for output stream #0.2
===================================================================


And finally, the only command which succeeds is with the output .mkv file, and specifying -scodec copy:

===================================================================
*****$ ffmpeg -i Good_Bye_Lenin.DVDRIP.HQ.deFR.mp4 -i Good_Bye_Lenin.de.srt -vcodec copy -acodec copy -map 0.0 -map 0.1 -map 1.0 -y toto.mkv
===================================================================



So.... is there a way to include SRT subtitles into MP4 files ? Or is the MKV format the only way to go ?

Thanks,


_______________________________________________
Libav-user mailing list
[email protected]
http://ffmpeg.org/mailman/listinfo/libav-user

Reply via email to