Как извлечь h264 и элементарный поток aac из mp4 / mkv с помощью gstreamer
Я не смог найти стабильный и сбалансированный подход для демультиплексирования A/V-потока, а затем сохранить его как воспроизводимое видео в формате h264 в приложении B.
Ну, я попробовал следующие шаги для сжатия файла.
gst-launch-0.10 filesrc location = h264_720p_mp_3.1_3mbps_aac_shrinkage.mkv! matroskademux! местонахождение файла = abc.h264
-rw-rw-r-- 1 XXX XXX 28697147 1 ноября 10:04 h264_720p_mp_3.1_3mbps_aac_shrinkage.mkv
-rw-rw-r-- 1 XXX XXX 27581733 1 ноября 10:19 abc.h264
файл был сохранен с "не таким меньшим" размером, но не может быть воспроизведен, однако формат родительского контейнера можно воспроизвести с помощью следующего конвейера
gst-launch-0.10 filesrc location=h264_720p_mp_3.1_3mbps_aac_shrinkage.mkv! matroskademux! h264parse! ffdec_h264! ffmpegcolorspace! ximagesink
Вопросы
Q1. Какими методами можно извлечь видео ES и Audio ES из разных контейнеров с помощью gstreamer?
Q2. Q1, используя другие методы, которые всегда работают и / или просты?
1 ответ
В общем, вам нужно указать, какой пэд вас интересует. В противном случае вы не сможете отличить аудио ES от видео ES.
На моей машине работает следующее:
gst-launch-1.0 filesrc location=example.mkv ! queue ! matroskademux name=dmux dmux.video_0 ! queue ! filesink location=vid.265 dmux.audio_0 ! queue ! filesink location=aud.aac
У меня работает выполнение всех команд. Он создает файл потока байтов h.264 из видеофайла mp4. Вновь созданный файл также воспроизводится с использованием ffplay или gst-play-1.0
gst-launch-1.0 filesrc location =. / VID-20190903-WA0012.mp4! qtdemux name = pnkj_demux! h264parse! видео /x-h264, формат потока = поток байтов! расположение файловой ссылки =. / VID-20190903-WA0012_1.264
gst-launch-1.0 -e filesrc location =. / VID-20190903-WA0012.mp4! qtdemux name = pnkj_demux! h264parse! видео /x-h264, формат потока = поток байтов! расположение файловой ссылки =. / VID-20190903-WA0012_2.264
gst-launch-1.0 filesrc location =. / VID-20190903-WA0012.mp4! qtdemux name = pnkj_demux pnkj_demux.video_0! h264parse! видео /x-h264, формат потока = поток байтов! расположение файловой ссылки =. / VID-20190903-WA0012_3.264
gst-launch-1.0 -e filesrc location =. / VID-20190903-WA0012.mp4! qtdemux name = pnkj_demux pnkj_demux.video_0! h264parse! видео /x-h264, формат потока = поток байтов! расположение файловой ссылки =./VID-20190903-WA0012_4.264