2016-10-26 88 views
0

我试图从大的未压缩的y4m视频中获取小序列(64帧)。使用ffmpeg从未压缩的y4m视频中提取帧

的输入被称为来自Netflix的测试序列,我已经从有:https://media.xiph.org/video/derf/

由于视频是使用副本作为编解码器应该只是工作压缩。 这是我的尝试:

./bin/ffmpeg -ss 2.0 -i Netflix_TunnelFlag_4096x2160_60fps_10bit_420.y4m -vframes 64 -codec copy -y /tmp/test.y4m 

但我得到这个错误:

[yuv4mpegpipe @ 0x35f3320] ERROR: Codec not supported. 
Could not write header for output file #0 (incorrect codec parameters ?): Invalid data found when processing input 

我不知道有什么可以去错在这样简单的操作,我认为FFmpeg的应该只是复制了64个I - 框架,并把它们放在一个新的容器中。

我也试图改变容器并且只有工作是使用YUV容器中的事情,但我想避免的是,由于这不是一个容器:)

+1

删除'-codec copy'。 – LordNeckbeard

+0

谢谢!那么复制操作又有什么不同呢? – igon

回答

1

删除-codec copy,并且只使用默认值y4m(无论如何,它是rawvideo的原始视频)。

可以改进错误“Codec not supported”消息以提供更多信息。 yuv4mpegpipe复用器,以及其他一些原始视频相关复用器,默认情况下将使用“wrapped_avframe”伪编码器,其中"avoids a costly memcpy of every single video frame"与使用旧API进行比较。有关更多信息,请参阅Deprecating AVPicture

tl; dr:更快。