![是否可以使用 ffmpeg 合并文件,并使用 VITC 转码为 MXF IMX30](https://linux22.com/image/1488869/%E6%98%AF%E5%90%A6%E5%8F%AF%E4%BB%A5%E4%BD%BF%E7%94%A8%20ffmpeg%20%E5%90%88%E5%B9%B6%E6%96%87%E4%BB%B6%EF%BC%8C%E5%B9%B6%E4%BD%BF%E7%94%A8%20VITC%20%E8%BD%AC%E7%A0%81%E4%B8%BA%20MXF%20IMX30.png)
ffmpeg 能转码为 IMX30 MXF 吗?我有几个 DVCPRO MOV 文件,我想将它们合并为一个,然后使用 VITC 转码为 IMX30 MXF,因为我的程序只能正确处理这种格式的视频。
我知道如何将文件合并在一起ffmpeg -f concat -i "filestoconcat.txt" -c copy "output.mov"
。相当简单,而且效果很好。
但我不知道是否还可以将生成的文件转码为 IMX30 MXF。最好同时进行连接。
对其中一个文件进行 ffprobe:
C:\ffmpeg>ffprobe C:\Archive\2001_01_23.mov
ffprobe version N-66860-g5552594 Copyright (c) 2007-2014 the FFmpeg developers
built on Oct 15 2014 00:14:28 with gcc 4.9.1 (GCC)
configuration: --enable-gpl --enable-version3 --disable-w32threads --enable-av
isynth --enable-bzlib --enable-fontconfig --enable-frei0r --enable-gnutls --enab
le-iconv --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --
enable-libfreetype --enable-libgme --enable-libgsm --enable-libilbc --enable-lib
modplug --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrw
b --enable-libopenjpeg --enable-libopus --enable-librtmp --enable-libschroedinge
r --enable-libsoxr --enable-libspeex --enable-libtheora --enable-libtwolame --en
able-libvidstab --enable-libvo-aacenc --enable-libvo-amrwbenc --enable-libvorbis
--enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx264 --enable-
libx265 --enable-libxavs --enable-libxvid --enable-zlib
libavutil 54. 10.100 / 54. 10.100
libavcodec 56. 5.100 / 56. 5.100
libavformat 56. 9.100 / 56. 9.100
libavdevice 56. 1.100 / 56. 1.100
libavfilter 5. 1.106 / 5. 1.106
libswscale 3. 1.101 / 3. 1.101
libswresample 1. 1.100 / 1. 1.100
libpostproc 53. 3.100 / 53. 3.100
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'C:\Archive\2001_01_23.mov':
Metadata:
major_brand : qt
minor_version : 512
compatible_brands: qt
encoder : Lavf57.25.100
Duration: 00:14:51.08, start: 0.000000, bitrate: 30338 kb/s
Stream #0:0(eng): Video: dvvideo (dvpp / 0x70707664), yuv411p, 720x576 [SAR
64:45 DAR 16:9], 28800 kb/s, 25 fps, 25 tbr, 12800 tbn, 25 tbc (default)
Metadata:
handler_name : DataHandler
encoder : Lavc57.24.102 dvvideo
timecode : 00:00:00:00
Stream #0:1(eng): Audio: pcm_s16le (sowt / 0x74776F73), 48000 Hz, stereo, s1
6, 1536 kb/s (default)
Metadata:
handler_name : DataHandler
Stream #0:2(eng): Data: none (tmcd / 0x64636D74)
Metadata:
handler_name : DataHandler
timecode : 00:00:00:00
Unsupported codec with id 0 for input stream 2
答案1
MPEG IMX 是索尼公司用于356M 标准标准,也称为 D10。FFmpeg 确实有一个 MXF-D10 多路复用器。因此,首先更新您的 ffmpeg二进制然后首先使用单个文件尝试此操作并在您的应用程序中进行测试:
ffmpeg -i input.mov -map 0:v -map 0:a -timecode 00:00:00:00
-c:v mpeg2video -pix_fmt yuv422p -r 25 -b:v 30000k -minrate 30000k -maxrate 30000k
-bufsize 1200000 -rc_init_occupancy 1200000 -rc_max_vbv_use 1 -rc_min_vbv_use 1
-intra -flags +ildct+low_delay -intra_vlc 1 -non_linear_quant 1
-ps 1 -qmin 1 -qmax 3 -top 1 -dc 10
-c:a pcm_s16le -ar 48000 -d10_channelcount 2
-f mxf_d10 output.mxf
如果上述方法有效,那么
ffmpeg -f concat -i "filestoconcat.txt" -map 0:v -map 0:a -timecode 00:00:00:00
-c:v mpeg2video -pix_fmt yuv422p -r 25 -b:v 30000k -minrate 30000k -maxrate 30000k
-bufsize 1200000 -rc_init_occupancy 1200000 -rc_max_vbv_use 1 -rc_min_vbv_use 1
-intra -flags +ildct+low_delay -intra_vlc 1 -non_linear_quant 1
-ps 1 -qmin 1 -qmax 3 -top 1 -dc 10
-c:a pcm_s16le -ar 48000 -d10_channelcount 2
-f mxf_d10 joined.mxf