Я скомпилировал FFmpeg (libffmpeg.so) на Android. Теперь мне нужно создать приложение вроде RockPlayer или использовать существующую мультимедийную среду Android для вызова FFmpeg.
У вас есть шаги / процедуры / код / пример по интеграции FFmpeg в Android / StageFright?
Не могли бы вы подсказать мне, как как я могу использовать эту библиотеку для воспроизведения мультимедиа?
У меня есть требование, когда у меня уже есть транспортные потоки аудио и видео, которые мне нужно передать в FFmpeg и получить их декодирование / рендеринг.
@Таблица(...)
открытый класс MasterItem реализует java.io.Serializable {private Set У меня есть два компонента сущностей, определенные следующим образом (несвязанные элементы удалены): CriticalItems определяется следующим образом: И в мой код DAO - у меня есть следующие методы: Когда я загружаю MasterItem, он загружается правильно, а также загружает набор CriticalItems с данными, как указано. Затем я отправляю эти данные в свой пользовательский интерфейс и получаю обратно обновленную копию, которую затем пытаюсь сохранить. Пользователь обновляет поля в объекте MasterItem, но не касается набора CriticalItems или чего-либо в нем - он остается неизменным. Когда вызывается мой метод save (), Hibernate настаивает на отправке обновлений SQL для каждого элемента в наборе of CriticalItems, хотя ни один из них никак не изменился. Покопавшись, вот ' я думаю, что происходит. Когда я выполняю saveOrUpdate (), Hibernate видит, что мой объект MasterItem находится в отсоединенном состоянии, поэтому он пытается перезагрузить его с диска. Однако при этом похоже, что он использует подготовленный оператор (который был автоматически создан Hibernate при запуске), и этот подготовленный оператор не пытается присоединиться к данным CriticalItems. Итак, Hibernate имеет мой обновленный MasterItem объект с полным набором CriticalItems, но использует MasterItem без коллекций в качестве своего объекта "previousState". Таким образом, все CriticalItems обновляются через SQL (не вставляются, что само по себе интересно). Сделал ли я что-то в своих аннотациях, что вызвало такое поведение? Я знаю, что могу использовать перехватчик, чтобы узнать, действительно ли элемент изменился, или изменил флаг dirty, чтобы переопределить Hibernate '
Судя по комментариям, я думаю, что понимаю разницу между saveOrUpdate () и merge (). Я понимаю, что saveOrUpdate () во всех случаях приведет либо к SQL INSERT, либо к SQL UPDATE, и это слияние теоретически будет выдавать обновления только в том случае, если объект изменился из своего постоянного состояния, но чтобы определить это, Hibernate сначала нужно перезагрузить объект с помощью SQL SELECT. Итак, я подумал, что могу просто вернуться в свой код и изменить saveOrUpdate () на merge (), и это сработает, но это было не совсем так. ] Когда я использовал merge (), я получал , но он работал нормально, если я возвращался к saveOrUpdate (). Я наконец выяснил, почему - я не включил @Entity
@Table(...)
public class MasterItem implements java.io.Serializable {
private Set<CriticalItems> criticalItemses = new HashSet<CriticalItems>(0);
@OneToMany(fetch = FetchType.EAGER, mappedBy = "masterItem", orphanRemoval = true,
cascade = {javax.persistence.CascadeType.DETACH})
@Cascade({CascadeType.SAVE_UPDATE, CascadeType.DELETE})
public Set<CriticalItems> getCriticalItemses() {
return this.criticalItemses;
}
}
@Entity
@Table(...)
public class CriticalItems implements java.io.Serializable {
private MasterItem masterItem;
@ManyToOne(fetch = FetchType.LAZY, optional = false,
cascade = {javax.persistence.CascadeType.DETACH})
@Cascade({CascadeType.SAVE_UPDATE})
@JoinColumn(name = "mi_item_id", nullable = false)
public MasterItem getMasterItem() {
return this.masterItem;
}
}
public MasterItem load(int id) {
MasterItem results = (MasterItem) getSessionFactory().getCurrentSession()
.get("com.xxx.MasterItem", id);
}
public void save(MasterItem master) {
// master has been changed by the UI since it
getSessionFactory().getCurrentSession().saveOrUpdate(master);
}
org.springframework.orm.hibernate3.HibernateSystemException: could not initialize proxy - no Session; nested exception is org.hibernate.LazyInitializationException: could not initialize proxy - no Session
CascadeType.MERGE
в свою аннотацию @Cascade
(тьфу). Как только я это исправил, исключение исчезло.