Скопированный файл FLV с FFMPEG не откроется ни в одной программе, кроме VLC
2028
danronmoon
Я пытаюсь добавить оверлей к FLV-файлу, полученному с YouTube. Входной файл имеет размер 4,4 МБ и может быть воспроизведен QuickTime, поэтому он не имеет никаких проблем.
Теперь output.flv не воспроизводится QuickTime, и Flash жалуется, что аудиокодек не поддерживается. Единственная программа, способная успешно его воспроизвести, это VLC. Размер файла такой же, как у input.flv. Что может быть причиной этого, и какие варианты могут создать воспроизводимую копию?
ОБНОВИТЬ
Усеченный вывод, полученный от использования различных кодеров:
Получение информации о любом из этих файлов дает мне много следующих типов ошибок (где n - возрастающее целое число):
- Stream discovered after head already parsed - header damaged - max_analyze_duration 5000000 reached at 5014000 microseconds - Could not find codec parameters for stream n (Video: mpeg4, yuv420p): unspecified size Consider increasing the value for the 'analyzeduration' and 'probesize' options - decoding for stream n failed
Я только что обновил ffmpeg и его зависимости через MacPorts, и мне все еще не повезло. Это происходит для каждого FLV-файла, который я пробовал с YouTube и других источников.
1 ответ на вопрос
5
slhck
Флэш-видео
В соответствии со спецификацией, Flash Video изначально поддерживает только видео VP-6 и H.264, а также несколько других. Это означает, что вам придется придерживаться flvкодировщика FFmpeg или переключиться на H.264 с libx264кодировщиком - см. Руководство по кодированию x264 для вариантов, которые вы можете использовать:
ffmpeg -i input.flv … -c:v libx264 output.flv
Поэтому вы не можете использовать кодеры MPEG-4 Part 2 mpeg4или libxvid, поскольку они поддерживаются только в проигрывателях на основе libavformat, которые включают в себя что угодно, от телефонов Android до VLC, но, конечно, не QuickTime.
QuickTime
Что касается QuickTime, он официально не поддерживает FLV . К сожалению, вполне разумно предположить, что QuickTime не может воспроизводить все файлы. Установка Perian (теперь EOL) должна заставить его воспроизводить некоторые файлы FLV, но не все.
Как и предсказывает спецификация, у меня есть только возможность воспроизводить FLV-файлы с помощью flvкодера, как он ffmpegвызывается, то есть кодека Sorenson Spark H.263 и libx264кодера.
аудио
FLV поддерживает как MP3, так и AAC, поэтому я не знаю, что случилось с Flash, который жалуется на неверный кодек. Возможно, вы захотите попробовать кодировщик AAC:
`-c: v mpeg4` дает мне похожие результаты. `-c: v libxvid` требует более реалистичного времени для обработки, но все равно не выдает воспроизводимый результат. Даже прямая команда копирования `ffmpeg -i input.flv -c: v copy -c: копия output.flv` без фильтров, к сожалению, не работает.
danronmoon 11 лет назад
0
Пожалуйста, не обрезайте вывод других команд. Если текст тела вопроса слишком длинный, вставьте его [в область монтажа] (http://paste.ubuntu.com/) - это облегчит выявление проблем. Возможно, у вас есть образец? Файл воспроизводится, скажем, в VLC?
slhck 11 лет назад
0
Усеченный вывод для последних 3 был таким же, как первый полный вывод вверху (набор метаданных для исходного файла). ОК, я должен признать, что моя оригинальная команда (так же как output3.flv, спасибо за это) работает с VLC, но не с чем-либо еще (Flash говорит, что аудиокодек не поддерживается). Это хорошая новость, но я думаю, что разумно ожидать воспроизведения в других видеоплеерах, поэтому я переписываю вопрос.
danronmoon 11 лет назад
0
Кажется немного хитрым. С QuickTime вам придется использовать официально поддерживаемые видеокодеки FLV, по крайней мере, в соответствии с моими тестами. Однако пока не удалось найти видеопоток MPEG-4 Part 2 в FLV-контейнере с YouTube - кажется, я получаю только H.264 или Sorenson H.263-кодированные.
slhck 11 лет назад
0
`-c: aac` вызывает зависание ffmpeg, заставляя меня закрыть и открыть новый терминал. `-c: mp3` по-прежнему создает файл, который невозможно воспроизвести с помощью QT. Идентификатор YouTube, на котором основан этот вопрос - rNp-cj5dEA8. Если бы вы могли дать мне идентификатор YT и соответствующую команду, которая работает для вас (оригинал и копия, воспроизводимая QT), я мог бы попробовать его и посмотреть, работает ли он на моей машине. Кстати, какой тип сборки ffmpeg у вас есть? Начиная думать, мне, возможно, придется понизить или переустановить.
danronmoon 11 лет назад
0
Для идентификатора видео, которое вы мне дали, у меня есть только два возможных варианта FLV (в зависимости от того, что показывает youtube-dl), [один с видео H.264 внутри, а другой с Sorenson H.263] (http: // paste. ubuntu.com/5859174/). Оба играбельны в QuickTime. Я не получаю версию MPEG-4 - возможно, вы используете какой-то другой сервис загрузки YouTube, который выполняет транскодирование? Я только что попробовал "обычный" `ffmpeg -i input.flv output.flv`, и он воспроизводится в QuickTime. И на последней `ffmpeg`, скомпилированной из Git, и на 1.2.1.
slhck 11 лет назад
0
Я использовал MacTubes для тестирования # 5. Я только что установил youtube-dl и скачал # 5, и я заметил, что размер файла и разрешение отличаются от того, который я скачал с MacTubes, и что видеокодер - flv1, такой же, как у вас. Еще более ошеломляющим является тот факт, что я не могу загрузить файл, загруженный с youtube-dl, для воспроизведения в QT. Поэтому я думаю, что проблема становится слишком локализованной, и со всеми несоответствиями, с которыми я столкнулся, я думаю, что разумный путь - петь похвалы VLC и сосредоточиться на других задачах. Спасибо за вашу помощь.
danronmoon 11 лет назад
0
Конечно. Пинг мне в чате или здесь, если вам нужно что-то перепроверить. Мне жаль, что я не мог вам больше помочь, но здесь, похоже, есть много факторов.
slhck 11 лет назад
0