Я работаю над последствиями сетевых потерь при передаче видео. Чтобы смоделировать потери в сети, я использую простую программу, которая отбрасывает случайные пакеты RTP из выходных данных кодирования H.264 RTP.
Я использую Joint Model (JM) 14.2 для кодирования видео. Однако я не использую формат AnnexB в качестве вывода, вместо этого я выбираю вывод в виде пакетов RTP. Выходные данные JM формируются в виде пакетов RTP с заголовками RTP и полезной нагрузкой в виде последовательности. После этого часть RTP-пакетов отбрасывается с помощью простой программы. Затем я могу декодировать выходной битовый поток, используя также JM и его методы маскировки ошибок.
Основной целью этого процесса является оценка различий, создаваемых сетевыми потерями, в восприятии качества видео человеком. Для измерения воспринимаемого качества отображаемое видео должно быть в декодированном виде (т. е. в полном разрешении) или оно может декодироваться на стороне приемника. Пакеты RTP, созданные кодировщиком JM, не могут быть декодированы без установленного программного обеспечения JM. Однако при правильном заголовке (или контейнере) большинство видеоплееров способны декодировать битовый поток. Итак, моя цель в этом вопросе — инкапсулировать битовый поток моего закодированного RTP-пакета в общий контейнер, такой как AVI или MP4, чтобы мой контент мог быть декодирован на компьютере-получателе.
Формат закодированного битового потока в пакетной форме RTP выглядит следующим образом:
----------------------------------------------------------------------
| RTP Header #1 | RTP Payload #1 | RTP Header #2 | RTP Payload #2 |...
----------------------------------------------------------------------
Чтобы найти качество видео, я хочу провести субъективный тест с этими битовыми потоками. Я могу провести эти тесты, используя декодированные данные в полном разрешении, в то время как очень неудобно использовать краудсорсинг этого субъективного теста с ГБ видеоданных в Интернете. Итак, я хочу мультиплексировать эти битовые потоки в контейнер (например, AVI) с помощью FFMPEG. Я пытался декодировать эти битовые потоки с помощью FFMPEG и FFPLAY; однако оба они не сработали. Я также попробовал следующую команду, и она тоже не сработала.
ffmpeg - f h264 -i <raw_rtpDropped.264> -vcodec copy -r 25 out.avi
Какой формат или мультиплексор следует использовать? Нужно ли конвертировать эти файлы в какой-либо другой формат?