Как мне взять поток FMS h264 и обернуть его в контейнер?

892
Srekel

У меня есть FMS (Flash Media Server 4), который записывает видеопотоки в файлы .f4v. Насколько я вижу и понимаю, он только записывает видео / аудио данные без контейнера вообще, хотя я могу ошибаться. URL содержит «mp4:», так что я думаю, что это может быть контейнер mpeg-4? Но когда я открываю его в VLC, он не воспроизводится и не показывает информацию о кодеке.

Поэтому я думаю, что мне нужно обернуть его в контейнер, и мне нужно, чтобы он был максимально быстрым и не влиял на реальные данные (т.е. я не хочу перекодировать его). Я посмотрел, используя ffmpeg и mkvtoolnix, но mkvtoolnix вообще не может обработать данные (выдает ошибку), и мне удалось преобразовать их в новый файл с помощью ffmpeg, но в результате получается файл большего размера, имеющий странный 30 секундная пауза в начале.

Я уверен, что есть простой способ сделать это, но я еще не нашел его.

Вот вывод из ffprobe.exe:

C:\Program Files (x86)\ffmpeg\bin>ffprobe.exe time.f4v ffprobe version N-31627-g9c2651a, Copyright (c) 2007-2011 the FFmpeg developers built on Jul 23 2011 15:02:13 with gcc 4.6.1 configuration: --enable-gpl --enable-version3 --enable-memalign-hack --enable-runtime-cpudetect -- enable-avisynth --enable-bzlib --enable-frei0r --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libfreetype --enable-libgsm --enable-libmp3lame --enable-libopenjpeg --enable-librtmp --en able-libschroedinger --enable-libspeex --enable-libtheora --enable-libvorbis --enable-libvpx --enabl e-libx264 --enable-libxavs --enable-libxvid --enable-zlib libavutil 51. 11. 0 / 51. 11. 0 libavcodec 53. 9. 0 / 53. 9. 0 libavformat 53. 6. 0 / 53. 6. 0 libavdevice 53. 2. 0 / 53. 2. 0 libavfilter 2. 27. 3 / 2. 27. 3 libswscale 2. 0. 0 / 2. 0. 0 libpostproc 51. 2. 0 / 51. 2. 0 [mov,mp4,m4a,3gp,3g2,mj2 @ 003BA280] multiple edit list entries, a/v desync might occur, patch welco me [mov,mp4,m4a,3gp,3g2,mj2 @ 003BA280] multiple edit list entries, a/v desync might occur, patch welco me [mov,mp4,m4a,3gp,3g2,mj2 @ 003BA280] multiple edit list entries, a/v desync might occur, patch welco me [mov,mp4,m4a,3gp,3g2,mj2 @ 003BA280] max_analyze_duration 5000000 reached at 5018000 Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'time.f4v': Metadata: major_brand : f4v minor_version : 0 compatible_brands: isommp42m4v creation_time : 2016-11-13 05:20:19 Duration: 00:01:15.74, start: 0.000000, bitrate: 686 kb/s Stream #0.0(eng): Video: h264 (Baseline), yuv420p, 1280x720 [PAR 1:1 DAR 16:9], PAR 3:4 DAR 4:3, 59.94 tbr, 1k tbn, 119.88 tbc Metadata: creation_time : 2016-11-13 05:20:19 Stream #0.1(eng): Audio: mp3, 22050 Hz, mono, s16, 48 kb/s Metadata: creation_time : 2016-11-13 05:20:19 Stream #0.2(eng): Data: amf0 / 0x30666D61 Metadata: creation_time : 2016-11-13 05:20:19 Unsupported codec with id 0 for input stream 2 

Ошибка, которую я получаю от mkvtoolnix: Ошибка: Quicktime / MP4 reader: постоянный размер выборки и переменная длительность пока не поддерживаются. Свяжитесь с автором, если у вас есть такой образец файла.

2

1 ответ на вопрос

0
Srekel

После выяснения правильных ключевых слов для размещения в Google, я нашел решение:

C: \ Program Files (x86) \ ffmpeg \ bin> ffmpeg -i .f4v -acodec copy -vcodec copy -y .mkv

Мой выходной файл довольно хреновый, но я думаю, что это может быть связано с моим входным файлом или с тем, как ffmpeg читает этот формат.

Похожие вопросы