Форум программистов, компьютерный форум CyberForum.ru

Ffmpeg выдает moov atom not found если прервать процесс кодирования - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Алгоритм обхода в игре "точки" http://www.cyberforum.ru/cpp/thread1657196.html
пишу игру "точки" на с++ в VS form, по клику заполняю два вектора с точками, vector<MyPoint> One; vector<MyPoint> Two; мне нужно найти все области длины одной клетки и проверить если там точка из другого вектора точек, не могу придумать алгоритм обхода, прощу помочь как можно скорее!! https://ru.wikipedia.org/wiki/%D0%A2%D0%BE%D1%87%D0%BA%D0%B8_(%D0%B8%D0%B3%D1%80%D0%B0) пробовал построение...
C++ Определение версии операционной системы Помогите пожалуйста! Написать программу которая определяет версию операционной системы http://www.cyberforum.ru/cpp/thread1657032.html
Марафон Безопасности C++
Суть марафона заключается в том, что хотелось бы увидеть как можно больше exe файлов на языке C++, в котором будет одно текстовое поле, в которое надо ввести ваш ключ/пароль и появится ваше кодовое слово (что-то типо получаем полный софт, введя ключ к программе), после чего вы выкладываете данную программу без исходников сюда, все ее анализируют и находят пароль к данной программе, после чего...
C++ Алгоритм обработки фотографий с "Google улицы"
есть ли в открытом доступе алгоритм обработки фотографий с google улицы
C++ Задания по C++ http://www.cyberforum.ru/cpp/thread1655759.html
Ребят помогите сделать задания: 1. Создайте структуру с именем time. Три ее поля, имеющие тип int, будут называться hours, minutes и seconds. Напишите программу которая просит пользователя ввести время, в формате часы, минуты и секунды.Программа должна хранить время в структурной переменной типа time и выводить количество секунд в веденном времени. 2. Создайте перечисление с именем pets и...
C++ Алгоритм обработки фотографий камеры 360 градусов Ребят есть ли какой код поясняющий принцип обработки этой камерой фотографий и предствлении их в формате 360 градусов или может кто знает на каком языке он может быть написан ( пишу в с++ потому что кажется что на ней) приму любую информацию подробнее

Показать сообщение отдельно
castaway
Эксперт С++
4879 / 3015 / 370
Регистрация: 10.11.2010
Сообщений: 11,076
Записей в блоге: 10
Завершенные тесты: 1
09.02.2016, 11:11     Ffmpeg выдает moov atom not found если прервать процесс кодирования
Цитата Сообщение от vxg Посмотреть сообщение
может у вас что то выйдет?
Может быть. Я подумаю.

Добавлено через 20 минут
vxg, как я и предполагал, тут нужен другой контейнер.
Это работает так: ffmpeg -i in.mp4 -f segment -segment_time 10 -segment_format mpegts out%03d.mp4
Осталось опробовать это в программе... но не сегодня.

Добавлено через 12 часов 12 минут
Пробуйте такой вариант.
Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
#include <windows.h>
#include <iostream>
 
extern "C" {
 #define __STDC_CONSTANT_MACROS
 #include <libavutil/opt.h>
 #include <libavutil/time.h>
 #include <libavutil/imgutils.h>
 #include <libavformat/avformat.h>
 #include <libavcodec/avcodec.h>
}
 
//#define CONSOLE_CTRL_HANDLER
 
#ifdef CONSOLE_CTRL_HANDLER
 
static BOOL g_bStop = FALSE;
static BOOL g_bCanExit = FALSE;
 
static BOOL WINAPI ctrl_handler( DWORD fdwCtrlType ) {
    switch ( fdwCtrlType ) {
        case CTRL_C_EVENT:
        case CTRL_CLOSE_EVENT:
        case CTRL_BREAK_EVENT:
        case CTRL_LOGOFF_EVENT:
        case CTRL_SHUTDOWN_EVENT:
            g_bStop = TRUE;
            while ( !g_bCanExit ) ::Sleep( 100 );
            return TRUE;
    }
    return FALSE;
}
#endif
 
int main()
{
#ifdef CONSOLE_CTRL_HANDLER
    ::SetConsoleCtrlHandler( ctrl_handler, TRUE );
#endif
 
    av_register_all();
 
    const char * filename = "out.ts";
 
    AVFormatContext * p_fmt_ctx;
    avformat_alloc_output_context2( &p_fmt_ctx, NULL, NULL, filename );
    if ( !p_fmt_ctx ) {
        std::cerr << "Could not deduce output format from file extension" << std::endl;
    } else {
        enum AVCodecID codec_id = AV_CODEC_ID_H264;
        AVCodec * p_codec = avcodec_find_encoder( codec_id );
        if ( !p_codec ) {
            std::cerr << "Could not find encoder for " << avcodec_get_name( codec_id ) << std::endl;
        } else {
            AVStream * p_stream = avformat_new_stream( p_fmt_ctx, p_codec );
            if ( !p_stream ) {
                std::cerr << "Could not allocate stream" << std::endl;
            } else {
                p_stream->id = p_fmt_ctx->nb_streams - 1;
 
                AVCodecContext * c = p_stream->codec;
                av_opt_set( c->priv_data, "preset", "slow", 0 );
 
                c->codec_id = codec_id;
 
                c->bit_rate = 1024 * 128;
                c->width    = 352;
                c->height   = 288;
 
                p_stream->time_base = (AVRational){ 1, 25 };
                c->time_base = p_stream->time_base;
 
                c->gop_size = 12; /* emit one intra frame every twelve frames at most */
                c->pix_fmt = AV_PIX_FMT_YUV420P;
 
                av_dump_format( p_fmt_ctx, 0, filename, 1 );
 
                /// open file
                avio_open2( &p_fmt_ctx->pb, filename, AVIO_FLAG_WRITE, NULL, NULL );
 
                /// write header
                if ( avformat_write_header( p_fmt_ctx, NULL ) != 0 ) {
                    std::cerr << "Could not write header" << std::endl;
                }
 
                /// open codec
                if ( avcodec_open2( c, p_codec, 0 ) >= 0 ) {
                    AVFrame * p_frame = av_frame_alloc();
                    if ( p_frame ) {
                        p_frame->format = c->pix_fmt;
                        p_frame->width  = c->width;
                        p_frame->height = c->height;
                        if ( av_image_alloc( p_frame->data, p_frame->linesize, c->width, c->height, c->pix_fmt, 32 ) >= 0 ) {
                            AVPacket pkt;
 
                            int got_output;
                            for ( int i = 0; /*i < 25 * 30*/
#ifdef CONSOLE_CTRL_HANDLER
                                    && !g_bStop
#endif
                                    ; ++i )
                            {
                                av_init_packet( &pkt );
                                pkt.data = NULL; // packet data will be allocated by the encoder
                                pkt.size = 0;
 
                                /* Y */
                                for ( int y = 0; y < c->height; ++y ) {
                                    for ( int x = 0; x < c->width; ++x ) {
                                        p_frame->data[0][y * p_frame->linesize[0] + x] = x + y + i * 3;
                                    }
                                }
 
                                /* Cb and Cr */
                                for ( int y = 0; y < c->height / 2; ++y ) {
                                    for ( int x = 0; x < c->width / 2; ++x ) {
                                        p_frame->data[1][y * p_frame->linesize[1] + x] = 128 + y + i * 2;
                                        p_frame->data[2][y * p_frame->linesize[2] + x] =  64 + x + i * 5;
                                    }
                                }
 
                                p_frame->pts = i * 25 * 30;//21;
                                //p_frame->pts = av_rescale_q( i, (AVRational){ 1, 25 }, (AVRational){ 1, 25 * 25 * 30 } );
 
                                int ret = avcodec_encode_video2( c, &pkt, p_frame, &got_output );
                                if ( ret >= 0 && got_output ) {
                                    av_interleaved_write_frame( p_fmt_ctx, &pkt );
                                    avio_flush( p_fmt_ctx->pb );
                                    av_packet_unref( &pkt );
                                }
                            }
 
                            /* get the delayed frames */
                            do {
                                int ret = avcodec_encode_video2( c, &pkt, NULL, &got_output );
                                if ( ret >= 0 && got_output ) {
                                    av_interleaved_write_frame( p_fmt_ctx, &pkt );
                                    avio_flush( p_fmt_ctx->pb );
                                    av_packet_unref( &pkt );
                                }
                            } while ( got_output
#ifdef CONSOLE_CTRL_HANDLER
                                && !g_bStop
#endif
                                );
 
                            av_freep( &p_frame->data[0] );
                        }
                        av_frame_free( &p_frame );
                    }
                    avcodec_close( c );
                }
 
                /// write trailer etc...
                av_write_trailer( p_fmt_ctx );
                avio_close( p_fmt_ctx->pb );
                avcodec_close( c );
            }
        }
    }
    avformat_free_context( p_fmt_ctx );
 
#ifdef CONSOLE_CTRL_HANDLER
    g_bCanExit = TRUE;
    ::SetConsoleCtrlHandler( ctrl_handler, FALSE );
#endif
}
Суть - другой контейнер - транспортный поток.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru