1

Я хочу конвертировать видео в формат, который моя камера читает с помощью 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

То, что я сразу заметил, было

  1. ID_VIDEO_ASPECT анализа mplayer. Оригинальное видео имеет 0.0000 а поддельное - 1.3889 .
  2. оригинал имеет 600 tbn, 600 tbc а подделка имеет 15 tbn, 15 tbc при анализе ffmpeg.
  3. у фальшивки есть [SAR 25:24 DAR 25:18] где у оригинала ничего нет. Это, вероятно, соотношение сторон видео.
  4. И конечно разные комментарии и время создания и прочее. Я надеюсь, что они не важны. Я изменил NIKON DIGITAL CAMERA на что-то другое в оригинальном видео с помощью шестнадцатеричного редактора, и видео все еще воспроизводилось.

Есть идеи, как улучшить мое фальшивое видео?

Обновить

Еще одно отличие. Я получаю следующее с помощью команды file. :-(

$ 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

Новый файл был немного меньше. Сравнивая их с шестнадцатеричным редактором, я увидел, что у них разные магические числа. Поэтому я думаю, что это проблема с контейнером, а не проблема с кодеком. Камера Nikon Coolpix. Может быть, я должен спросить разработчиков ffmpeg, поддерживается ли этот формат контейнера. По крайней мере, он доступен для чтения и воспроизведения mplayer и ffmpeg.

0