Video ffmpeg压缩并保留元数据流
我正在尝试合并多个文件,这些文件是GoPro Hero6分割电影的结果,以避免FAT 4GB限制。ffmpeg在这方面效果很好,但我需要在元数据流中编码的遥测数据,默认情况下ffmpeg似乎不会保留这一点。使用Video ffmpeg压缩并保留元数据流,video,ffmpeg,gopro,Video,Ffmpeg,Gopro,我正在尝试合并多个文件,这些文件是GoPro Hero6分割电影的结果,以避免FAT 4GB限制。ffmpeg在这方面效果很好,但我需要在元数据流中编码的遥测数据,默认情况下ffmpeg似乎不会保留这一点。使用ffprobe命令,您可以看到源视频具有: Stream #0:3(eng): Data: none (gpmd / 0x646D7067), 36 kb/s (default) Metadata: creation_time : 2018-07-15T16:16:26.00000
ffprobe
命令,您可以看到源视频具有:
Stream #0:3(eng): Data: none (gpmd / 0x646D7067), 36 kb/s (default)
Metadata:
creation_time : 2018-07-15T16:16:26.000000Z
handler_name : GoPro MET
我从研究中知道这是我需要的流(尽管我希望能够复制所有流)。但是,当使用ffmpeg-f concat
时,输出为:
[concat @ 0x7febb9800000] Could not find codec parameters for stream 2 (Unknown: none): unknown codec
Consider increasing the value for the 'analyzeduration' and 'probesize' options
[concat @ 0x7febb9800000] Could not find codec parameters for stream 3 (Unknown: none): unknown codec
Consider increasing the value for the 'analyzeduration' and 'probesize' options
[concat @ 0x7febb9800000] Could not find codec parameters for stream 4 (Unknown: none): unknown codec
Consider increasing the value for the 'analyzeduration' and 'probesize' options
Input #0, concat, from 'tmp.txt':
Duration: N/A, start: 0.000000, bitrate: 66194 kb/s
Stream #0:0(eng): Video: h264 (High) (avc1 / 0x31637661), yuvj420p(pc, bt709), 2704x1520 [SAR 1:1 DAR 169:95], 66005 kb/s, 59.94 fps, 59.94 tbr, 60k tbn, 119.88 tbc
Metadata:
creation_time : 2018-07-15T16:08:22.000000Z
handler_name : GoPro AVC
encoder : GoPro AVC encoder
timecode : 16:23:48:21
Stream #0:1(eng): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 189 kb/s
Metadata:
creation_time : 2018-07-15T16:08:22.000000Z
handler_name : GoPro AAC
timecode : 16:23:48:21
Stream #0:2: Unknown: none
Stream #0:3: Unknown: none
Stream #0:4: Unknown: none
Output #0, mp4, to 'GH0089.MP4':
Metadata:
encoder : Lavf58.12.100
Stream #0:0(eng): Video: h264 (High) (avc1 / 0x31637661), yuvj420p(pc, bt709), 2704x1520 [SAR 1:1 DAR 169:95], q=2-31, 66005 kb/s, 0.02 fps, 59.94 tbr, 60k tbn, 60k tbc
Metadata:
creation_time : 2018-07-15T16:08:22.000000Z
handler_name : GoPro AVC
encoder : GoPro AVC encoder
timecode : 16:23:48:21
Stream #0:1(eng): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 189 kb/s
Metadata:
creation_time : 2018-07-15T16:08:22.000000Z
handler_name : GoPro AAC
timecode : 16:23:48:21
Stream mapping:
Stream #0:0 -> #0:0 (copy)
Stream #0:1 -> #0:1 (copy)
Press [q] to stop, [?] for help
警告找不到编解码器参数
特别有趣,流映射
显示仅映射视频和音频流。我一直在玩弄map\u元数据
,但毫无用处。我可能没有正确的格式,但问题似乎更可能与警告有关,因为无法识别编解码器,我希望默认情况下映射所有流
我期望或希望得到一个答案,即忽略警告并映射未识别的流,而不试图理解它们
感谢您的帮助。最终解决了这个问题。。。主要是
ffmpeg \
-y -f concat -i test.txt -c copy \
-map 0:v -map 0:a -map 0:3 \
-copy_unknown -tag:2 gpmd \
test2.mp4
似乎ffmpeg将理解遥测数据,如果它被标记为gpmd。。。然而,无论我做什么,还有另外两条流都无法映射。似乎ffmpeg必须能够解析它,并且由于某种原因不能简单地复制位。如果您标记它,它可以理解
gpmd
流,但其他一个它不能理解(fsck
我认为…似乎主要是针对硬件,所以无论如何都不重要)。timecode流被标记为tmcd
,但似乎GoPro没有遵循此处的标准,因此无法按1:1映射。。。上面的代码产生了看起来最稳定的结果,至少在我尝试过的设置中是这样。发布后有什么更新吗?使用此选项可以复制tmcd流,但处理程序名称错误。有没有办法改变这一点?我尝试过用-metadata:s:d:1 handler\u name='GoPro-TCD'或-metadata:s:d:1 handler='GoPro-TCD'之类的东西手动设置它,但没有任何设置success@Andrew嗨,你没有任何更新或成功的优化?从那以后就没有真正尝试过。。。这是我最成功的一次