我想将视频转换为我的相机可以用 ffmpeg 读取的格式。
我有一些相机拍摄的样本视频,并用
mplayer -frames 0 -identify DSCN0001.mov
与
ffprobe DSCN0001.mov
然后我尝试了文档中能找到的所有方法来制作相同类型的视频。我的命令是
ffmpeg -i movie.flv -vcodec mjpeg -b:v 2128296 -pix_fmt yuvj422p -r 15 -acodec pcm_u8 -ac 1 -ar 7875 -vf scale=320:240 DSCN0002.mov
但当我尝试用相机播放视频时,相机告诉我该文件不包含图像数据(翻译)。
这是与 ffprobe 分析的差异
1c1
< Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'DSCN0001.mov':
---
> Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'DSCN0002.mov':
3,7c3,8
< creation_time : 2011-10-08 17:17:30
< comment : NIKON DIGITAL CAMERA
< comment-eng : NIKON DIGITAL CAMERA
< Duration: 00:00:03.40, start: 0.000000, bitrate: 1977 kb/s
< Stream #0:0(eng): Video: mjpeg (jpeg / 0x6765706A), yuvj422p, 320x240, 1879 kb/s, 15 fps, 15 tbr, 600 tbn, 600 tbc
---
> major_brand : qt
> minor_version : 512
> compatible_brands: qt
> encoder : Lavf53.32.100
> Duration: 00:05:09.06, start: 0.000000, bitrate: 2196 kb/s
> Stream #0:0(eng): Video: mjpeg (jpeg / 0x6765706A), yuvj422p, 320x240 [SAR 25:24 DAR 25:18], 2131 kb/s, 15 fps, 15 tbr, 15 tbn, 15 tbc
9d9
< creation_time : 2011-10-08 17:17:30
10a11
> DataHandler
13,14c14,15
< creation_time : 2011-10-08 17:17:30
< handler_name :
---
> handler_name :
> DataHandler
以及来自 mplayer 的分析(我剪掉了相同的线条,以使这个粘贴更小)。
1,16c1,19
< Playing DSCN0001.mov.
< VIDEO: [jpeg] 320x240 24bpp 15.000 fps 2053.4 kbps (250.7 kbyte/s)
< creation_time: 2011-10-08 17:14:54
< ID_CLIP_INFO_NAME0=creation_time
< ID_CLIP_INFO_VALUE0=2011-10-08 17:14:54
< comment: NIKON DIGITAL CAMERA
< ID_CLIP_INFO_NAME1=comment
< ID_CLIP_INFO_VALUE1=NIKON DIGITAL CAMERA
< comment-eng: NIKON DIGITAL CAMERA
< ID_CLIP_INFO_NAME2=comment-eng
< ID_CLIP_INFO_VALUE2=NIKON DIGITAL CAMERA
< ID_CLIP_INFO_N=3
< ID_FILENAME=DSCN0001.mov
< ID_VIDEO_BITRATE=2053400
< ID_VIDEO_ASPECT=0.0000
< ID_LENGTH=91.00
---
> Playing DSCN0002.mov.
> VIDEO: [jpeg] 320x240 24bpp 15.000 fps 1953.5 kbps (238.5 kbyte/s)
> major_brand: qt
> ID_CLIP_INFO_NAME0=major_brand
> ID_CLIP_INFO_VALUE0=qt
> minor_version: 512
> ID_CLIP_INFO_NAME1=minor_version
> ID_CLIP_INFO_VALUE1=512
> compatible_brands: qt
> ID_CLIP_INFO_NAME2=compatible_brands
> ID_CLIP_INFO_VALUE2=qt
> encoder: Lavf53.32.100
> ID_CLIP_INFO_NAME3=encoder
> ID_CLIP_INFO_VALUE3=Lavf53.32.100
> ID_CLIP_INFO_N=4
> ID_FILENAME=DSCN0002.mov
> ID_VIDEO_BITRATE=1953464
> ID_VIDEO_ASPECT=1.3889
> ID_LENGTH=309.07
我立即注意到的是
ID_VIDEO_ASPECT
mplayer 分析。原版视频有,0.0000
假视频有1.3889
。- 原版
600 tbn, 600 tbc
与假版15 tbn, 15 tbc
在ffmpeg上的分析。 - 假货有
[SAR 25:24 DAR 25:18]
,正品没有。这可能是视频的长宽比。 - 当然还有不同的评论和创建时间等等。我希望它们并不重要。我用十六进制编辑器将原始视频中的 NIKON DIGITAL CAMERA 更改为其他内容,视频仍可播放。
对于如何改进我的虚假视频,您有什么想法吗?
更新
另一个不同点。我使用文件命令得到以下结果。:-(
$ file DSCN0001.mov DSCN0002.mov
DSCN0001.mov: data
DSCN0002.mov: ISO Media, Apple QuickTime movie
第一个视频是原版的。第二个是我用 ffmpeg 制作的。
更新 2
我试图将输入流从原始文件复制到新文件,在我看来,新文件具有相同的容器(mov)。
ffmpeg -i DSCN0001.mov -c:v copy -c:a copy DSCN0005.mov
文件告诉我这个复制的视频
DSCN0005.mov: ISO Media, Apple QuickTime movie
新文件稍微小一点。将它们与我看到的十六进制编辑器进行比较,它们有不同的魔数。所以我认为这是容器问题,而不是编解码器问题。相机是尼康 Coolpix。也许我应该问 ffmpeg 开发人员是否支持这种容器格式。至少它是可读的,并且可由 mplayer 和 ffmpeg 播放。