ffmpeg可以识别MXF dv,但不会编码为h264 [英] ffmpeg recognises MXF dv but won't encode to h264
问题描述
我有一个编码为MXF的DV文件,我想将其转码为h264.对文件运行ffmpeg可以正常读取并理解流,但不会写入h264文件.似乎所有流都正确无误,我可以确认视频和音频流的属性.
I have a DV file encoded as an MXF that I want to transcode to h264. Running ffmpeg against the file it reads ok and understands the stream but won't write the h264 file. It seems to get all the streams correct and I can confirm the attributes of video and audio streams.
我只是不明白为什么它不编码?我试图用-f dv强制解码器,但它抱怨源头不正确.
I just don't understand why it won't encode? I tried to force a Decoder with -f dv but it complained that the source header was incorrect.
./ffmpeg -f dv -i camb_onitefire_050914.mov camb_onitefire_A.mp4
ffmpeg version 3.3.1 Copyright (c) 2000-2017 the FFmpeg developers
built with llvm-gcc 4.2.1 (LLVM build 2336.11.00)
configuration: --prefix=/Volumes/Ramdisk/sw --enable-gpl --enable-pthreads --enable-version3 --enable-libspeex --enable-libvpx --disable-decoder=libvpx --enable-libmp3lame --enable-libtheora --enable-libvorbis --enable-libx264 --enable-avfilter --enable-libopencore_amrwb --enable-libopencore_amrnb --enable-filters --enable-libgsm --enable-libvidstab --enable-libx265 --disable-doc --arch=x86_64 --enable-runtime-cpudetect
libavutil 55. 58.100 / 55. 58.100
libavcodec 57. 89.100 / 57. 89.100
libavformat 57. 71.100 / 57. 71.100
libavdevice 57. 6.100 / 57. 6.100
libavfilter 6. 82.100 / 6. 82.100
libswscale 4. 6.100 / 4. 6.100
libswresample 2. 7.100 / 2. 7.100
libpostproc 54. 5.100 / 54. 5.100
[dv @ 0x7fd6f4800000] Cannot find DV header.
camb_onitefire_050914.mov: Operation not permitted
Davids-MacBook-Pro:camb_onitefire_050914(1).vmf davidmcsween$ ./ffmpeg -i camb_onitefire_050914.mov camb_onitefire_A.mp4
ffmpeg version 3.3.1 Copyright (c) 2000-2017 the FFmpeg developers
built with llvm-gcc 4.2.1 (LLVM build 2336.11.00)
configuration: --prefix=/Volumes/Ramdisk/sw --enable-gpl --enable-pthreads --enable-version3 --enable-libspeex --enable-libvpx --disable-decoder=libvpx --enable-libmp3lame --enable-libtheora --enable-libvorbis --enable-libx264 --enable-avfilter --enable-libopencore_amrwb --enable-libopencore_amrnb --enable-filters --enable-libgsm --enable-libvidstab --enable-libx265 --disable-doc --arch=x86_64 --enable-runtime-cpudetect
libavutil 55. 58.100 / 55. 58.100
libavcodec 57. 89.100 / 57. 89.100
libavformat 57. 71.100 / 57. 71.100
libavdevice 57. 6.100 / 57. 6.100
libavfilter 6. 82.100 / 6. 82.100
libswscale 4. 6.100 / 4. 6.100
libswresample 2. 7.100 / 2. 7.100
libpostproc 54. 5.100 / 54. 5.100
[mov,mp4,m4a,3gp,3g2,mj2 @ 0x7fe1fb000000] Skipped opening external track: stream 0, alias: path='/VibrintAVFiles/P2 News Ingest/camb_onitefire_050914(1).vmf/video.vid', dir='camb_onitefire_050914(1).vmf', filename='video.vid', volume='default', nlvl_from=1, nlvl_to=1.Set enable_drefs to allow this.
[mov,mp4,m4a,3gp,3g2,mj2 @ 0x7fe1fb000000] Skipped opening external track: stream 1, alias: path='/VibrintAVFiles/P2 News Ingest/camb_onitefire_050914(1).vmf/audio_0.pcm', dir='camb_onitefire_050914(1).vmf', filename='audio_0.pcm', volume='default', nlvl_from=1, nlvl_to=1.Set enable_drefs to allow this.
[mov,mp4,m4a,3gp,3g2,mj2 @ 0x7fe1fb000000] Skipped opening external track: stream 2, alias: path='/VibrintAVFiles/P2 News Ingest/camb_onitefire_050914(1).vmf/audio_1.pcm', dir='camb_onitefire_050914(1).vmf', filename='audio_1.pcm', volume='default', nlvl_from=1, nlvl_to=1.Set enable_drefs to allow this.
[mov,mp4,m4a,3gp,3g2,mj2 @ 0x7fe1fb000000] Skipped opening external track: stream 3, alias: path='/VibrintAVFiles/P2 News Ingest/camb_onitefire_050914(1).vmf/audio_2.pcm', dir='camb_onitefire_050914(1).vmf', filename='audio_2.pcm', volume='default', nlvl_from=1, nlvl_to=1.Set enable_drefs to allow this.
[mov,mp4,m4a,3gp,3g2,mj2 @ 0x7fe1fb000000] Skipped opening external track: stream 4, alias: path='/VibrintAVFiles/P2 News Ingest/camb_onitefire_050914(1).vmf/audio_3.pcm', dir='camb_onitefire_050914(1).vmf', filename='audio_3.pcm', volume='default', nlvl_from=1, nlvl_to=1.Set enable_drefs to allow this.
[mov,mp4,m4a,3gp,3g2,mj2 @ 0x7fe1fb000000] Could not find codec parameters for stream 0 (Video: dvvideo (dvpp / 0x70707664), none, 720x576, 28800 kb/s): unspecified pixel format
Consider increasing the value for the 'analyzeduration' and 'probesize' options
Guessed Channel Layout for Input Stream #0.1 : mono
Guessed Channel Layout for Input Stream #0.2 : mono
Guessed Channel Layout for Input Stream #0.3 : mono
Guessed Channel Layout for Input Stream #0.4 : mono
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'camb_onitefire_050914.mov':
Metadata:
creation_time : 2014-09-04T18:54:07.000000Z
Duration: 00:17:47.18, start: 0.000000, bitrate: 1 kb/s
Stream #0:0(eng): Video: dvvideo (dvpp / 0x70707664), none, 720x576, 28800 kb/s, SAR 118:81 DAR 295:162, 25 fps, 25 tbr, 2500 tbn, 2500 tbc (default)
Metadata:
creation_time : 2014-09-04T18:54:07.000000Z
handler_name : Apple Alias Data Handler
timecode : 01:46:43:02
Stream #0:1(eng): Audio: pcm_s16le (sowt / 0x74776F73), 48000 Hz, mono, s16, 768 kb/s (default)
Metadata:
creation_time : 2014-09-04T18:54:07.000000Z
handler_name : Apple Alias Data Handler
Stream #0:2(eng): Audio: pcm_s16le (sowt / 0x74776F73), 48000 Hz, mono, s16, 768 kb/s (default)
Metadata:
creation_time : 2014-09-04T18:54:07.000000Z
handler_name : Apple Alias Data Handler
Stream #0:3(eng): Audio: pcm_s16le (sowt / 0x74776F73), 48000 Hz, mono, s16, 768 kb/s (default)
Metadata:
creation_time : 2014-09-04T18:54:07.000000Z
handler_name : Apple Alias Data Handler
Stream #0:4(eng): Audio: pcm_s16le (sowt / 0x74776F73), 48000 Hz, mono, s16, 768 kb/s (default)
Metadata:
creation_time : 2014-09-04T18:54:07.000000Z
handler_name : Apple Alias Data Handler
Stream #0:5(eng): Data: none (tmcd / 0x64636D74) (default)
Metadata:
creation_time : 2014-09-04T18:54:07.000000Z
handler_name : Apple Handle Data Handler
timecode : 01:46:43:02
File 'camb_onitefire_A.mp4' already exists. Overwrite ? [y/N] y
Stream mapping:
Stream #0:0 -> #0:0 (dvvideo (native) -> h264 (libx264))
Stream #0:1 -> #0:1 (pcm_s16le (native) -> aac (native))
Press [q] to stop, [?] for help
Finishing stream 0:0 without any data written to it.
Finishing stream 0:1 without any data written to it.
Nothing was written into output file 0 (camb_onitefire_A.mp4), because at least one of its streams received no packets.
frame= 0 fps=0.0 q=0.0 Lsize= 0kB time=-577014:32:22.77 bitrate= -0.0kbits/s speed=N/A
video:0kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: unknown
[aac @ 0x7fe1fd010e00] Qavg: nan
这里有一个新颖的mxd文件结构的例子:
Heres an example of the file structure of this novel mxd:
推荐答案
这里提供的是MOV,它只是一个shell,实际的流在其他位置.
What you have here is a MOV which is only a shell and the actual streams are elsewhere.
运行
ffmpeg -enable_drefs 1 -use_absolute_path 1 -i camb_onitefire_050914.mov camb_onitefire_A.mp4
运行,以传输所有曲目
ffmpeg -enable_drefs 1 -use_absolute_path 1 -i camb_onitefire_050914.mov -map 0:v -map 0:a camb_onitefire_A.mp4
上面的内容,带有时间码
The above, with timecode
ffmpeg -enable_drefs 1 -use_absolute_path 1 -i camb_onitefire_050914.mov -map 0:v -map 0:a -write_tmcd 1 camb_onitefire_A.mp4
这篇关于ffmpeg可以识别MXF dv,但不会编码为h264的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!