Opened 11 years ago
Closed 11 years ago
#3473 closed defect (fixed)
wtv muxer does not check H.264 streams for startcode
Reported by: | ramitb | Owned by: | |
---|---|---|---|
Priority: | minor | Component: | avformat |
Version: | git-master | Keywords: | wtv |
Cc: | Blocked By: | ||
Blocking: | Reproduced by developer: | yes | |
Analyzed by developer: | yes |
Description
Summary of the bug: If ffmpeg is used to remux a mp4 file into a WTV file the resulting WTV file has no video in WMP or Media Center when played back.
The original MP4 file is created by handbrake (the purpose being to use QuickSync hardware encoding). This happens with any file.
I'm showing an example where I'm converting my MPEG2 WTV collection to a MPEG4 WTV collection and I'm using handbrake to convert from MPEG2 to MPEG4 and FFMPEG to remux from MP4 to WTV.
When the player open it detects teh video size (ie. the window resizes) but the screen is blank (audio is fine).
How to reproduce:
HandBrakeCLI.exe -i Wheel.wtv -o Wheel.mp4 -e qsv_h264 -E copy [10:24:06] hb_init: starting libhb thread HandBrake svn6013 (2014020301) - MinGW x86_64 - http://handbrake.fr 4 CPUs detected Opening Wheel.wtv... [10:24:06] CPU: Intel(R) Core(TM) i7-3540M CPU @ 3.00GHz [10:24:06] - Intel microarchitecture Ivy Bridge [10:24:06] - logical processor count: 4 [10:24:06] OpenCL device #1: Intel(R) Corporation Intel(R) HD Graphics 4000 [10:24:06] - OpenCL version: 1.1 [10:24:06] - driver version: 9.17.10.2849 [10:24:06] - device type: GPU [10:24:06] - supported: no [10:24:06] Intel Quick Sync Video support: yes [10:24:06] - Intel Media SDK hardware: API 1.4 (minimum: 1.3) [10:24:06] - Preferred implementation: hardware (any) [10:24:06] hb_scan: path=Wheel.wtv, title_index=1 libbluray/bdnav/index_parse.c:162: indx_parse(): error opening Wheel.wtv/BDMV/in dex.bdmv libbluray/bdnav/index_parse.c:162: indx_parse(): error opening Wheel.wtv/BDMV/BA CKUP/index.bdmv libbluray/bluray.c:2182: nav_get_title_list(Wheel.wtv) failed [10:24:06] bd: not a bd - trying as a stream/file instead libdvdnav: Using dvdnav version 5.0.0 libdvdread: Encrypted DVD support unavailable. libdvdread:DVDOpenFileUDF:UDFFindFile /VIDEO_TS/VIDEO_TS.IFO failed libdvdread:DVDOpenFileUDF:UDFFindFile /VIDEO_TS/VIDEO_TS.BUP failed libdvdread: Can't open file VIDEO_TS.IFO. libdvdnav: vm: failed to read VIDEO_TS.IFO [10:24:07] dvd: not a dvd - trying as a stream/file instead [mpeg2video @ 0000000003fcba60] Invalid frame dimensions 0x0. Input #0, wtv, from 'Wheel.wtv': Metadata: WM/MediaClassPrimaryID: db9830bd-3ab3-4fab-8a371a995f7ff74 WM/MediaClassSecondaryID: ba7f258a-62f7-47a9-b21f4651c42a000 Title : Wheel of Fortune WM/SubTitle : Sandals Resorts Romance Week genre : Series;Game Show WM/OriginalReleaseTime: 0 WM/MediaCredits : ;;Pat Sajak/Vanna White; service_provider: WBZDT service_name : WBZDT (WBZ-DT) WM/MediaNetworkAffiliation: CBS Affiliate WM/MediaOriginalChannel: 4 WM/MediaOriginalChannelSubNumber: 1 WM/MediaOriginalBroadcastDateTime: 2012-02-15T05:00:00Z WM/MediaOriginalRunTime: 5219881080 WM/MediaIsStereo: false WM/MediaIsRepeat: false WM/MediaIsLive : false WM/MediaIsTape : false WM/MediaIsDelay : false WM/MediaIsSubtitled: false WM/MediaIsMovie : false WM/MediaIsPremiere: false WM/MediaIsFinale: false WM/MediaIsSAP : false WM/MediaIsSport : false WM/ParentalRating: TV-G WM/Provider : MediaCenterDefault WM/VideoClosedCaptioning: true WM/WMRVEncodeTime: 2012-02-16 00:23:18 WM/WMRVSeriesUID: !MCSeries!00004762 WM/WMRVServiceID: !MCService!28457676 WM/WMRVProgramID: !MCProgram!268783610 WM/WMRVRequestID: 0 WM/WMRVScheduleItemID: 0 WM/WMRVQuality : 0 WM/WMRVOriginalSoftPrePadding: 1394 WM/WMRVOriginalSoftPostPadding: 120 WM/WMRVHardPrePadding: -1394 WM/WMRVHardPostPadding: 0 WM/WMRVATSCContent: true WM/WMRVDTVContent: true WM/WMRVHDContent: true WM/MediaThumbWidth: 352 WM/MediaThumbHeight: 198 WM/MediaThumbStride: 1056 WM/MediaThumbRet: 0 WM/MediaThumbRatingSystem: 9 WM/MediaThumbRatingLevel: 8 WM/MediaThumbRatingAttributes: 0 WM/MediaThumbAspectRatioX: 16 WM/MediaThumbAspectRatioY: 9 WM/MediaThumbTimeStamp: -4616189618054758400 WM/MediaThumbType: 2 Duration : 318592637 WM/WMRVEndTime : 2012-02-16 00:23:49 WM/WMRVBitrate : 3.014656 WM/WMRVKeepUntil: -1 WM/WMRVActualSoftPrePadding: 1420 WM/WMRVActualSoftPostPadding: -370 WM/WMRVContentProtected: false WM/WMRVContentProtectedPercent: 0 WM/WMRVExpirationDate: WM/WMRVExpirationSpan: 9223372036854775807 WM/WMRVInBandRatingSystem: 255 WM/WMRVInBandRatingLevel: 255 WM/WMRVInBandRatingAttributes: 0 WM/WMRVWatched : true Duration: 00:00:31.26, start: 8.654056, bitrate: 14690 kb/s Stream #0.0[0x19](eng): Audio: ac3, 48000 Hz, 5.1, fltp, 384 kb/s Stream #0.1[0x1a](spa): Audio: ac3, 48000 Hz, stereo, fltp, 192 kb/s Stream #0.2[0x1b]: Video: mpeg2video (Main), yuv420p, 1920x1080 [PAR 1:1 DAR 16:9], 17098 kb/s, 28.33 fps, 10000k tbn, 59.94 tbc Stream #0.3[0x1c]: Subtitle: [0][0][0][0] / 0x0000 Stream #0.4[0xffffffff]: Attachment: mjpeg Metadata: title : TV Thumbnail [10:24:07] add_ffmpeg_subtitle: unknown subtitle stream type: 0x17007 [10:24:07] scan: decoding previews for title 1 [10:24:07] scan: audio 0x1: AC-3, rate=48000Hz, bitrate=192000 Espanol (AC3) (2. 0 ch) [10:24:07] scan: audio 0x0: AC-3, rate=48000Hz, bitrate=384000 English (AC3) (5. 1 ch) Scanning title 1 of 1, preview 9, 90.00 %[10:24:08] scan: 10 previews, 1920x1080 , 28.333 fps, autocrop = 0/2/240/240, aspect 16:9, PAR 1:1 [10:24:08] libhb: scan thread found 1 valid title(s) + title 1: + stream: Wheel.wtv + duration: 00:00:31 + size: 1920x1080, pixel aspect: 1/1, display aspect: 1.78, 28.333 fps + autocrop: 0/2/240/240 + support opencl: no + support hwd: yes + chapters: + 1: cells 0->0, 0 blocks, duration 00:00:31 + audio tracks: + 1, English (AC3) (5.1 ch) (iso639-2: eng), 48000Hz, 384000bps + 2, Espanol (AC3) (2.0 ch) (iso639-2: spa), 48000Hz, 192000bps + subtitle tracks: + 1, Closed Captions (iso639-2: eng) (Text)(CC) [10:24:08] 1 job(s) to process [10:24:08] starting job [10:24:08] Auto Passthru: allowed codecs are AAC, AC3, DTS, DTS-HD, MP3 [10:24:08] Auto Passthru: no valid fallback specified [10:24:08] Auto Passthru: using AC3 Passthru for track 1 [10:24:08] sync: expecting 885 video frames [10:24:08] job configuration: [10:24:08] * source [10:24:08] + Wheel.wtv [10:24:08] + title 1, chapter(s) 1 to 1 [10:24:08] + container: wtv [10:24:08] + data rate: 14690 kbps [10:24:08] * destination [10:24:08] + Wheel.mp4 [10:24:08] + container: MPEG-4 (avformat) [10:24:08] * video track [10:24:08] + decoder: mpeg2video [10:24:08] + bitrate 17098 kbps [10:24:08] + filters [10:24:08] + Framerate Shaper (0:27000000:952941) [10:24:08] + frame rate: same as source (around 28.333 fps) [10:24:08] + Crop and Scale (1440:1072:0:2:240:240) [10:24:08] + source: 1920 * 1080, crop (0/2/240/240): 1440 * 1078, scale: 1440 * 1072 [10:24:08] + dimensions: 1440 * 1072, mod 0 [10:24:08] + encoder: H.264 (Intel QSV) [10:24:08] + bitrate: 1000 kbps, pass: 0 [10:24:08] * audio track 1 [10:24:08] + decoder: English (AC3) (5.1 ch) (track 1, id 0x0) [10:24:08] + bitrate: 384 kbps, samplerate: 48000 Hz [10:24:08] + AC3 Passthru [mpeg2video @ 0000000003fd1920] Invalid frame dimensions 0x0. [10:24:08] reader: first SCR 813160 id 0x2 DTS 813160 Encoding: task 1 of 1, 0.00 %[10:24:08] encqsvInit: using encode-only path [10:24:08] encqsvInit: TargetUsage 2 AsyncDepth 4 [10:24:08] encqsvInit: GopRefDist 3 GopPicSize 28 NumRefFrame 2 [10:24:08] encqsvInit: BFrames on [10:24:08] encqsvInit: RateControlMethod VBR TargetKbps 1000 MaxKbps 1500 Buffer SizeInKB 375 InitialDelayInKB 187 [10:24:08] encqsvInit: CAVLC off [10:24:08] encqsvInit: H.264 profile High @ level 4.0 [10:24:08] sync: first pts is 15015 Encoding: task 1 of 1, 2.71 %[10:24:08] qsv_enc_init: using 'hardware (1)' imple mentation, API: 1.4 Encoding: task 1 of 1, 98.76 % (93.67 fps, avg 90.09 fps, ETA 00h00m01s)[10:24:1 8] reader: done. 1 scr changes Encoding: task 1 of 1, 100.00 % (94.74 fps, avg 90.80 fps, ETA 00h00m00s)[10:24: 18] work: average encoding speed for job is 90.795891 fps Encoding: task 1 of 1, 100.00 % (94.74 fps, avg 90.80 fps, ETA 00h00m00s)[10:24: 19] sync: got 932 frames, 885 expected [10:24:19] render: lost time: 0 (0 frames) [10:24:19] render: gained time: 0 (0 frames) (0 not accounted for) [10:24:19] mpeg2video-decoder done: 932 frames, 1 decoder errors, 0 drops [10:24:19] enc_qsv done: frames: 932 in, 932 out [10:24:19] mux: track 0, 932 frames, 3899361 bytes, 996.45 kbps, fifo 1024 [10:24:19] mux: track 1, 965 frames, 1482240 bytes, 378.78 kbps, fifo 1024 Muxing: this may take awhile...[10:24:19] libhb: work result = 0 Encode done! HandBrake has exited.
Remux MP4 to WTV using ffmpeg
ffmpeg -i Wheel.mp4 -vcodec copy -acodec copy test.wtv ffmpeg version N-61478-g06a3185 Copyright (c) 2000-2014 the FFmpeg developers built on Mar 15 2014 13:06:50 with gcc 4.8.0 (GCC) configuration: --arch=x86_64 --target-os=mingw32 --cross-prefix=/Software/ffmp eg/sandbox/mingw-w64-x86_64/bin/x86_64-w64-mingw32- --pkg-config=pkg-config --en able-gpl --enable-libx264 --enable-avisynth --enable-libxvid --enable-libmp3lame --enable-version3 --enable-zlib --enable-librtmp --enable-libvorbis --enable-li btheora --enable-libspeex --enable-libopenjpeg --enable-gnutls --enable-libgsm - -enable-libfreetype --enable-libopus --disable-w32threads --enable-frei0r --enab le-filter=frei0r --enable-libvo-aacenc --enable-bzlib --enable-libxavs --extra-c flags=-DPTW32_STATIC_LIB --enable-libopencore-amrnb --enable-libopencore-amrwb - -enable-libvo-amrwbenc --enable-libschroedinger --enable-libvpx --enable-libilbc --prefix=/Software/ffmpeg/sandbox/mingw-w64-x86_64/x86_64-w64-mingw32 --enable- static --disable-shared --enable-libsoxr --enable-fontconfig --enable-libass --e nable-libutvideo --enable-libbluray --enable-iconv --enable-libtwolame --extra-c flags=-DLIBTWOLAME_STATIC --enable-libzvbi --enable-libcaca --enable-libmodplug --extra-libs=-lstdc++ --extra-libs=-lpng --enable-libvidstab --extra-cflags= --e xtra-cflags= --enable-nonfree --enable-libfdk-aac --enable-libfaac --enable-runt ime-cpudetect libavutil 52. 66.101 / 52. 66.101 libavcodec 55. 52.102 / 55. 52.102 libavformat 55. 34.101 / 55. 34.101 libavdevice 55. 11.100 / 55. 11.100 libavfilter 4. 3.100 / 4. 3.100 libswscale 2. 5.101 / 2. 5.101 libswresample 0. 18.100 / 0. 18.100 libpostproc 52. 3.100 / 52. 3.100 Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'Wheel.mp4': Metadata: major_brand : isom minor_version : 512 compatible_brands: isomiso2avc1mp41 title : Wheel of Fortune encoder : Lavf55.10.3 genre : Series;Game Show Duration: 00:00:31.43, start: 0.197000, bitrate: 1374 kb/s Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p(tv, bt709) , 1440x1072 [SAR 1:1 DAR 90:67], 992 kb/s, 29.66 fps, 29.97 tbr, 90k tbn, 56.67 tbc (default) Metadata: handler_name : VideoHandler Stream #0:1(eng): Audio: ac3 (ac-3 / 0x332D6361), 48000 Hz, 5.1(side), fltp, 384 kb/s (default) Metadata: handler_name : SoundHandler Output #0, wtv, to 'test.wtv': Metadata: major_brand : isom minor_version : 512 compatible_brands: isomiso2avc1mp41 title : Wheel of Fortune genre : Series;Game Show encoder : Lavf55.34.101 Stream #0:0(und): Video: h264 (avc1 / 0x31637661), yuv420p, 1440x1072 [SAR 1 :1 DAR 90:67], q=2-31, 992 kb/s, 29.66 fps, 10000k tbn, 28.33 tbc (default) Metadata: handler_name : VideoHandler Stream #0:1(eng): Audio: ac3 ([0] [0][0] / 0x2000), 48000 Hz, 5.1(side), 384 kb/s (default) Metadata: handler_name : SoundHandler Stream mapping: Stream #0:0 -> #0:0 (copy) Stream #0:1 -> #0:1 (copy) Press [q] to stop, [?] for help frame= 932 fps=0.0 q=-1.0 Lsize= 5660kB time=00:00:31.23 bitrate=1484.7kbits /s video:3808kB audio:1448kB subtitle:0 data:0 global headers:0kB muxing overhead 7 .697319%
Change History (7)
comment:1 by , 11 years ago
Resolution: | → needs_more_info |
---|---|
Status: | new → closed |
comment:2 by , 11 years ago
Resolution: | needs_more_info |
---|---|
Status: | closed → reopened |
i've uploaded a sample #3473.mp4 which was encoded using handbrake and the settings used on the initial comment above.
comment:3 by , 11 years ago
Resolution: | → worksforme |
---|---|
Status: | reopened → closed |
$ ffmpeg -i \#3473.mp4 -vcodec copy -acodec copy -vbsf h264_mp4toannexb test.wtv
comment:4 by , 11 years ago
Resolution: | worksforme |
---|---|
Status: | closed → reopened |
Shouldn't ffmpeg take care of that automatically, if wtv requires the h264_mp4toannexb bsf to be applied for it work, it should be a default option or ATLEAST a pop up warning message about setting the BSF
comment:5 by , 11 years ago
Component: | undetermined → avformat |
---|---|
Keywords: | wtv added |
Priority: | normal → minor |
Reproduced by developer: | set |
Status: | reopened → open |
Summary: | WTV files created from existing mpeg4 files dont' play back video in WMP or MC → wtv muxer does not check H.264 streams for startcode |
Version: | unspecified → git-master |
This is not what you reported (you do remember that this is a bug tracker, not a support forum?) and it would be a duplicate of ticket #2680.
There is apparently a bug because the wtv muxer does not check if the H.264 stream is in the correct format.
comment:6 by , 11 years ago
Analyzed by developer: | set |
---|
(Perhaps a better fault description would be "wtv muxer discards extradata, resulting in unplayable files")
Analysis:
The test file linked here (#3474.mp4) has H264 extradata containing startcode information, but the WTV muxer discards codec extradata when using -vcodec copy. The resulting file will not play back in FFmpeg or WMP.
Solution:
Will need to investigate whether/how the WTV format actually supports the extradata concept. And if not, insert the startcode information as a packet _or_ auto apply bitstream filter.
comment:7 by , 11 years ago
Resolution: | → fixed |
---|---|
Status: | open → closed |
Fixed by Peter Ross in 92d657b5
Please reopen this ticket if you can provide an input sample.