『漫游』酷论坛>『影音数码技术学习交流』>【已解决】[求助]roozho ..
【已解决】[求助]roozhou请进,用ffmpeg将mkv转封为mp4出问题(内有相关信息)
upyzl@2010-04-30 12:42
先说明一下
所用的ffmpeg是在这里下载的(即是roo兄编译的)
http://sourceforge.net/projects/direct264/files/Related%20Programs/ffmpeg%20%28demuxer_muxer%20only%29/ffmpeg_svn_r22846.7z/download
然后这个是出问题的相关信息
生成的为无法打开的64KB的mp4
引用
FFmpeg version SVN-r22846, Copyright (c) 2000-2010 the FFmpeg developers
built on Apr 13 2010 01:55:43 with gcc 4.4.1
configuration:
libavutil 50.14. 0 / 50.14. 0
libavcodec 52.66. 0 / 52.66. 0
libavformat 52.61. 0 / 52.61. 0
libavdevice 52. 2. 0 / 52. 2. 0
libswscale 0.10. 0 / 0.10. 0
[matroska @ 0x27af40]max_analyze_duration reached
[matroska @ 0x27af40]Estimating duration from bitrate, this may be inaccurate
Seems stream 0 codec frame rate differs from container frame rate: 47.95 (48000/1001) -> 23.98 (48000/2002)
Input #0, matroska, from 'E:\1.mkv':
Duration: 00:01:29.88, start: 0.000000, bitrate: N/A
Stream #0.0(jpn): Video: h264, yuv420p, 1280x720, PAR 1:1 DAR 16:9, 23.98 tbr, 1k tbn, 47.95 tbc
Metadata:
title : 视频
Stream #0.1(jpn): Audio: aac, 48000 Hz, stereo, s16
Metadata:
title : 日语音轨
Stream #0.2(chi): Subtitle: 0x0000
Metadata:
title : 简体中文ASS字幕
Stream #0.3(chi): Subtitle: 0x0000
Metadata:
title : 繁体中文ASS字幕
Output #0, mp4, to 'E:\2.mp4':
Metadata:
encoder : Lavf52.61.0
Stream #0.0(jpn): Video: 0x0021, yuv420p, 1280x720 [PAR 1:1 DAR 16:9], q=0-0, 48k tbn, 23.98 tbc
Metadata:
title : 视频
Stream #0.1(jpn): Audio: 0x0040, 48000 Hz, stereo
Metadata:
title : 日语音轨
Stream mapping:
Stream #0.0 -> #0.0
Stream #0.1 -> #0.1
Press [q] to stop encoding
[mp4 @ 0x1040050]st:1 error, non monotone timestamps 288 >= 288
[mp4 @ 0x1040050]st:1 error, pts < dts
av_interleaved_write_frame(): Error number -1 occurred
但是官方版却是正常的,以下是信息
问题是,这个mkv是vfr的,所以希望能用roo兄的ffmpeg正常地转封为mp4...
引用
FFmpeg version SVN-r22140-Sherpya, Copyright (c) 2000-2010 the FFmpeg developers
built on Mar 2 2010 03:26:44 with gcc 4.2.5 20080919 (prerelease) [Sherpya]
libavutil 50. 9. 0 / 50. 9. 0
libavcodec 52.55. 0 / 52.55. 0
libavformat 52.54. 0 / 52.54. 0
libavdevice 52. 2. 0 / 52. 2. 0
libavfilter 1.17. 0 / 1.17. 0
libswscale 0.10. 0 / 0.10. 0
libpostproc 51. 2. 0 / 51. 2. 0
[matroska @ 002ecc50]max_analyze_duration reached
[matroska @ 002ecc50]Estimating duration from bitrate, this may be inaccurate
Seems stream 0 codec frame rate differs from container frame rate: 47.95 (48000/1001) -> 23.98 (24000/1001)
Input #0, matroska, from 'E:\1.mkv':
Duration: 00:01:29.88, start: 0.000000, bitrate: N/A
Stream #0.0(jpn): Video: h264, yuv420p, 1280x720, PAR 1:1 DAR 16:9, 47.62 fps, 23.98 tbr, 1k tbn, 47.95 tbc
Metadata:
title : 视频
Stream #0.1(jpn): Audio: aac, 48000 Hz, stereo, s16
Metadata:
title : 日语音轨
Stream #0.2(chi): Subtitle: 0x0000
Metadata:
title : 简体中文ASS字幕
Stream #0.3(chi): Subtitle: 0x0000
Metadata:
title : 繁体中文ASS字幕
Output #0, mp4, to 'E:\1.mp4':
Metadata:
encoder : Lavf52.54.0
Stream #0.0(jpn): Video: libx264, yuv420p, 1280x720 [PAR 1:1 DAR 16:9], q=2-31, 48k tbn, 23.98 tbc
Metadata:
title : 视频
Stream #0.1(jpn): Audio: aac, 48000 Hz, stereo
Metadata:
title : 日语音轨
Stream mapping:
Stream #0.0 -> #0.0
Stream #0.1 -> #0.1
Press [q] to stop encoding
frame= 741 fps= 0 q=-1.0 size= 10495kB time=30.82 bitrate=2789.4kbits/s
frame= 1441 fps=1400 q=-1.0 size= 21163kB time=60.02 bitrate=2888.6kbits/s
frame= 2096 fps=1357 q=-1.0 size= 32180kB time=87.34 bitrate=3018.4kbits/s
frame= 2155 fps=1368 q=-1.0 Lsize= 32855kB time=89.80 bitrate=2997.2kbits/s
video:31032kB audio:1737kB global headers:0kB muxing overhead 0.259217%
自己不清楚问题在哪里
只好前来求助
upyzl@2010-04-30 12:50
另外这个是官方版ffmpeg转后的mp4的mediainfo
引用
General
Complete name : E:\1.mp4
Format : MPEG-4
Format profile : Base Media
Codec ID : isom
File size : 32.1 MiB
Duration : 1mn 29s
Overall bit rate : 2 995 Kbps
Writing application : Lavf52.54.0
Video
ID : 1
Format : AVC
Format/Info : Advanced Video Codec
Format profile : High@L4.0
Format settings, CABAC : Yes
Format settings, ReFrames : 6 frames
Codec ID : avc1
Codec ID/Info : Advanced Video Coding
Duration : 1mn 29s
Bit rate mode : Variable
Bit rate : 2 831 Kbps
Width : 1 280 pixels
Height : 720 pixels
Display aspect ratio : 16:9
Frame rate mode : Variable
Frame rate : 24.000 fps
Minimum frame rate : 23.810 fps
Maximum frame rate : 47.952 fps
Original frame rate : 23.976 fps
Resolution : 8 bits
Colorimetry : 4:2:0
Scan type : Progressive
Bits/(Pixel*Frame) : 0.128
Stream size : 30.3 MiB (94%)
Language : Japanese
Audio
ID : 2
Format : AAC
Format/Info : Advanced Audio Codec
Format version : Version 4
Format profile : LC
Format settings, SBR : No
Codec ID : 40
Duration : 1mn 29s
Bit rate mode : Variable
Bit rate : 158 Kbps
Channel(s) : 2 channels
Channel positions : L R
Sampling rate : 48.0 KHz
Resolution : 16 bits
Stream size : 1.70 MiB (5%)
Language : Japanese
x265@2010-04-30 14:18
把x.mkv 改为.mp4
ok?
roozhou@2010-05-01 12:47
官方版出来的文件在很多播放器是播放不能的
能不能用mmg切一段,如果用ffmpeg封装还是出错的话可以上传让我分析一下。当然如果源文件不是太大的话整体上传(或给出下载地址)也可以。
upyzl@2010-05-01 13:20
引用
最初由 x265 发布
把x.mkv 改为.mp4
ok?
mp4与mkv封装方式是有区别的
所以单纯改后缀名没有意义
引用
最初由 roozhou 发布
官方版出来的文件在很多播放器是播放不能的
能不能用mmg切一段,如果用ffmpeg封装还是出错的话可以上传让我分析一下。当然如果源文件不是太大的话整体上传(或给出下载地址)也可以。
http://u.115.com/file/f8abb089b6
32MB (89.8sec)
另外下午就要坐火车旅游去了,所以恐怕就不能及时回复了……
upyzl@2010-05-07 12:05
先顶起
这个问题还没解决……
试了下 http://ffmpeg.arrozcru.org/autobuilds/ 的最新官方版
有同样的问题(指与roo兄编译的r22846)
目前看样子只有这个FFmpeg-0.5.1-svn-22140好使啊……
bat命令
"D:\Program Files\Direct264\bin\ffmpeg.exe" -i E:\1.mkv -vcodec copy -acodec copy E:\1.mp4 2>E:\info.txt
genword@2010-05-07 20:23
用了一个绕弯的方法。
先用 MKVToolnix append 两个不同帧率的 mp4 文件,然后导出 .264 源文件和 timecode,然后用 mp4box 将 .264 封装成 .mp4 文件,再用 dtsedit 将 timecode 合并进去,然后再进行其它处理,比如封音频什么的。
roozhou@2010-05-07 21:30
这个mkv的问题出在音频上,估计和那个video delay 6ms有关系。第一帧的时间戳不是0而且前两帧的时间戳是一样的。我可以让ffmpeg忽略音频轨里的这种错误,出来的音轨也能正常播放。
Edit: 我找了其他有delay的音轨,并没有前两帧时间戳相等的情况,可以认为这个文件本身存在错误。下个版本里我会尽可能的忽略音轨里的时间戳问题,不过依然会打印出错误信息。
upyzl@2010-05-09 12:42
引用
最初由 roozhou 发布
这个mkv的问题出在音频上,估计和那个video delay 6ms有关系。第一帧的时间戳不是0而且前两帧的时间戳是一样的。我可以让ffmpeg忽略音频轨里的这种错误,出来的音轨也能正常播放。
Edit: 我找了其他有delay的音轨,并没有前两帧时间戳相等的情况,可以认为这个文件本身存在错误。下个版本里我会尽可能的忽略音轨里的时间戳问题,不过依然会打印出错误信息。
麻烦了;期待新编译版
我才发现那个能封装的ffmpeg把所有视频都一律强制弄成24fps了……
roozhou@2010-05-09 21:04
引用
最初由 upyzl 发布
麻烦了;期待新编译版
我才发现那个能封装的ffmpeg把所有视频都一律强制弄成24fps了……
新版本已经发了,可以封装。不过我不知道延迟会不会有问题。这个错误有可能导致1帧的误差(大概21ms)
upyzl@2010-05-09 22:31
感谢!!
试了下
转换正常!
没听出来延迟的问题
不过即便有延迟也只要在播放器里稍微调一下就OK~
| TOP